From 6242cd4e680d1416ac7392f47493da56611fded6 Mon Sep 17 00:00:00 2001 From: Ramkumar Rajanbabu Date: Tue, 23 Jun 2020 19:19:51 -0700 Subject: [PATCH 1/3] Added virtualenv --- Scripts/api-ms-win-core-console-l1-1-0.dll | Bin 0 -> 19208 bytes Scripts/api-ms-win-core-datetime-l1-1-0.dll | Bin 0 -> 18696 bytes Scripts/api-ms-win-core-debug-l1-1-0.dll | Bin 0 -> 18696 bytes .../api-ms-win-core-errorhandling-l1-1-0.dll | Bin 0 -> 18696 bytes Scripts/api-ms-win-core-file-l1-1-0.dll | Bin 0 -> 22280 bytes Scripts/api-ms-win-core-file-l1-2-0.dll | Bin 0 -> 18696 bytes Scripts/api-ms-win-core-file-l2-1-0.dll | Bin 0 -> 18696 bytes Scripts/api-ms-win-core-handle-l1-1-0.dll | Bin 0 -> 18696 bytes Scripts/api-ms-win-core-heap-l1-1-0.dll | Bin 0 -> 19208 bytes .../api-ms-win-core-interlocked-l1-1-0.dll | Bin 0 -> 18696 bytes .../api-ms-win-core-libraryloader-l1-1-0.dll | Bin 0 -> 19720 bytes .../api-ms-win-core-localization-l1-2-0.dll | Bin 0 -> 21256 bytes Scripts/api-ms-win-core-memory-l1-1-0.dll | Bin 0 -> 19208 bytes Scripts/api-ms-win-core-namedpipe-l1-1-0.dll | Bin 0 -> 18696 bytes ...-ms-win-core-processenvironment-l1-1-0.dll | Bin 0 -> 19720 bytes .../api-ms-win-core-processthreads-l1-1-0.dll | Bin 0 -> 20744 bytes .../api-ms-win-core-processthreads-l1-1-1.dll | Bin 0 -> 19208 bytes Scripts/api-ms-win-core-profile-l1-1-0.dll | Bin 0 -> 18184 bytes Scripts/api-ms-win-core-rtlsupport-l1-1-0.dll | Bin 0 -> 19208 bytes Scripts/api-ms-win-core-string-l1-1-0.dll | Bin 0 -> 18696 bytes Scripts/api-ms-win-core-synch-l1-1-0.dll | Bin 0 -> 20744 bytes Scripts/api-ms-win-core-synch-l1-2-0.dll | Bin 0 -> 19208 bytes Scripts/api-ms-win-core-sysinfo-l1-1-0.dll | Bin 0 -> 19720 bytes Scripts/api-ms-win-core-timezone-l1-1-0.dll | Bin 0 -> 19208 bytes Scripts/api-ms-win-core-util-l1-1-0.dll | Bin 0 -> 18696 bytes Scripts/api-ms-win-crt-conio-l1-1-0.dll | Bin 0 -> 19720 bytes Scripts/api-ms-win-crt-convert-l1-1-0.dll | Bin 0 -> 22792 bytes Scripts/api-ms-win-crt-environment-l1-1-0.dll | Bin 0 -> 19208 bytes Scripts/api-ms-win-crt-filesystem-l1-1-0.dll | Bin 0 -> 20744 bytes Scripts/api-ms-win-crt-heap-l1-1-0.dll | Bin 0 -> 19720 bytes Scripts/api-ms-win-crt-locale-l1-1-0.dll | Bin 0 -> 19208 bytes Scripts/api-ms-win-crt-math-l1-1-0.dll | Bin 0 -> 27912 bytes Scripts/api-ms-win-crt-multibyte-l1-1-0.dll | Bin 0 -> 26888 bytes Scripts/api-ms-win-crt-private-l1-1-0.dll | Bin 0 -> 71432 bytes Scripts/api-ms-win-crt-process-l1-1-0.dll | Bin 0 -> 19720 bytes Scripts/api-ms-win-crt-runtime-l1-1-0.dll | Bin 0 -> 23304 bytes Scripts/api-ms-win-crt-stdio-l1-1-0.dll | Bin 0 -> 24840 bytes Scripts/api-ms-win-crt-string-l1-1-0.dll | Bin 0 -> 24840 bytes Scripts/api-ms-win-crt-time-l1-1-0.dll | Bin 0 -> 21256 bytes Scripts/api-ms-win-crt-utility-l1-1-0.dll | Bin 0 -> 19208 bytes Scripts/concrt140.dll | Bin 0 -> 332568 bytes Scripts/msvcp140.dll | Bin 0 -> 627992 bytes Scripts/msvcp140_1.dll | Bin 0 -> 31512 bytes Scripts/msvcp140_2.dll | Bin 0 -> 206104 bytes Scripts/python.exe | Bin 0 -> 93696 bytes Scripts/python3.dll | Bin 0 -> 51200 bytes Scripts/python36.dll | Bin 0 -> 3603456 bytes Scripts/pythonw.exe | Bin 0 -> 92160 bytes Scripts/ucrtbase.dll | Bin 0 -> 1016584 bytes Scripts/vccorlib140.dll | Bin 0 -> 366872 bytes Scripts/vcomp140.dll | Bin 0 -> 154392 bytes Scripts/vcruntime140.dll | Bin 0 -> 85784 bytes Scripts/xlwings32-0.11.8.dll | Bin 0 -> 293888 bytes Scripts/xlwings64-0.11.8.dll | Bin 0 -> 367104 bytes pyvenv.cfg | 8 ++++++++ 55 files changed, 8 insertions(+) create mode 100644 Scripts/api-ms-win-core-console-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-datetime-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-debug-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-errorhandling-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-file-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-file-l1-2-0.dll create mode 100644 Scripts/api-ms-win-core-file-l2-1-0.dll create mode 100644 Scripts/api-ms-win-core-handle-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-heap-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-interlocked-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-libraryloader-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-localization-l1-2-0.dll create mode 100644 Scripts/api-ms-win-core-memory-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-namedpipe-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-processenvironment-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-processthreads-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-processthreads-l1-1-1.dll create mode 100644 Scripts/api-ms-win-core-profile-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-rtlsupport-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-string-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-synch-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-synch-l1-2-0.dll create mode 100644 Scripts/api-ms-win-core-sysinfo-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-timezone-l1-1-0.dll create mode 100644 Scripts/api-ms-win-core-util-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-conio-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-convert-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-environment-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-filesystem-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-heap-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-locale-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-math-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-multibyte-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-private-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-process-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-runtime-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-stdio-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-string-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-time-l1-1-0.dll create mode 100644 Scripts/api-ms-win-crt-utility-l1-1-0.dll create mode 100644 Scripts/concrt140.dll create mode 100644 Scripts/msvcp140.dll create mode 100644 Scripts/msvcp140_1.dll create mode 100644 Scripts/msvcp140_2.dll create mode 100644 Scripts/python.exe create mode 100644 Scripts/python3.dll create mode 100644 Scripts/python36.dll create mode 100644 Scripts/pythonw.exe create mode 100644 Scripts/ucrtbase.dll create mode 100644 Scripts/vccorlib140.dll create mode 100644 Scripts/vcomp140.dll create mode 100644 Scripts/vcruntime140.dll create mode 100644 Scripts/xlwings32-0.11.8.dll create mode 100644 Scripts/xlwings64-0.11.8.dll create mode 100644 pyvenv.cfg diff --git a/Scripts/api-ms-win-core-console-l1-1-0.dll b/Scripts/api-ms-win-core-console-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..7840baf9ecc811da5757cbb8ed42b44790dd5cdd GIT binary patch literal 19208 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-datetime-l1-1-0.dll b/Scripts/api-ms-win-core-datetime-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..5dfdc3011f8806fdda6761f92588d48a5eacf80c GIT binary patch literal 18696 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 X^dA>i%z&mHwlGm;?H?M+f}sBbDK*(& literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-errorhandling-l1-1-0.dll b/Scripts/api-ms-win-core-errorhandling-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..c3ea2fc5a876cf3af5835542d1fab8b8056090c6 GIT binary patch literal 18696 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 A3jhEB literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-file-l1-2-0.dll b/Scripts/api-ms-win-core-file-l1-2-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..a68e54d2383dc607e90140c2a8a5353b824809b7 GIT binary patch literal 18696 zcmeHu2|QI@_y4(rd8Ux@nv?0=Yc9$>lMs>O;u;tp|oqxp#|EDR&L|t z?oF+`D4De(1bHMNA$j==4vS^ekT`|~$<9in85c{zm6LWKgP>lh_ecn02A9Q?S`5M9 z1jg z96MCg(Ew*97dYt_zHIRs8z4QvISQVQ{_DK0NGCXnn1{z2AwlDET;8b6f+!amS1)SqC5_a_(y z5*G-|z|a7ab)ZiG>F0L;r0Nng>KmyHLzXyFso(MXqnb9h2Da`>VuO#)?5R3XD7w*F zxYd}d&p*>ikcS&pc{EIL1(!vfSi~zu!UAqk`#f*yxnxvSl!u!aps6_K3NAFzR*DCXy{LD0r6{F`znFqln1WvWdiFQ4zeGl)T{ zfIEB07IFdq4IvwFX9{hEtN?8a{u_aN>d}Or`nG@$%n&OysYjiasn-p(r&P>9gYp0K zF$@Y2fFB7WLOxIcA(4YBlY1Hd7K z*478q{ZR{obOG%HS$7YeR^0IR7_)Ie=&D=e*@2DpPES=#rhK`h{1R6UVs?+E~3 zUg-gPIUj4&?dQ^`{7G>jF-G z;QE702#um@lB$I;@Splc5VW2q_r~uvsb5T$VzJ+;)Itybk^Bofwg&A30mo3#Po!mE z4gE&$Q$Ugh-FkpF;Xop4$wu(iRLK_XfNFaf(6f=?DOI2TR8>Jb5IfM-&+q!RSO2(A zAz&9&`?d$~ATE9356gxiNiZg;UL;kD0PtqN@6s$-B?K{{tEm;Sv&L!X*$HtQ#&oRp1vG7^nCb3%stPC28EQBWSD|(fhnl+LKG5# zMDi#DY5OC#@2T9dMt46=@_v|YNiYN*5Fwl<5o$ADG?LIxfN8-j;_V1Nf!1Qw!}F!QXm^l>K!h6H+&F#3VSpgOvPsyhKv6UHu)FuCS0k&G2)rb@=b zgVNookClcc7bsynZ@eEN1Y>7wi!rpdTC1sMWTc>?r?0A@t8So=m4YP}zDMY{-(yQ4 zhWWS?U7}0Oo*TMp6(6sEX^2w-|$J#UX~Pg%?o_vN`>33<-9rbk+2U zgzgaU8g8jRUNeT#n7$|PyfAk#{?mu81ZO&!WOUTdiS|emZrwB~;-C!9J5t;^cS zb!c)wx|eKvYSR1hsOobS|1a}B>8+ol87rS!OEBIqSg&{Sve;w|7m;%qQF!_68dbOw z!5MHB$<)?_NIIt*zV7UotNB-43OtU=UCHW`gBspC?~1M5+gNzpOfut{V4Bd;(+rw@ z@ilGyjutJoQny|mtVrw3seXgxkXBrAeE!kaj#8hUS2=PXe=2w)qse>RWiZy?y!P^@ z2kIu9-}*hh)%3A(IQoUa-7JHLcKZv$qh7B>0((XjQxHr*BXqDZP^mCGnisv|e(Dv0 zcQYZBly?|9Z)v68xw)0vGz$`zK=Z@AF)JigK0UB83Sxe(^Cj%d8M*4Ks%JQ0J8FAT zv?Xi~n-&@u8Ybv_lSn~pm6Y6xev1B!cB$wd=&uyy>q9M70;_3{Pxc0zk30J_$Qo6Fb`E;DKymrzrO;- zxZGU8a0KRpfc%S+ZLharzH(gtOfE~hH{;!+rLq0tya`zB&OD)BdnS_)4FIyq2Ms=!T*Zrh~FxKC4C^xxL#Resf^r#_I~Cxoi`nzsfl1 zHn;21&DRr^*qrj->~|JTtL!MgSOmgZL^5Ss6W8t ze+o=xvfu7;w$5*6F35&ZHmQ%Qn`bLNZTjY%Y!~j|7R)Sn)d+449uUP4X zramR1^*6ViObyKZ;xu>ShG5IpaSJ{xaqV+k?VY3hojxdBXgto;OuuU~>zmFj+~E67 zCy;cep-;oK?ap2XCG61Ii&n*V3eLIhv=0j1=+#WuQGDtWbm)qpbrF6Y@c(KO?#RB= z`M~j@n8TsMovG|m`HnGT{S%i~UelH-8Mn9D*X5X91jVW4-qGw?!>05cJ<`l`cwcP! zCUt(@#F5$f{1k$KHp-*p`k-~twzn+t<*7A>54( ze^g)`wY%teY?DFsjLcXs%m-?V8Txb zc#CViy{C?M3!+V3QJI(byhRSPC~QxCsVI6Q3^1?|U|@pb{}loPV+N)SfX@ZiP*4WT zelY*iFwkicpa2G1!2kspX@G(2|1}K!1Ky-xhAs{80?mE*B(U9Qk+$|-yRX%${A2CQ zHQ6Vg(W@9Brb50{DSdtYsW)bas*uV}9@hHp9$F#3$!`Pi`dsQ<$B{crN7NEFdNQ83 zUacljwfwlXUG$TC4%+KPqMTC^8^Ski50P>Bd;%W3M?AfMC|LY!((vbDg&~)>gW(=S z53A`RrV699;t$`*3G(T3p*Ofz_diP-5t6AmlALpGgkja)w;p^oa*y9JMnzc1)8m9R zt&4B(4;p0b-5F@HA!j_)fAkiQgOIGFhRY?xisL!$v$6%ZHM-8X(p`}Ma!sn)n{9|= zr=CFO&D16*-!zs@pZm{^rPiKNULAsRjxIK$fmo+MEp^ovzXzUhREE;6y1g z#QqIm#^_ho3}Rtln2SibVQjnx@12mXbQipA4wTmVC_P-o^6d~wb|g&6?(quP@l($M zx39O_T#T^R=Vf?Cb>J?dEaz(Ro9b5Dg*ffB+eI4m@y=HEl+|nKaOceXH@c7YD7d{b z)E=v3ggzP-6?AV+mbM*_I%)RSs7qZ-qo6L_xsxKlFo1W?WvScL!O-Ex4{NJTAB-Lg6+Ksik zE1i`2B+GSO88+~^*2Vh@@T#RsE0Abb5oWN6qb|zzA>E&_jJ=ZLs$(y6sYpA??hnQ?!dBXC}y{aS^&jNU?bRIkp?KH@vouS z!qSF1V5s8-aQ#R8LLwkX&GpgJMyDqNb!u?+J0{qb0?JHhCR{>aTdY&)*RNvvcI$-# zwpgNLmvvT**tSY-C5sEk%Ix!=1~oR+eTu9%CC;pWsTu&4JG{-*%X{-~YVv727auY}4)87sXrbALk+s z4U}BoKRk7hf(w`{$>bTG@EI#VCV#0_j+32`l0ER@*k^8OCW1!Bnh+nh$otGH zO#VVKSkV!7yT{LpzC1JLtn$d3x8_yc)l4TAHIk_-<8w7VHM8x&{amqAY|eSp$4(`9 z$FlBFXbkg(gb!D}<=y#_H&*iezOEf*##p7CM^A&b`=LE<#@(I!+8X#jvl9=r6lg<^J$vr&6S;kqXZq3+tRU4+zGXVUaTEuT&Z)%thf`tAK{D#$G6&L`xsxque#cwQ) zREDYK-?!TTXXt&j$ggH-z~s=HUA~H|o-~a-y`H^E!n&&SF~5~0$7J`3Zi^}sjNzJK z=(WpSX__IZcj#1>Gc5fO@*UsV^eT~oV}>1_HJ#WYdP`YyZ~oi&UPAJ7JID43zZ|nF zE^3jmZ9nkYu#4%=_S1K&_0Y#=kNc&2^{;+pWLuqZ=hkS*^ScoYf$F{uA9t=)mHIgcb=bw(MeJ$_MF6+X}z zxyceyqeu$g>d(qk(RpcSYJ=iE?qkXRZVe8|TUHnz>+Hu-IwKB^r?=z?JrPDER5nJu z-GArRI>hA2rBr6R)&nLZ)3z%gZ>%^pI(A@3Z%oVcjJNbk@u(LE*GP&7efc;y8j-EY zHp4IybdldGKgE}snAuRIndhZ&eG~gjH|Gt!S^F^?Mi>NevmIEoFs!y5k)`!zkoJ5$ zGtbZ!W_-$Ye*@oy)&A(~s&d5#v79~WaGy~ae+#p$K})bYXW{PwkhO=KAoJ=bKISaU9=MaJ%I z%?|CvqA+}2KoQUJ=99+L+<{+{aDKJlhBmb(OSE}59;ZT7GhxYP>iYwvD7y}BoCQCIJPQ|s0^-YLuY|EK69iBlD z0uxzwxB9d`4|sXvNGDcyp8fh(=lhm|MfX1|6>L!4%VW*|mNCYbuEI|t;W5j>6q43LgLXmh3<_}#vu+Qxg z7#^~GRt6zjGz9?(4m8ebKb-S(+}9~!Djx26{^XsM5l46=d@8$T_83n*xi?LrBod_| zHgU99(%mn>7+-5Q&Nsew<59W1RrfEni}KgaMTIM1MO1INy; zTf0x9n%2(mm*fnX^o%Lc-rz)75Z*C>CE7=N}$igf(ab*K8`zM+Nulne|EW4TgS~_!j$H8;Q(#zFn zoGwh;)vb*X5|IKx{z%x;@&i9MOFNMtG`V0qz*Tb0?t4rlqhRqd!& zCVgUKdc~Hp(JG9@Oc6!W6s900fAlLomV#UfinwT&obtDM4!_^TSZ2rDVE!Lcqp&PX z1OozC@sgd=VL51_ITaA(P*DaO4^IDJ#im*$_nlcGQ33Qm`2Abh6$c&TVwc+rh|f}O z<)FjFp?5!pEC*GEt_dax0t$@;!wq)+(HLxcQNv4r zxama;fGlf^#+-_cX5zZ(y&r=4#5_k7?LO$ucQPs19G)xOxYx?++4({Wi#>=R4+3}m z#{uOETL>cmAYsy9BH#B-y#I30xI8U1Cpi`;I9_>e@aC31HiYakZ|>K0By;YpL|AP@ zuxu`Ib2eYmdeNQlMc$6bVOXr|Q_cpS<5uf!tC4U^*`ufUg0%BfF?#Kr2BaCEUfmx5ZRtuci&+M_~@tIAvr-DB^Y+PN(_pHygS}q}SwVdO7!As7X z@9S>Qt{`+VY5k790%6)%Awn{3@SI}Aei$j zXZxyGlI|}bS0$x?xRJw{A>O4|taHM@Lw;ND8{M1fq3ue0-Gu9eNTf znW*DjaGWV!eUSemQ=PwIj^35?A#m{iMW1~e@Yx*~0vuA*?W!gF)}}`+h8$4K1IUh> zuTfIvn+6USX!a^~7k|YeYolQms*lcv1_8SgSy<-R05UJUf@({2JZv~+SVK)!4yS@s zfz^Hrt301`+1V%#Z5bt6)xQ@bN#LGORsQ=z#8g97fYlXXwSRwz_$S^Z;A|`guaF?e zV%df@7^}2^ad-NpOwFW2Rrac6314^44$Ya({KPHm-jtu~9Bw}hZ?f&kn&!6Umm3$z zDq*TebW0c&Ma;|-I<2;fxGIM1sb-2Y8|&X4j*RZU&Xrib0rxuL+&fODffTO0_QLPu z9gwo$UN&rM)}P#EcU1Ize%mlBs}=tpjhWPwLDOpl>)y%XcLpW#POY1HxbEZ80>#qi zI0BQDW=#)<>0!eIj!~K2X0eFSSCsHO=L_}aj;}8j`CyJBN$o3kb(6Y%VC~0)%z~&U zFTJ+nik$SXQBISa`eqXXEXJTM^7?l_8?>TCj!s?ccyhbCZQ}Db#)rma2QHa_;FcR3 z_ZTpq7MiTcWG@B*haiA*TNVQjtTxn)7m#E7i?U$yzP|)HKu~xA*<^np+aE`je_$L; zMK>G>NMNb^{W#SHQk6>n?HK&eA`~y!J**?W>aRWh$^=;yWK_=Bd%rZe-*tV<#`4mz zUH*m_?rI*YD-oHUB~V8BdQ!g{i}tRI(g;g}0f0tX-qn8{g=-;Zs_jTr8p1(1Ea&rF;1v+Qf8+B{8=1B;- z7(NwPArh#5Yn5`$jzr7i9iHwH>Ai4QrsyKtJq2ht1pi}@;m22rFa9BL zO-&?OOatisXn!kp{Ft+wcei#%+SdNg9R6$nU4#R63u3!q3&dpsh13*q%Kt8e`vcx2 zn4C}jDh!&O36l@O_0li4XN7 zDSDIqVV$MsNLWP#hY?D)VdPk7RN`8*T1tPH%mxQa(U#cq9T{>QN0m z{VX~%GyECy-kXX0x2;43@yD(>NeE0Qm$_{+^kRIvK}#h46CBUis;P6lpZ$!O?6cA$ zpJeg$4pP=wk+J?;+sexvuut^29x3oM2mIY3hTaE6NZuzQOncM7aZQspb-X{rW7}1? zPW0igG>^nqa18tAX7=q~y{S6UY*R^&U+XzhGXZv=^8QCHd%8`7PM)o5BpSQ(eLmiI z?0CYfGEReB_p`M=iS##(5~BDwj9(WP>)knvlu)>?d#hR4qLp{5CNFwU+}t!NVCB=} z(P3M=Z6goH=lAvuXosl2(>i5WYh%3Q@=2b|o)oT!*+^qr}a8|*b-4r#w+%D&63+TA@g@c_VC?(*piXLuv047pn`tK^Lsaj zBytXiUdK{+rC|!MIBh+c`FF$hLU`jhZvC>=LLmjg2h!P?7ef`R&{z--Mf}&p9!g6~ z940hY9F38BStq7CHP0qGL|N^T8ZWZf=tXZuh5a-U zlsRn1^5@)@rgq>RG)e<85&Vzz1!$uNr7o$i}JA4 ziVgxE5=<*LojR03pQ=fBp71fgHH~xQm}=99bDZ zuK#$Ww`GK$m)=lS?z?xk%4Nm3bcl1rK+ybl z=-g%gPSqyHP_HYI=fk~PAALUS@!6jA8a|^xWEjra811Gmfg%q2MXi@G8ja}@IKA)D z@$H9kc5O!xH&zMg7|)xivg%$fWbG?Mb%&N(_^jn_SLicV6Q1Xhue;t@MBy=lDLi^h z-a85fmbN@NP^P%l@6@F&k0>Y-L?TfCxU{7pwCGtD&5aYRZYc;k5HgSfQ>Fy4yzi{z z9GOuF;7$L$E=FU{b!eTP?QT2qFvT{3pPs+ejR6me~MMg-XJ^{*tcvp1X?T5&q$X|D0pH;CTNt$F^LU?P54r(pt=`Ii4dQ zK1cgx_>$~6drO%iO8l4CyS&ZiU9Mk!hQAVaZoQ}6*6EeDGH9%*uAo4sa3>Q_$}T+Y zSOXhyym8$ZXQ$8FZ`q*1ct-DWdSzb->>y1kHe|c=@`Ew?cC(}_Zi}nY+bzZkxHu6K z-s_+X*{-H5-QrNowd32m@jL;mZwSmL#54}!=ZsopgeASWi2`Ctr_DVQt=($2eGM1Y zo^}YWY)aCz)Y;U{kw?GYEBb@yWz=DVJyUngzXm+ZX|E}J8?}ZRJN?j#{@~etjH=@i zLe(#_Z)=Sy8C*E={*gyh38DqVlpb+=?&9S(gKgV+^AL0!#Vr>d+vi}Ej{K=(+v~p8 zISHHgPJibvBf;y+-cIrUoBu55;r~U)wvgu7QWH=9gM3?t=leFXjocW{+CUCQY3COg zi3OgSINtFAd#Q_Vr2N}w2me*@nJd>l+jb0n7@Ll0x>;5r^>p^)YhODDM!8KC1MV;9 zZIe6RyK*Omb?E5m=00-fn|Gew&Zn9sX>U%N(&KDB-5h-*`mOqIrwu}Hvm?z8+CZl@ zIQTv&MUn{*%IkecZ+3ockAectVFO8Vt*+Oo(!;5avKP;OML!8TiZhe>y7{!yx3kYu zlpEb#at0i9UcBkd_DoBj-{BVh__`U(LFp0ASF6l|-Sc;f`CrW|KBo0KdiUWSX%WZ$ zd!FRY3eRcW&v<{Ml=*N%NmGHqDYRZ}Lw!uHxCW+P>Y2x@nfJ|m+#RJjq7*e9!j1)> zq)*~V9XtJGT`<$oHd2;2BmQBvwMbyonWH_6-#5e~L}I=OCa$s5tlj#s zm2Go&)ZUPFjL)+aULF`$R^*oba9PPtMr@|F((2*rhMMw$!?h>$j_p(y70lP=hsLb*#FonyT{mc<~bXA36C0^!@W6PgG{a z^B;d^e>Z;!<)t`~b0r{>ftTV5lst#f5)6ZT&Y>hk>I3el{B%ZuP zq};ubySbu}qB*=u@jh3TVIs=>veF1t(6DpwKzn~^gCe>vIbA(TMA~5Vfi5AXTkrgK z9?pxayh0m0RBc&XBo^#o zE@ghuR;`81Fe9}+N+c$$Xz4yK<`;Qsn>3rmn4R3}*G3pTGaTemJTv~q*sQH-m=$o+@|3@()=qNm@HkZbZx zu0B|KHJBw(ht!$8CCe{PbVTBE_i@`MZflXriL&Q$H$FO&!zDsDv-uX~?%vSGUHad<2wcdb_>E8VbGQr# z3oL~?KuQqXPr(fM*YH<;A!=hZyT`Pk>+pSZ$m~+5VjKfccZ#;$F`IYirG~IDd1M&_ zBrBHO1CzU8atHWrCwj&2hAzldgvl`_d;TXX3#2&-C`jy0A)J0xB+q2`MbIrzlx_uO zx#fcyhngS~jW+W5>~FI98JpP}blzKx4%74f<^0AXQP#QX=S(+_Yf2(S2 zmv{FXAIHti4;fLL%wOjFx1|u@xXMaB|9n{P(5Odj>G?v>>e?McS@dh`BZ70YDl)w_ zpH%vJzPd5@ZBMAX%y3+_q6560)B8e~DkE$0;rnNr=3RIt+dfRBu2jj48J63c8dpGh zVD_l@KJzQa%mSOXlYJjJ!q@9VA(97^M|EQ9r}eebvCh*Y3DV&OBr!#9meoQJPZ-*K(Q7goz$spyZ6OI;&>PTEJ| Ra`9x%z33*o2LllFe*m!5$buL%{{OH4T?EM-E6;L3^|WW?*;WOTp|!OhIH)w1+-z-nis$w>%c=4#F4@2#j+rn@?j0qBjVuc|lF215GekZ2 z_sO=zkU$SFy0VMj|5Gfm23tD=yX%q1CPo^pC47XI3#tu>rXn`^R~8ZC?THu?9ar7K zZ60gqF<*f=hrP(S$zMp9*s^7dx2G?VArT022RAzQO2ByV2)T=Z`2t||_c#I)_s?G_ z`qZ%ug5rMG1qDVCeQNweJPynsCLj%I4}I=&&bt;9i5p&2NsA88qq^$W#q0+PerCFEEvZ>U(Y}U3e-o1C=dw>hI~P7Bq$If zf|`RNABYUHpQq=6A!RVJYk;5(>CvZnbBGU=)dzWkpb*FdR1gqf}Fvib>ZM1 z2(TJSQ3bh?Qh0hfb?^j3()9MJ0u)Bk`-w__PcUdv;G!Pzpz9h&*EQ_Brbxj!P!kGh zO9Z`*lt6kg1oR#91$-etkQ0I`fIk0z|0#gnx}c^&aQ{(D7+peo66u8q@E>Ur1g)d% zZS_4T(qcr5`R|TMb6@b!^q=cvYfzpHY77V8iMpuO&~NlU0W_KGTW?S%5@>|PSb=sqbL4Z$?cuZ%dEM3cnN>?kI5Ax-lwh#EwrP=GVVCSKxD#W#_MZErWov!&Mn0-Mp z6a!EplCBYE1D25&y}=I83v)99fti=Z(Id={6zoeS2jjV54kVI^m&ums9YhZH#tXxO zNDK?_QVWt7g&aoqp^E5}DIsJEePYCm!Yh$<4DYfZ>Gq@`qP!i|BPc|~T3;6y=4Z#N z!Wys|UQI<^1@8hx^+h5aU;DRc#s;$>nz8a?bglI9lCZ>_BxLXB5l9RZvA44mF|@N> zqpzd~%fm*hy7J0+aIJ#H=h`Fq+xFNIDG?+uB1}VxE$&|w1B9WWIDt8!SkN>S3d(<~ zwa(q@0BhXlPh-jC8GW8SU7J%mDfloUHi5fJ{oNX8uR}XqFy<;B^3^M@@vc>AqqPv% z%8s`Awxz^2b~Tj7WK7xBjD&XW*l?#ofny>ePLC^xcvB8a_-bry{Y8cGkm&N~hwOt* z%?ZP2)2@iF5uK${x3AMEBVHBTb-6y;h$(H*^wa=%+qdJ>HVPA>hjDzR-rLT45BfZp zyEj3E?_tUb3s9?mF)v+IA?+$ofpaLDB+jwG;7ml zm+3x52sl?T(a}DWyPfNuin`0aidwhEkM)OSavB<)PIN!&!ItIJnAA%%=T0*+*Ec`8 zHsRp*_{L-V@>pKmHLJf?N@;F-V?b02V`-ZWe>q`1#Nnu!>KhTe&;Nwl-UyPAhG|u+ zbZ>+6ijB{G(_G8$Rtvb~@NdQhV6~c(s7r^JuR8fH%+$8!DUsKw5R*4mcXaGRack;> z=T|sM4|ljK4?4X0HewYF6KK>#PugCduSW2tly^Eauu@#t;@W}wr)%?34qu;0AjsAKnxYVO~KL9_Ibx$ z0O1fS`j=jVqyHAD5QjzQ2ED+7wE&RwCW_dRe1icrF2I-?td7SMV1N@Ub1?QpgyVPo zExNJ8tcY%`yjTk>YukA|#{3B$|4U#xDm`Q^6#Gk3 z-R80f-ad*K>`au6?g)=*^xYwu*mPG>aNRYhW9j6qZ!S|uuC8dgJY>#qDW=u1(ZMzL zp36u1v**fj&5YYdvS)NA;l_X&9Wu49@vgdQ`;A>piuk9e&s&z|)gdI@%D0)J ztK`H5DC5!!>mrY}!2hdFydnKT=OgEX5>ChCUbv%=EBptI^^aUwdPPgBbjZPWcaL*U z5wue^?}o-L8Fs~2*#2hT1G{%r*r+YjP3oUaC`cm;Xkom&TKlX+HjT3;RHWA$4n@xH zD8QYgJbUH9oOMQa2Tu}yYS4)y)HJz6d>)uQKu>M@-9W`GLaQ$WF{y%H+n{4zVbJ>9 z<3Z}juE)c+$l&J20w^jqh7Iw*d>>_)fP5|nUReS`LmgI<#d~=AXb@F=Yp7`W5Mkm^2-wLz)N!kx&k5D8rl7>fcg8%IWhLx@ymTej3I-Th z2rw|w@P7*dfiVM92EgYAtII3l<$(#qbPRNv2PlAnmM}oUc^P2fx_=J?|D@9$zV|Y@Ur_4!!Ia!9 z{Y=Ymk9+gi%0BtPyd}yyfsr7nVO?^4Pe>ng?^d$8cJ5Gk&_E}zqoB02y4wZA zlhTK-tM{B~V>m1K?aHcVKlZ1bTlEC8uBA7*1ngzC`FgKmF#Tkm(&{jbYix-TEx+ot zYGlMNn8t7(0AA@F;IVipNea-NHT*A~1-sGxGZtKiWK!n1oHuGY9|p{B_~nS(xF{00 zF!=!rMiwzV46now46`KzB3U0yRwN&i7vNSzbi=8BWD1EIO?S#*SX~KEAmBBW2ms9p z-$eo<{*yrauY9YM6ld4vuy?aiuDghcUQUEv;JOue$z7fA-vrDYeQJaYDp&V$847!Ys9{DcUSF&zR}q^s1)?;k$c|g&D-&i+}W? zXVZDfqN*@T&u;dsaa|j614VSFH&br zaJ6)xt(IXRG??A9@*2D)@A=+PYp{|T`eame=;p>0NxPvf$JUP<^{8p8AF7XZE#p6w z+R2^npxIK1bHm)8hp^26!dzfZ1Q~cys97uni~+Yr@bz0HL1q&nPAnFz8xmn2M%?#h z$x;-SfnG82e;4A=h|4y86K{E2GCAvcw)@(ncyhVs`TO$l@`X%G&{#HM7O;pz7UlYo z?oU|8QAu;xagaLraux5C%ySmIEa!nz*m@4jOkn_@h5CiMiQ4}@mMz#j1(>!MuxvVt z+0UaEKrs{82sW6P0g9>rdnh)yv_S?8GG0Kff5a~|3Ubz17b|I0{g$j#OE~5KmP0Z4 zsOjgoZsG6D*UI11uVS6)d@YYJ5%1b&ogF8-sZvYP{A}@2hx`{I=Njw3M4vLHd|vlP zH@4$B8$YSDEMG+aE35SthwJh$*55iGGI*4|7*po(tTEZlaXd>e|NV#2kr#<8l{Fh3 za>wk%6J$zhf|>pMnS{psEx)7`bqw*A?XzrKaVwpYB@-HyC-6mZ%L(l25t$A+V!mIHbfe!*Tom)WQ`e7?;mICB7`wGSzqTiu`S_C~7xSUGv9^PbB*7VDpzh7ZCsn9jF@T+xm%bhs2rPJ^n|H@rt>RUxaGi zgJL|5Z+7o)Z(R13gOb`(qE(I7@t-B-9q8ve%2lss&3yN=7EEJg0{A^TkKcTL2u%k; zg8u}5!)mZH3;V*ag|v8}2=90wy;>n#yxQ&?FhGOJIZb`^xw@K<^`eh2Fni3IBxNTniu! z&>P@61jlD1*eZ^V-wVg5#x40B{1$nYdi?F~1&u4ZimzyWVOf=Vn9~FkuLAKu2KE1~ zwL9o*u7k;!T`>l#PhQtoMLz0|wy{9fDo{f=2C?xT@4m1#y;0!~PjO0+XQLy!(^7=j zI_Jq2oqor2)lRvB&xKHlmFJ?y_uLp>iyG;_kj}!;mTJ;JX1DZ-)$xph!Bqd=xRzJ@ z#~Bq9Ft7K?NQi}e`!qEWm7~D^nW;bI{4&dev;Y=LR%4MyzOQ_%4aXZ#S8cxRJtEru zOag?-F8ulkyp}A5we3xa)@%X`@6$^x9%*Cu8u{N^?ul(xk=?oom zaL2hQqU%N!Kg$x1TMw6Hf7CqV<5VZFI5?S**k$7|R1mU1uu{YP&Zp?+W6QR9N{<%j zNh>o(3V60_2?wpDjj>*nJJ+LM_i}Q0`>7YDN2w}}maU=UJdzQtnzkvSE=KxG&ezq| zSopRb)|-us7L7Z!6!sa?MR?Q)7x9)iA2S}~Ax|e00#D97wP{NcZ}({` z5ZcA#jnGFi=>Av5L)r=( z_yXE_OQ!KODM0s0P64VH2E*;2BPQtN?;m)RAKY_c{1?Ps`_570FnG2_%rh3yyFZv| zRy+s1ICUxF49*wC;(;^xq%|d-Unz2R{V}GH=JGyufeF#JX!8S}qSqpYqD2+z3;lUELP$Ew3 zHyaASY$p_n#fki>YX^3yy~&Ybi)Up((PC*R$jVstcqE);EJxtnmtoTSv8wFxbl|SO z_9B};TE&tZVg4BLtKRKJdA)WUmhnBfU4XZYi1e5GnC|mbZ16Hy)VrZRJx+fU?vtaX zA8y6iSlH~kjqA5@y!B2jIn7MXSxly{xyCTi{M*_#jZX!i3u5%K7r#0?NbfpaXA*FqzK zZ3`l)Fjk-J9}(CWGcNvkw?I?&4b-yQVdBuN>eNXI&7OP{4{8?34k|N#9{m1|)~Fk{Vvw6MiMEb`OWmP+t`ev&p@*Y0?|1r?Bt7yIH9TZ9vVt$nY~R?)vG*DN z-VS?9XQDnomVx$mv<_g5LYA9bJD=Y62%5}~5?_A>^R2^BY7Omj_JcKPWNTRRC6~bA zFUJFxbc=oPo~6`qeUKFzF6k+DW@6^*vfNjBL-SKn@P!zeh?JoH`0&&3j>LyFdv&ya z6^lBxWo=vC`+~9i#fmx->2+Up&0(6D(2v21Md4{;>>v)e(AUU@m*`iRCi)534xSU~ zLia=y6cK|(gW(3d{wNGKy%2ioPdB~j1jwSYSdsDZC8U>I-*3Ix;PzqN7HKQVoHF0t z8#x-p3Em9M*ez0pG*$<|ANK)w{OTh9xa-tLJ$@#4UU04j@W)+?zbY$GDdunCXjj9M z!0!Uw%gP_z%dh;g2*SD1X%{tE15W^3U}~`H_r0(M5vKkv`hDNT`!AEm6??;TQ+5zm z3{_s~yXF*QOUxPc<9WwGHRH)nf>pIcrSm8oa`=nZt=u{xJU+Bjgw^^~+G%nFk7{pw zt+;1ejGn@4wi@>czg==BcQRLOQ_CV+?;;(!Ax+**?9aIbvmJD=5je7k#oOsgoz2M; zp`RSBR@d{tyz5>gn;5-X)_G#Z1y_xU`s-6`HTII0$NHL^tv!3#d4m9>_HgO9mwS)R z9D4n1{fH@n6K{Gcl+Q3CghQPqfObDYvcX#2}{uish*ZQK~rM)oA7a97T*6 zsywVF53ByqQ^Y^jO$E-zJb8r%XDk+NSc9=jCyZ}qj!4yxI9BB>PZ1CB;_A})ykQx| zY3=)phVEw_2Vfh!uIw=$yJfON0@dHbMnzGdXNldG8-?8!!eVN0Th6E`?iD7M1mt)dge`|O|$;UHv7XX&lI#jV`H;ic0>Jh`mvBP znHBXPWIeWqB=e1~{rqt4r^AO7%9?i)ajP_HZ;9X@Ha_4SklMa}2P%A+7J1`Lp}uVS zx-#L9W*F+K-6igxtFEW6`LvH^1*XYYuf61WZsznBml2!0lZnCRgOHP){_U>@Z5ZLh zqgT3~U$1F@`*joZL*sZyZmHnVmaA4V2F%rhBgeBiN&w*y0#MFro^W8ZMNYhcGq%5U z7979(Z$S<~3eO>%^bchFb5{8W#=!`>5da~9S3{@?l{rxb5&v-v{#OjeYYuPgXx~#; zUQFX4^F#Y9KRfunF}UB;>SR?>7O^eJ@a%1kjQUdH$w?w@fd5wdv_U@e5HYh`Zo|&z z?aVI}WRL2~E^8<@1AFrUOPTs^-nx_|9J>GdsaUi6YUcZ0yYB|@?_ZPIEvY^HYDPKR zu~%r5>8F!23cU&EoVCB~t(V0W7 zmt}1}zB=xD@5w_iF{iw4pIp+`(v~dA;vCB~Jj?Mejz`6ur~HEL#*gI>pY35aiM*R& z+{<<5>d>)~J^u0xuI^XsWj5xE3%VJ;5LhBiR_k1@6z890QR4686_wcw_hhY{N4pmQ z?ViGaBpH6}=KmIl{(>6*iM{v(ag7`#nLh^5`^lj*eW=*g)9}X-^4~=` zV7GwV1zR9)b10-LPf+@wLbyMvn+nGlAgvO?#%ICt8E}010%fCsf#c(0t@&vKjpD=q z>2k)}%v8~v>=mY{Z*8aOP4w{y52PyiQG;Neh2m&fS(qRqwCISL8#qEm28WxF19{Ql z*dTIn4moy(9J3;VgHKdQK}6^m7{Sm0vmrnob+nS+dWA0`s?qwk*c7gyl6LTm@~n*9 z!7QGa1I<0nnQbqWD;~u+J{E>9+)^P|zl@E}ihPN_^ZxDq>z2YRJc=*5hzpFR9QCv@ z^ksgbttp)O1y0~^)6glu$5AIL{j#ixlp>bdMa>>8GS(lrtGvhwlVWFXtpY!D@VNby zsrLZ|k|QNXXxTg}*Dz^U^9W*kVz<2W$X$<1&HX!$b3O~m%euRLwM|XZdYjVRz_x~! z>jgMS755&u#N0FuId;109L3m+|7-c(;_}4dqg)1gUZ+ozk{GWUC2m=!J=7{B+PifU zEiT`x+u1B+-o`gtn;$zRW@efky!1tRY{bT!cG3G13VLrn(h5`gpn1anq^+_4#bdl# zx6-&D=J;+Vq;P(@Wd; zDY=CT>r`hG+r@_TL{}vX%DX>MOVUk};p4pLp}F7B-FEb@aZX{J&dAdE$aVS8?3M{w z3#n)23HvDVN@?&%?NaTwyzF-Jqn5GV>1Qt=v3h99+{=*bR&!aWqlYhD$;EuhA-`E- zlMTASKl&E`?T0P<)0nod3N<*+=>O`@)u-aQ2f|zNG(Jg~#wSK!4`%(-a6LzF{Klnq4>dZHkNs+VmTHM=up&uo%T>%SmNNYcrmO9bM5W68kcCbG)d03BRA4Mzk))k zwP#rZya+A{wvX9U{-Y=m{2Rx-a!U@WX*>ODQ=^s^QAQ)#+zz2VAzXJp97?e%6&4!t zG@414W!M$6hePljo7~+t`9A-dB#vt3^_4vX-nr6wr%mgsMz@vk@)uOCk!d2+Fvi+8 z-h?gJh}zHUu*ylHDC<=x-m2&n*zJ|z*e7pa7b4UA$K<*1TD<{Xa`_%Q{Jc-scv(q8vXQ7>+JFX3yEni(4rk)A~mDc#BY6xd-o_%8)`rUBm9$ zs_C+`61mmQ6X?UfFL9;o3a7KfW3-Q3jSe-La~`ND6ehGbrdJSd{^8o@MPy#?s&_iGU{JuD{&`)D6)|(~YH-`v`J&1-X{nb@ zX?@!#77+J*wx)_LBw#l_3eU0d`obJG8bt}R%wE2*j=XTa#LEfAFv5#IK#C>g$+30yYJpPVY%(<=rsY zQIb|-$bRF^N8|YG%@XbeCwHT9C*wrIPGPEt?>@J9``VsN^Nf}&<(qDL@CL8GDlnNC zckZdjlu?V6kc2M}ML;yU+RQu2+Ou}kbmU5{F~{)Arer+}9h;k+`Hbs)V?X*_#2he) z8NFdP9sDx4qxR_d78w@&*h5RkeW!Obs|-a6*1XQSt~sb^aQ4W=WACO?REr2MGwS-( z`HSran>O?1qZq8jEan~CS74O(|D|Kw>$S!;8Nc^~{?=_qD_WKOToQsd{MDI<{}&zG zLb_v%96b3C@@<)3?Y3d>zxpg&J3bVnRZvnSO0Iib-t`fGp@*TrV&sj|n z_G=6;UmxmKuvIkZa(+p%=GWNm2mJR&l?UB=o#F# zipvvI7df@+rT6gXiRKtD=T)3r6f_(oibIbvCUYk7o%J}v-I;rz!#Fpt^~UuhH%7Pb z7<;}p6!&x!HCv3?<6(`pFuCddbLiglln|afk*n|MMZll z(a&v_mJe4q)>b?^aPo*=aeL2lU5jUllQOv_+&=K_b5w%aQ?IQbbCMNTTobK!K6T=; zf#yN$(0fIUDwea&^V?Jx&Y?qwIy&Di23-Qi8p8 zF)G5$XCJCQy6u+UN8N48116jYfH7{Fn{?f}`v3vH7<7MRM%n)?!*V*Tvh4jV0 zolsR#`py^Ae@cOf|B;hFK;OUq@x-C~v0ELZzA}6*$!*wMoqMMDG&N#hXJhv{nQmF> zQMdYl@a*u_aaGyrXO4{(+&Z0S?45nJ%=y^9s7c{H(Vr!#MsFl$NZ1n>-p1P5@jCZ% zPJO%nCf2d)u0PflFB{OER--zDpODu+R&feAAEvU2}JacO2`)hej!=H0WkE%^#E1mI)o_rx$o8NbK ztug-aMjM^Nb*@P~r2-RX#nH&-`d;x^>{su+6ou?17ma!(tuz_MuUd&UWN-?gmrvzO zU*FjmUp+Qmm0el3dq-lHePVrHsLoYIwfT8!1?VaMMd$gL8!19dB|c`NpC7&@Xny;6 zmvei~PrUGNr>+0y(P7|dfL~1@M~4@eht7_K65} zp(Uz9We<|b9j$gtMtS8#&{;QGqFZl`1ZisTGkSf-w(qHHe}1Wjjla;P*O?YZ6h6tx zowJ#dPlhmB_EVRzg>LD)nl?~#Uwc>93di&mOtb-LY zj%21;#<88Kh{g}w?%S5dRUO;XE&hlzr_2BHl?l0(;oda4!uuRdpL02gM_sex^JAPw zqCe~tt$K7_uKCn%$_(R*0=Edx2*U0Ywwgg23SEqr5~lKs6+Y12DL=^~8ioosa$V^Q z_x_^)+~q;>Di*MM|FQLpSqkOnw+3W)9cigD78$;6Fx4G&;|-=Tz6FlIP#S*@j&J;1 z9PfX%2C}rD`wbaERaHe^SzpOWUSGw)5HAZ$Ba0;ruh`H2x`-V)oZ>|kvG53^f)$j0 zAlWNm@pJ>WozV7R)g?GmNqAz`u zCQl>#0kb&0hC zQ=O9B?pjCl-WX|qQj33AJ9-#3b*8RHm2=yh_dW;3pX97D(3u!@h#&1vH5`rhv*#VS zlGVIfQKH^%!>FH3Q3h^D{h0MQu`Rl4wv=%9gV|Z<3mg2hhOKsedB>xWu@O_kD#jl~ zzC4K*p1I)MY-JFhIzkLcE_TZ6n1E_!t=+DvZj;xQes5{OdTiJ}m5m9?eJyn4BZ?+} zkhXXB%V_UsZ2uG6!Q(;W6K54hA6&R#?V>JSV;wcK{tYY4Y&-0X!Zr0{bW-pEE00MY zO#=rgK7w)go<8m}|Jg<0+$oCR_%uJ$WdvAYf$9K9g4ll|GvHt8uV`%%Q;(=yGqFdh ztDhHJEK8|p+H`nTvdgX=xFSV=wQe}Re^CW!HhlaoIKBst?*hN=#4h>W&;=(I;rO`H znEw+y3mkJY33|EGk1s7|+@T^YT~<5XykF-2V#^0J4st-mbUf8m(Ui+=DM{HlES>WU zetDt|QpZVb748{q8 zm{>lFE~gC#hVO9Q>s>gi*zJ%t3C_dsPFtMHLoqJR;y=Fs5|2~-hNiT`E4p0LmQsbf zpLzuDHKjG&!8NgZZ?qoj_6@YV(^&D$C%xfu|8B9|!i@c=o31Wnqdh#d)cd3L1qgTP tNatYE-dF1e)1_BVc~)EOiIRLXGI6#0t*GipIUAB-j*>4)_3nKL`dUeCGrfA5~}y!*Y^T6FK~s_NalcdgpBs>aea6GA}{ga+x` zHwbC~XUd^N{rl&Cu7KMtA{SYpI)+=K4G4={qW1m)k(h8om>(p5(Mnx0g6&A1CGVIKQ5N##akXgrj%YjFc36NG3?R-w4v8p62KXhw_hRtcP|wP zKAuERpaXa(s;(5ZzpK8~whs8L3WP|4H^`vsh5;9pGAnHaL>=mXaPfb~{|XB%^&N`q ztOMx^J4iH(ufBAT8Hhe0&4YXMzua5V6&5S~@^`6?i=ZH-i%_al(jFiefK(0ABuE^f zZ5@z8K`H_1A;?<*2?p0LAf=XJ8jBZml?JTj2{#kG@yWA#1o1y6ffVGh>wr=@$v&QgjuQw@I(T} zQnEZiUM9diD#l2_I7;6C9sfxdKv0JcUIt#ZR%ahFog#F z{^#Q{$UuPhh!6n^fI=ZZ&{_Z#4BOIRg5(RHfuWWrfYMJ0m(K`zA0__?=7T_NQ1ww09wBrcM5kN~zPk|sT&|HC< zu#g&%l)&34fHMxXu@-UyB}2j6MS*iLz-r1JRZyBz3rnr14z6HGn)-gK5EFP7#ZE-( zb3(xz1+TDxCso%-s;-gWHKkNc1T7(ews>G|N)3ty!-4H6U%(IY2PGls1kmSSx1Rzi ztqWQT2In8GL{cS+B`H>j27f7U1VJ09dRu=lNqJ+67E9lqA}xNwKhl5E#x|gS7-%sH zd?(_Hw}yVB_i3QXqHTRZofx1ICC3`PHAS;UKcM&?27K8#aF=4w5Q?cF9f$?k>gQ+u z`c?n@S-nlC}t1QLP3GQkYAG_ouxBtH!VThKDf(jw3ZvKkVBF5UoZ z!aOT-SYZYf0xCuyMJ7V9=!$yi)yS*E4^ECj8Taju?C+RA)cUr1TXr#-iv*L=Eif5% zq8NolAd#F(K-J1i&6P74HjPDUrs zNdJIPKVn!YmJMd1WYTfc+2Vad!a{wp!muDEhmn)ZGQgV<78&MC#OQ|+!ovvEp&2U* zi%{;PIC+2Ew+{%x%i9q>L&7mO`ns?%4>MK`3&S`ZPDM>c%@v3mFm_plNi~0oW~*RE zie^llC|zrPtRyV4C<)p7dj{hpG4^(L7(+X&bsDNhM)Jyf`YQ6eY6kk)HL&>N`w0H_ zeeCdr=m2j#Oh$;Uv@e1NLXi=yz#R~bNHPKeRk6SI7o}4^#Ji(2ewf>skm-X~0<&EVQaY;VMfxQ0H*c7fu#$(r;WE!D zuFu`Weqd@Z`VPtT^pyXjag}GvAz!}rWwn1wps##lBTj#>XoKFRE22|1>;$&Qh~g{f zWK`fv1Y77;Btu6NBK5p(%=&X*t`@es7x^5KZOy$a3pKoR+qScEcVqD_Gl}e{0-1tG z&d_PxO{(eOb+KrvU32r*{!^LVdDU-`tda_=E51G4)Kwm^^(t%LqfbSnQX1S9?!!An z%xkY~ysu{B@Gkht&8Clyj}xBr_vac6+3ziiiGR(71pbUDB_kMsMQC6lU{WC#G&g$n zy^L1=nb}Bk`V5A~UsCbT{5+Qy)q{k@(Y!Es;%af_Pxoz&!Wm!de2M;YR<`=8%2`&} zo>E@~Z3&yhrp3m^hROQ=L}K_lMMZByutLa^Un+Qqg(!vx1yFJo!ED+m%9|LexcnI@ zUP*OI;FAiV2<%Kt5Bekx4IKi3wt&rGlO-8OCTo6wKuk=`?;e0B{7K71n3JOK8Z^ZN zzdr&+ztUYmcLeT&fI>>r?Alr|3#?Z@la8kj%=))zs&5$@c+7S}e8MSmFR$&J;V1Xp zJKhk-Cz5J&COPCbO<%ug9hO4@+01$f(KxMoM=mH8`~v3 zM*RUE|5IQ(F8y_Yt^Jz=W6@yZApam6+D~O^$8}gRURsFE&;%G}CUI%KfS{ z2R8(L)d?e>ZMds$+Hrd~og#MR+$F2h+ePQSwmODKS^G89bd{dI3>|0{uqp9e58}U? zx@I>H*vHr2kT-UUu$|fCc_w=|NE`fHb=HJ%nlVMhTh8}C? zJh*4)iH&N!x+!CGNrmZnel3(wSKF{n_~v&^NhdOD3@2m0?JQ(yBs_lRNS|{-b|*&) zc7DQ{Ak;LsQ+x@SJb|S)|E{B=R-o0V@g4gFy|+OpyCNa8{&ykjCvTBpTT16Q+3^1h0f93ER|df6 z4y(&6Vda4f!&D4(T>>b8fmSd;!6g}B;D&z<1OK3H;xAp73V31WK|7L}?=eZ*1g+cC z?t0>5?F*U1$DYzE8zA09eyLJic>U>4VxWqk@(s>a^;>*2BZJc3h4lwq?q1KDKSx8* z6fzo}EZCr06Q**a!p1&fbihe#y>Pr+20}YVdrPF0)8}LG!~o&U-jN8gh1AENAIp!p zzZ;J685ydkg&0m5WtM*UN=lZ?l8w5~zIO0w>X@L^sY7Xb*T(4h`rrBR)W|-Xp^uNX zNutFGYS@(C+8aJhe`jl$g?8R#RLJ;EPA5TW7j^f`hNmj>I_IQ|ZmIWNXs5X-_vPA} zW`E`p)~$N{IX5zzT!S*1HhvyFKao*;R%vY{$}OSPh+I&0PBkWaH%z9v1OTsW5%3s2 zl_dG8!5a1#W5Mp!_>7U^fMiP6J2@W&A2$k&Zdg7_*tjB-VR`Ta z=V^@T`)U75OY?o@O>yQC`NniZ3u{ISqxSTij5J6XBt4jEdZ${};b!>oOqJH-wf=|r zkChW59pCa~k1wcX6N>Lfy9>t{?o3kWz8$%V=AxhNzVg}t#UVbXuLp?IW6_HCk5_`s4m8>oTq5tP4)~&&6Y|AcU1opglz#3 z<_fb?kbx6{_=cu|QQ))!zJ7}&l+i?p6^#b-hGdw7mf`!fgbRVDp*9TS-{m|cC1hLZ z#ai`Crsj<1daOT=4Xe<+bWa}UTQ0O3iC!hl2qtlqNx43x`xBP2RFXY(9HkCDUBfvq zGsyVkRWMv=4F^p4X!@$C5vL{ansqC?oqET*2@p-S22CP z`CJ}bD&DotCO1)ZbETG|#l@q?9Sfd>H#XFLimNvz%x-w0o6tGBiYMS^c>zZLGn36V z$6NAG%=#{cPaJ1HiYj+}+>mPS^e#uQ;O)$tsVB)I%9;(1dDC{{Nit<*!K|@tI-z%C zR-e*JIwv{H_gl3K^koooWFkWH`9BFx+uil+68q*Rbn9qZlT>Y-x1+()jko5WmpVH> z%10U+D7wENIz2$fh0d4daE`wWm^g7%?sB^<8w)=D@PiLWKXXVj;MKF=#*3IW_KrGE z-i|%U>(-&d?fxiB$TVI4a+R`y;1nAdKeYLg$|lk7+#3v2Ni1pBAuOC$THB;e3JAS3 z!JRFy!b_bFIBn0~S1e$Ha-Hod^Y z$EeH@BAAF38Dp`3^t9y5Q)9L&pWJUY+zQ*8X+-14a&)Bvu4ZNAbnLsAFM68Utzi1- z>16+%s{-X4qk|x!gH`Xiw|?Z_DRE&>PvCK5tYY57ClOkM&<-!--tIje4ZNRO2>V(} zway@Q0>1_19~@&l&Q_;pLx1(ECV9aLvdAlLIo_f)w~ho5r5B9o{HzQ`P;5*GhtQs`ps0MHLao zu)n0cW1quink}Gr;B>AVEI9-PO>S*^l|sil%Yx3GPU#Z4sU)$x@ZEbqLAm*@6MKYS zOjwncw20ev?)z-m!*F}cncLNR=%aHL!C8KTYabffRVUwmy4FZRsxsNy!FJU+O72Tw zW+oiEd&UJW{Ji7tp|g{shjx7G=)XP9}!1Tr)BWtWonJ$`7spO$2HbZ*x% zcH`9yB= z&96mti<#Sho1?kf3Km$u&x}t2^gi}y=>6N7@K5N?whY1my#by>Fe#UUt>S1>CQRCw zxcYbSTjE{j`Im=&@+yl+=l67+3i$sR)c=>}?!eY;hf=S)p$t?XJ+G^Z zdC(oV(GpRkK#bTFvWoLm_vNh_4GIGsN7F*Q8k~?ftuUN6habi3j5#%)an2JQ6+$Fe zHpaf&d;8UT#MId33`UyveI{emc3h9FPaPPa*cW&wvE^CzJ6gpg)bsr^5@O+BKF*KF z9#&wUr5g*s#A{WU9>hqZaQ_-T$`Q#QU z`*SscS}7&bo^_!moE6O{ji))n7E*D+wO>azwx@}A_%;;^?dI@7YRR8*$!HiCeOh1L z>0K9VPcxvaU{jf0T^@VtZ1KS;{`&`Zb4H0N;*QgY7H>*h(_H*!SEuORm%`Q^c~hp3 zXA$_Y6sGO%0qxI1UmQEsjg|h!(zeO%o~1y^z0Zn8+6oTbK^>f>3s|xgp!+1}0o4nG z?)LW)6IAl|A9#}=+;cJM6D3^x&QUX?)$xTwY2=&AYJtN5vym=Iiu>I4G| zJ4+46C|BDkCs$9rFAk5x*+!};Yr(F|wULNbSTF@GmPi!)&4R)&%Lyf7iI_hO?ZE1` zPgqRk%263mv}iH{Vz@W)p1o+#^H!c}zNynn7d?{Mwid_EJ<~HWo3bEGy!S6tl5bm2 zZ`OCT%>h06(sjzjOt>t@q?q?Itl?iXmCNRb7Jrc$q`P7N!;c5HJ>6k<%6U_M&#`WV zn&srj(=B6`T@13ZA+qm3FuTN+vbU}olKF_V8C8n5A3)h~rUnWQe>$zLe1878+n!^Q z^Y5F#jf6z)BavdxPje-0Ir`!XKi=9exXi?TQ}TM&!qNOlY_{^%1I+RdXL2@%razR6 z>Q5!{RtLoJ3#jpM#rApBXykG6m-Ced2W}GM(AU~i{&`41^rJOm3x>I)DbpdZ<5eWf zjR9++`lDNNk&LNfJU%642~(Jil=$&oX|ZG^7sz6#dUE>T7CHQW5o3iPZ-#k)XpO=$ zEemuA;Kj>+N`qykQgh0HZbtdNy=pI9t%tt`t=Yv~j(@?~?u{QwQ<^Dz8|589z(5zvK ztI(N&?Y=AgS#Q^-YaKaB{3X+tW>>5;kOO5UqQ>`}`|K^o=rWTI3bi%Ad#yKCT`m?k z&`KW*lf{I7bWSt^OBQ1Wc?`?8rYv}geul}SAA#>+St%y;NH#&>QD`LSZm`>r%3#rp zLNEQ{q8F6_Sy2~_Il1>C*U44AWrq$fsG^y5MCw?dSxN9WT^QOd*?6+B{6I08$r13! z!yp{LzJfpQs^6r?L+8P{xaXy71bUwl1Fi*(_k*)8A-%akqFxk|np9?$Bp?asIM%*iXhn~XoRn;ER{=4N&2C@XU zspa5pb_X20EgiN8KX$kkUUkT$n*Z2dMjz)#XE)ZKj`-+gy|#|$>0OU%+2pvjvM%oh zF1u;Gue&wBUL!MrFTu~keEr2EE)M*(+ONvKJk31$wdna{vnf*?E7r92z^yqt&1#?@q#oDsyiR zj7CYM=(rVCFl4C>^Il@83o*>oYrPN&N9%dEJUjO#Q`R>P^2jPu&UAfa7cD%Ba z{JCWe^@v_^qmtO!Z}@JjO~M`ukvpmx;>{)ox5pq8dfV7js zpX7v;{`#U}W3&F$Hv1zY7YaKbuUcirds}@r<7D`>j6mIttmoG7RPHzHXNT5*JW`}k z-nU92pq%p(;jqe*)W&;9gIgv-OGc z=xrf}7yC61)RhU(&Ed)8Jbf7p1_kt!_^fU@hh5Fv>7OXb9@mxSJ%7|Z)YKw~i*C5L zuQf$DBKuZ-f_dE;`g>h_?gsH>ugmI|)PD8st8%W>9ih#pA8Tb4?j$w3Xn)GAlif+| zls&uN=*hH^X$z09eTQI^&@~4yC&DMc3u`dS!<#G0bGDpXn|SL^ZP8Oyy?1}@>h_lQ zR7pmc1iDw>SY9V`s911RT(;fxp6yGh1(*e+b3JUO*DP@cxk<9eOUrUG$6 zcf%+AtA)eVZt^K52Buh+2Ksu(X5E2%azvKU?g>D<5%?cTh99f>zr~?Hp@x5AFaCkJ zrfeix+6HjvqvOqt$)j#w{=Hh+nVSZ?^LVfQcM%TwE#P*+5{UaE3aQHDl>S`^_Xlkg zVNxOGtuSa(4oo@#lQNbm8wC_hBEecq!v+$;js3&vjE%XeqEDE2q@uo!ouUuk*E1@Z zsNhcwfpwOvBVlD>97brx7BhFSg(?heZlY|+iv!yRDI4b~+pZ|vtnkzgYzi2mUtk19 z2FwOO@r{$U^ww+KNwEz!{bKVBg_Yz(pOnAJ$Q{bzcskzP)11}*MES%6Qo}=G=yIP* z*qNsZaXB$hkppjE-n(TbEZ}*x)m5B-I_z@Pk`hClB2aYKB&+z=}_|wp?hS< zck|d?&(`L#ou^nI2j%D7-M)5Xb&A=>vb^B-^CD*aECDA5AGYl1H4Q&`uBwq>?9KDJ z;_lIkK%STRY}%bhi8p(lmLlZK3yyfVr<_A9wZ2WQvN6_oe5ua=^l zBE!u(=&70Q?_vAquJPgGM4c%vQp|>e$9BB@HbUw-`NFQj01LOL5`iEMw)9JRZi7+@t8~AMC z`iOYm!KgMYnOhPjbBj^ugE@aUTrbiazX|JC%od8t2p+JVjd6*p;6q~p9g6s`(;kY; zQyc~~Rt$}KegoQH{i1wh=hmQG()R)^=}yixo|A7#%DbzkD6f}p`5#4rXkd@7QtrM- zWZ_NTDFly3KFhheN^aZ8U@E<5xNde^dGf(n_F3y*{2K$Yc+LI_H%AWy+OGeT_K}0# zS*l+>y}wB3V@>wye+h|YzPQ^~HX`DPr|986zh~XIFB*^RO>Am+Ic0wCbt2aCiLMMP z@1(pP@XI4TQFWi6)broo6mKKZep_R_V_(b;?w5G_DlCh$fasoqz=jN)I=<@`^lA@f znhYZycy}rU`jYUH-zs)k#%s`9wp4lT_I@vSHT|u7K-pW8(Jkk4xfu^nS2xzcDw7vV zkvBTK67~*iDe^WxxKaOR=h#R>XKyY);nj#q?*`uakG-0F0n<+8FIOwNOG?O`MlhLE zZ#jBLp}^FZ69@7XmcKh?YRf4CvILL_)IUyb$p}qarX_b{1G8H)LKaX4Qeemw2cGx6 z>0K_2Cw$t;~9w2c6vt;lA&_Jk1gr5N_qb(mN4 zoQFPqP6)^jBHFXvDQASpNnc)X^Ea1sZ@c=`vo-qs24C4t(_D5^Xsn2?0Dq29Hv?z- zHc!~41~y=Q>#=8-z5c2}%LaA&vwDxRD(^}z_mEDp3>tJvJ@$r-x#I{#d9V&jPCyitpkkc1xxfnPNBjJZ#WjaSX) zg%}a7X{V^lrc^ykosGS$1+*Ld5@H&YI)z;$;}I(?eFY`_Jv6 zSDB0ztbTs@mga<_!Np_mANn+vAzCmDS+Td~FJ0*{*t~_i06}9dX1NsDJ_EgU>`w#R zJKpQuQn8sc`dhad3A8EsyC#J={Mnv||BZodF*UHIY&`i7if!qh?b*mYcKva#HYoz7 zRajag8g}+&Mb`)H z*ou(8(SkXldG&kQ@2{6L9!xH4D&jwl*4x=opO`PEj;UYs)aTXg`{o_qE^Aoh6*Qcp zk4BuNO=V5tzUX<3{bt@h7UR6cw%fOk-F~xu=k)0M2!@f(#9T3Y&!K7?;jpH+qtM6% zmaZ&o-7MZXcJkA4lT)+9gdLtiVKFC2H;*w?YBavOe)Ar=j&MupeM1sLIPr@>ij2KR z?WUo2W{1P^yCc`rKg*SWvG1{x0*Ca6D~k3~qOjSbI$GXh#p9uI1z8 zIhnjtc3-%^k%%)N@!tC3aH^uf4bd|$^`{>iXdbeO7%b^)b9fRk?9|db3}0F3dS>~B zxp}ko^Fm=hb;V0P&NK>dn2T*xhTbqp3EnxoLq(YW;*jcte)o)F;vQ2DFyPz=jB(52 zphNxH#0mTG`*Bxx;m4?>&xv10pT8HhKg(E0Gg$KF&jWcpm2$p%o8D*W}AogPeHxBGz`F2EQUBWS+w1|AqHa?dP z*_-z(T3vbFq7y1bw}0Si3Kn?*Nis9tMp zyz=VYrF2q3$D>*uO|8Bh>}ak>_RRumYiW3t;Vq@pKMFU6gEy8 ztk3DHUpKMWsGPGu4I^-Tos%HfY-Gqjrdm3~&}74C38RZdi?^y_wuR@$$FtKqq)(-s zyi6eXU(9znRZP}+%%^aVy~;2JWqw6*3@U2ay8A)rU{r$wx-KnCEmc_3VEn!=KD}4( z!WK@pOMHG&jorIWJQqpd+9QzNps_i`$>kN}j_Y@GnAcBy-lOPP>43H&_-WTdsH^F% z^BdZ8PCXv*J6E9`Qs+TmtCupI;4$PZdZ|B69cTBBvFpKz#ChmtmYFs~yz+YUE0IBg zw!7>~^3et^o_bY;X`L&f^Le!;WE2rBnj<_>#GaH1&fu z!0+a8uFDzN?-?)=UiV|3307z2U>TV4djo*Rqs$W_BvQ}w`vpI0@oo|+m~vNjMO`Eo ztY9wh{GiTSiy2{hN_~`YVs6Ru^{&KU^rbG+Y!qd5^{QVNYcRwkdD{k`5lF0x8bPWa zX^y$wnjP-6p+=9!xeihPu~n>ER%=%00DB6i$()~0T^n_7K+3~~6o=7h&x;Exi^RO? zD1J|RCE2cZyr$aa$mp^5;`qp@RL4nryz-UJ+zd%Y!k?aw$EfVf42_K%c%ZBJR@G-8 z_miA+1#{{7D&4UuI?}YO^u`UgJ4Z%*^tAKp5k)IC2pqw9@Q>Y#-ACtMStfF3hKQ6Y zFu8i4>uLm3m=3W!%{e!Cm&lm-mEH=wCJr0nsh7u}?YjQag%l$m<*+K~E~}WD$P`|y zWZk;a4RrCw<42J!t7{!^q!tg5+f3{oc*}b8!3K&Cpx?cv_PeaVcM`a`i{dvi&Chfh z4(4B`I>447=AXz6_*eRC@}&bi-THQ!mdC4a!bL@fY~ucrgGNJa7F&a3Q(3i@Vba)& z29T?;q&}F`1CzSIZ#&Vef7f-vPDPlMShnMTqOrg>Cw_VH-Rbx<4@=}2?7s+j6^PKR zCa?5-Fyc@)h>&^(_|zE-6Za3wDYn)zesPZURt@#2@AwqYViHhkx^24IH93+2v!!yR z`Ov`*q8P7F*p{s?+52_byO2%znY`wBOM3;8&2MX>@ayLt5V6Tet~OquxmBrlRI~iK z^Cf$M*gIH*%SFKob63}{E3#rxI)}S$r1z3`^lev3>DXn3nBcWDTC335B$=;CsZ1OD z8b0$(#~f1{MLcUYPq}_P`Gjl8{$j7oTsQ7-8)j>4;keew+PU{r+f&$BH*a{LT5>|v zeRqFWzX#vPEqTn69o6Oiju{qJbN&0fI<=2A24`)#%&FSf|0Yn!hiJigu>$LE4te-` R>D~D{X{fKy&KUzi{|{?s&wBs> literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-heap-l1-1-0.dll b/Scripts/api-ms-win-core-heap-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..2317f20ccf7c20b187f00421b3ee397e6f91344f GIT binary patch literal 19208 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-interlocked-l1-1-0.dll b/Scripts/api-ms-win-core-interlocked-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..d097fe800a24992b81aaf86a25c25686aa4b04ec GIT binary patch literal 18696 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 KU6-^71pOaYOBRIy literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-localization-l1-2-0.dll b/Scripts/api-ms-win-core-localization-l1-2-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..eb87605cedce2b3cac29718efc79ab44bc619071 GIT binary patch literal 21256 zcmeHv2{=_<`}aQQm}SVE@fafWKF3^So@I_mad6BWj$>*vMUhgWOcfbQks*~*Nh4*5 zN}4DX8Yn5LO!T+jD@-*>L-XYX~dd#%0J+H3vxecyX+Yh3q27zl#s z0H&uQs16*FpC0w^pZ~c6vf0HhutT-Xt>Sekt5$JGKmTxSD4FC-CIn->2q7UP3f7Z| zB}ar{{X?)uHV)Wek~dL_jg3X>XVohDtc_7v;{I6(7!flfL0Z6wkP$&W=I)lh z{$75F?rh6!jUmW884dl|t+Q@c_8yYJvZC3SP}5wqQgGy?p2wk(19FarAQo_#1tNxE z05BL{O%NCt51@*S4EW8Ioj;jN&t!Rkbkocgsp=3Gg5DzoJNx5R^9-9AkS}69?epiDYWSCY#m)-o*`>*)lcjM1u38| z4#sf2yz102T%{t2fzl#?+55F4)o0xAO)Zf;28h|=#wIV zBS0X)PJojD-2fQSCpiE+05U)hz*T@@0Cvzf4FG$99Do)84CtE~Kp4PTfI$Er&^JSX zNPud9`vAP4U#bAk0NVh{0J;HCpkJy0E&#~@rvbVEz5$4WzL^6=0u%x?0dRo6X##8o zI0euF@EriT<7mL7bPzqn05L*L5HsLgR%i*t1}KUH(BM))Kim)x#0&93{Ez^&3=)Kd zAYn)Z5{1M7jfz7OkR&7pEr+Bb8E6G03&}z9kOHI#DM8ABu5l0^Qh`(5_iHboaFG7(2CIZEu6rvb}Q^YI6O5Q<1kRd4~l1Qc)5q$^| zK@=-QiwFf0$sxob6}-}KbB#kHf*oSQDa2q?BFWrnUVCxIe0rwdaQ)xu&gK20?))d} z&X9?Jh_|(sg9C-^AL2W&xlp_yWgPtnY9PaeL=GlU))2$P3BE*{b}o`HNYb=#k=&F> z(Koc6zuM0RiSFv61-=|d_gxCWXvi4wwgKa`E#|o-1(9H%@t`fL4o&OCFV0(} z{_CLA7ML4yS|OEptqH+2+`FjKd5xbLi^z9@^k?EP2N-F>Zj!^P@^5 zqn@q}@%IA0%p!$Zsd>1OfuVyHm=6Xq6k4T)@`Y-&3+|U3^Kh^L!7cF*A$l)n{omx7 zhdY5Mp0^=rqAgf=G|gO;@l$bjftr#@5uv|mFU*}SvgmQSP`n_u@ZSEK^;0rWF~78c zCdhpVm!>q498#7QM&iL+#-&H)9FSTjYCT~w)kOoFD3qgB9eBq}IkI4T09|{Re02>^NTUZy0>bJqaku!t%ff-On+LJ~b@Az3k97YwK zIYADPJNRo1*@H84$Of_oX>;(`1e_zkOLU_@X1qfd;2Vq>AW<3Qs7uX7!W4ACk68G7 z4g@Gr9|a;q{!j?y3u^O+f*>NOIRx^7NI?A}RR;$C0Sr6?K~1w)0X`#Wxe^sP;OXF~ zUXK#h|G@&k$QfvcfZj!bV-WDwksNiPjg-Ps%V~l$82C@fPaXJRDC#&-sMiSrJqn^3 z0RpwH;ncQ<|7eo&;))0QZSP(`)EA z?LGxsGBdW`piC5K5hAexy+&F#GY^othXr>w2IL~+8H@}Sqz61)6twVKi|^_m-%|+8 z3uJyffoqWGdN@C`A>b2(#RsB@NGn3Xm4kk^W@c7G5HnpBqVT6bYD^N1hTsJ42?l1l zWV7T6HWVYeAVGTwhz8Io6pj^UW}ug6$Djr2A=rw6MVBVdZm`SiHV}BfuWkBzJ`$@ZaFMD(;wmA_Q!!pj`a5; z!U-q|+VMrvLzn~<2bc~h7IXp%1ywBl;3v+gc5*-CwStQnM%mnlo{Y(k>GV|$Da4L& zziO`KU3?ad194q1KKf$sVuRlwuojwVVV2QTKPT2HMZ9y%tdJw2XBxlvtn#YtolEzR z?4o-RZ+>dT@7aLbE7jm{)14VjUt*cc`)wtex(}~5xOhc;qBelU3EX~eMJ6hc9%Rc)C7#mhr|Vlv{5N0Y$bI(Z@Cz9&zEby|#9+&sD|U}G z%+`(t_20Slx&C?Vu;9IHqsNZB4o7Wz$BPE@8C8^kVg@5Z4~u{y6=A32qvPpLzbg1~ zB0OQwM=ZUcwDN=R-+6VYGe|^|P5|bMz;XoB1qB5cra9bb#7=Qs`5J#b_5OrkqqgS8$M>IemPrmehwl=wAMNSyc5fb~ z3=AgKWDRjCtbc#=f{A-(_SK?JEsox*c1xY@ap^o3mD_T2E(D#m>0ud}NPJ>z?Rz9_ ztJ5i^vt6}Hd+PadYt*eLZ*IOjiMEuzgnC$E z8rsU`ab)d{6lFHo{13a_#P*iAlQvTJCmvmOi<_@Yh>k@y zzH3hq+8^&5$eBtx(KaRNb2dQ83uL z;iGx7M9VCuMze{eJAGP~){BD}HMUopbA*++rWPep0+pU&`FTuw^9shu$Py z7x+VuL^)m8rD@)LcL$>~uJ`Ok>!Q1d&v|Zk3XQPwZJ=){I&~S^e^tn~kgy8af7Qu% zWk2eD;&@cV;e67I`S{bafI(BkW0!fa>&O%jIoa=QcgZP)wyWpe)#{XEQ+`F)*T8*X zXJVP1hJb!b-(=FEJw!nrjCae89^23jW2{MK>D9(VQPYWsnCr>UUpX;lotIDKO2K^} zTt^nUG?^$lOH2eXQX77^P%$)Y^<`k&Zeg!2(216C$l~5uu;z)@c-S6U+)L>I6&0Jp z#<)fIM-|2+w~L-z9*@`3gjM8m1Wz9=qMDDQ7ttG5RK*k36$$EU-iqE@Dr&HnnwAd{ zCN5yWJ4=Udch>T)Lp5tCsqpcgx5{M^gPo9ziqYA?fCCEv2PPZ;Z!sX4%wQ@5;&X>J z6;(hWA3T4l9OybrP=EuiVZeg3X~2Q2|1}Q$gSsh;mM)d>NS1-ylG(ahrELRO?rd@` z`&{!{F6Y=w22~@}X!y4Z<*9dH9>fKx39H`XUUFumw|017+8F7c|K+w-9C?%UWNi_X z7eo20)vHNrWu>-`u`ljB>#P#p+W#xVd!2!6wHj}J$bB7{=2kvk?3(LA_x?eUvS(I*PN2UC2(NgC@K^{c z(%`)i_~8}}7VJ*7&sdoEOQ&RvDR`rn@nOKz4Yv$28)<~ha}Ph9A}o(gJPfzgJcrqn zz(xW?@UZgt@%JK7h*54)J1B!^Wk;ikAr-i&wE!=5(UpG7vSGc_gpowmV7{lo~Svq zq})D*H6MTPSH8w_cgdv~%dk9C#>Z33dk;nIY(Eih6#Fp#$;V4$>c!1&#!o9Nbe^y9 zJ1BUpgdFblfj@I#N-dLI&=u(}8fBcAq{(+Td_DaIU;Eu9HU7$vm$ClXPm%45RCavE z1G{|b-0eAar`g>EXM0|Tdq59vC(ClKkhrB`ty6&4+1pyE$&ln`?Ub-Wjvjx`@}Z5_ zV5g$z2VjdCmDKfL?S(sU>7#&TwN%)MC( z+XyJk73M&gfg6RIrlW^3;6OuPzhx5SX(GZwM+f|dWSEPA`KMdLi=v~aRt)UlIT;!; z*`_*h*7u}SvtDF-tU8V(m1K?(k7K}NP5-yGXZbdl|zo3PrPxDcxSar@u6V_ z>yJCbint=lmMyl~apD`wb(F0x96j!o-yd3ESNkRAj5&E?^=tju+b@>z``;ZvEQ9zs1mJ4hzU6(l4H8EaJMn~;hCx?sH zIX%lm8yhLRk3T+jKLH=|y*P_|;En%a*-?edP4b-V#63ArJ{|qaCCyCK%>1xP%%Z;I zh11a8=mP?7&1!t^&oV^J_b6VjP&E=B;p7#BHat^XFW#1Yi+Lo8Jz5b zx#MHd?Z&sEMb7)3w`T4x5HiEKPP7;KvQSFY-zh5dH@zZjaE+6ywS5yN?Q3?c@DWAX zQ=f76c#o6XOzz*~AC9?BS9|Z9La$ir;c}L5+%kF<1CuYxVomB9Jxqxnde&72Z>`^* zj*RJMQDqJmj>C!du{%C{S@`XxDQAUu_OvaZ(v}8#@lAbM`ZE64GSah}cX#KBpJH>% ze}D8;vR~qo0LA*qKuF|3#Teh_&wPne=XbUT95=-&=RWNZ(|HJO^EB;f+u2+v@Rgms zyRk^860H|7?Vop`kMlTZt%faA*EJnDfq@b5_vkEt^Z6lRItUW}C-@uIfK_2Y;A$$c z7Q){+YElJ8lK-5y|5xmNq%f$u_lenlxh;W8%U)dS>%Wm>Cuv*J_DsN9ieseXScg>w z1;#FY!}!24i`P6;$YB4eY&Tf?F%&qo`O@1IMve(~y6pEUEn;_6q;?z{8}}7f_`Z2? zr^xF;>!QL&Nr&6JzZ$nQ-`!Ywx5|L-=wxY7hVR1_PfZ-ElJCA;VWK2co@}$$e#rnv z;akAoy>Q5mk1p_`uiLr~o*oiExa~_P_eZ944#D=d#(R&LK^CSyOJ!tzjvpMj#}IFE zbaMN#rKUX02}icSTO0iYl`CS)lmv0YChyMmNSf4NS9Cm5DH^Shi)zX1U6q(oNI;(v zVXOW=kynFildyE0o}|Ba6>PBk=^38{?0xLd*!#Dh@B;ScoFiet-hj^`I6fQUR!O?} zy>R^QIG*3pZ=qK);cquD5;$Wj_zEowN-C_v*NroBD-r)|SpQ%0-N9IM9!$OFhA~oq zHe6c~^`tGvZVjqhi4wLxcnSB(w#%E->y++u9Zd`NtaC=+vBq-S<~-Y^*XLYcxh_}u zg$OFSygqtt*WI_PP$PYp(^=@7cANFRci??yb8`Q{;O>A2agDDs#~758FvI)gq$EPW zef~ZWoukAy!PpmiQNa4po@aE!HR)fv=9mwJ%@a_6&qT6~DKMN0g z=VPAiPuk~w)}2;V9-K@{Zn1M3Iux22RIX)p|8q>k34u+XvZF`yWK|iW1U;K|M1#c= z-m~6PsBbqs{c`f{)-(OZ$0=%c);Gc=xuhdmwe8cwTulslE}lMJwZ^yUh{1GRjCkB( zUf5^IfNP^*(_snmyN1K^!}a54EeiL$@o`qta%NKQuCJX&OM7w--Cjw$6fZ+zSUM6Z z-jJ8jDC2mxIzT6-Fp^LkQpjD}aKiLG7ilULA5`^#u`SS@Bk(9!^waLHfRmkgO2itJ6)9g3ayLGP-D(wEMd{|d$Eni?WchM9sL3#>K zke&pgUKlL5e=aaV4gUTTH<^z;7sP)-%(b5}YGw>>2~Fgg4up5-Bh#!nc9=Go7cmBB z3)10$F^Cgh7v8;*!JYM7^yUY<9)*79;K_lt=c-`A2;-END1_U(Xhho@X!tp*`Kp4pd6>04rx$3DcT+RVGu)vc3=>=~_je@dUQW9(oUE5GX~9QPp7ay# zY46^uS$AGyc}&#GBNxVX8l7c6g-yS!Kl@H$gS^R8?kr;#^M)R-XU@|69(qL1OHvcN z8(($th^3!il0s@X>G+n%=n!>h?~2;O1Su0Z0WCFuUm0)-XkH*%N}b7j{xQqp_b)MM z=J5ttV7}ED9P3ApcHsRUi#y_` z9&|&eAxk$q*}G|)3aYND*~;{u=6yq28kaMg4;-}1e(~D)LYKy7rKIr=@^jI98@`{v z6}R=BcJkVw8#oE^b2VAap#<5JNj19o>w*_=Z$iDj@_MD4#jZwAqoR9Rty8;8%-TG5 z*(BJ;5QVkR7QFYZ=x1`z$~cCaqK}|s-@PJMi;?+gq8To}Ds#_=PXn^Vy(PzmKjvzl z^JyH~^MmWNfV5{goFE}Mzc}eoxC99nAY+&tYvhHO_yn9F{t?U_90#)8Jd({&L<}7o zEH~I~zA$*{g@l*>@TC_u076ri4ja9-Ey)xo=4H&JWq0CM=amCH%vBfQ{8ANB6&okV?^WJ6y_~q0u97k-0Y5IM?9n`EWRF*R0LH0od#=GXaj}$m^=P z`K`l%nhiN%XamSDYp*AyD_nYV;IP&M<&L5$Jh~OOp)r;%w2HSSvtYx9UULxwhxG z55RT~E!pq690cTt1hb2o&!9RaO$wtYripFV>qR}3!naj1Z?YJCxHSqL+i_!QN|i4D zUGlk)oXk)5EWPI>GM?m&mi_U%&aT05WQ*ewvGa$TpD$TrEpS(JBK<_@dpV)nkMe}g zp{abMt0o?=`h4WDQc1&hBJ*;s>P{^4XLv6Qb^(FEErZU0ovj$r3|Z zzO%@~b9w9Tm7n*q2w^Vy8Z;N3%*~kE53@1jBlB#nG^;C>|?9v&GCEY@s57%}vOLycn=;5ZO3~Y`a3X zSrNg;Ckmv56(W|bKg74Fgd)gWMGWF|fi)MU* zllYso^hzJHpB9&WSyJeqCXvxX$sQ~;H5_v&zrq3g$NuPC4nA`w-0Nk0@Q4g4_$No| z*gYxLGHcc#1T#K!Sa#=F7vX9{U*buQ=Ye@yU0YY!Ri#+i73T&uofESVWcM$7__T3b zhk59UvlaDZQ!oCnrCmo$liwcaG|KZjTjQU?aLXillYs8f4H5ANnBL= z@r_pJ$9|WvG*1oT?JtduT;JgkvoGn;gU%;9;c6eXPdV1un+9At!JXB)XX)b{-;MaR zZyHG*Pa~4@cieP!PP*Fgj4eGaPw`FdNW09vGaLQC7W2`ej!F53x394|+e7bkaMQ%F z{hIM8dYh!1-K-z>yfa|#V2kXRbc&XcR=<3^IxXac$UxF#Qx(tj;^uuS?qQ;OmD$8* zi6H~=<*CAo9*;Cq^i$;cI35zTGyOd5N4rdO3gYxec;lm1=RbE45VRH1%*qq>QQ?-+ z;*Z{;-e!Hxz2=jSsl(alFQ2dybmSiHS7_64U9D$;D;DEqy6TkQAhp2`eJCKNlmFi1 z#>_p8o0o?fon#1jb^m6sWbT288@L2MNjQN|jOq_&{nKU z{x!5{cSzcg_0#S=yrU5@FFl`Zt->;2i^A}vM0)Nl5AE$4&T^H`s{Ir{ta2xI{AjTY zr^WZJ?^b@;a?|i^&(|t<6`v$?1>z44^Tlm5uLpqt`_LBqPd&FM8h?Q6U2{A09R$nGC zk7}x7#V5b*kz2MEBDx%`6(SC@q^V=0^zH@?pDC92Hi+9E)74{Z5*Q?1-J7ahMm0epV!geugY3fSs+wa^5KYfk$&kUqE zay}?wffACwz1!kvso;L&+DpRK$aAZGhbMM(gfL*F#BaROq zJGVO;E_t}7PLt`h!Ly9=u5j2{I-$sz?e6POrtz%}QXcqq9wuY!Oq223MJWW|eeUs& z)$JKp`x~#9Zs;Izhpf0MIGG$*-%I#z(kLS$<;z7D6i=7okV+7BW+7E0uqoeYr=a-qStz ziL>7DhqfG_y=l_{p0UqvSg`Js?$dg^%p%O|&}Q-AYxzY-wZF!0JrJ-rx-_`+MgFA7 zcg^n1@tY+q2a<~~9Tq%AXOLKTCN57x6MJU)OYgT6;|<%qT$XceQqppcJQ{X_A(bPA z?*if2(mT1`?54SKH}19`yF0oy@%@WcVa&Z7DA^KBgvV93qNGb7UO>HrIL6|Pl@mnM z=%Fvi%}!4Akhc*6Nl|6-caAZaYt_HKd8a#}mfR{bUYCRtjr%5)BIl@8v;J`t+uEE> zJHl5ny~C;uB5f){j@zRhKM3~3Ua!rca#EFrZi!dAoH_N>Nc*5|*u%ok8*BUhdz>3Pdf+QlEw9#mV{6!8Gki#N znWpl^_I311qihAXYL7>mWrQD`-litXbm6i3lY8#zJ(Qj1T;PGz4Fbkj<^#r1MVzDt z@w%&I0QKopvH0op&r&+_>4ZA01#93m)Mg$yz#N!Q{x?4R5etcSkbn7f;@xSsA4I`t zyQ|lZn#x{Y;n>fMZoISdtgGnZG)!2_6N~b}-Hr_#3%{zNcqG2NWsI8U9;|yEFxv6@ z*oo!mP2FBK2i~h?%w-rGtWj;+C9t_W;!L!^@sfx35^2?(TxIpruB#hN>;<(5W~`a6 z(MLndR=9=fSFBESN|aJ4d{FlO#%0pe&!b#U$MA24@7yYr+Gdv*^OZ61oHPptE*7@4f~fFspIZOs#$jM*fNv&{jl*-1Tikyt zX7UGhFOCZT)rO4OP%&4M>G}JIvafIP4moq8ZjD2#MDo+ftcVQ~=^7E*8$XwjR_=~8u0=JgC)+Kd$ z6xIf=S1I~Yn=ByJEuOW0WH0Z{M_wcMi@PTWHa)Yf2`}e6UvPzvZ&WQ}m96$9A@V6| zh*iwTR`A&g7aOa@?i)Mk3?!nC-=0`ga!PRDjawqvE#m7U94c*=U+8P83k~geC2Vjj z?+^T*cCTDh*Hc&8<62Bb%8@2?aUGPj~TghsB#7B@aBHj&VHSQ(prVdF$p#)gxu zl{~iA!#?`TTCcbF^T$lOITj{hz#BXCdaB$0qVT`gIXJqU1-S0>?|m`6P`#P6|{}jL!c;&p430}=Az;ZCl&k8^c4{;J9G+GG# z^MrR|CU^TYLnK$7rYsr5=F1kH#QG2OxXrgq@G*j7* zbMmv@?b_b`WH^ryb@!9GKI^qC$((IAOe@mHT-clK+{InaId9Bmxod5xygqspI#v9O z&x*M4E7JLIRXU|bi7sY>pO2<@v?imwU*!(G3c&PnOVz&<+cD^!tbBl%O|?PCxFzuZ=$@P(Hp1@=EW zGvq?dv2RcGKbX`oZ@IdWoo8CFd0CVF>fM~HpFEDSbBKRpQRwof1;cxtj<+Vf`wml+ z%w_K!k@0IqsXV>-4ChOS9ze3CVjr418l+P{?D;A(xiP6RXlVl82GvoNr|cEJ9qgX? z1eVaxrDXI;RVEfl}8XcorG@UY-qoCE9!Vp|Z&fEUNUG@F`)D=?je^XCFouSb1$ z-*R4F@B)1ay^#a+S!=ovC*k-$nhMZMaPggRd^;T90<04{p5HB9uuTz;k1O8xf8t<) zJx*($>g})%(c=qMiQ7E(%H~^!c-s@&nGYT~$nFsS1NYVO7bARagt`K*ne*e1a7+}s z7A1b%elb*(T)A2yfU)%k)6Vhi#8W2cGI!RWRx4VW$}q<5$NhwGwnR5D>Tv!Uel>GZ zkbBA5UX z0R=NCK~O=0AcE=jfFOE2;eGd>-?{g_Z}wL^Qypq*daD0jUEO2icoafI5JU;+>sJV> z1!v^YSor_rzpEgdS>O^gR84nBuoh)}N6^~KI~Ws4BzO{W{uno0KmdV+am8bZApscg z0E~{A6~>?7j+bF#q8IrlT3(Z(F${x0zC>I)_{31abLrp`Ll(}d#}|3eg>*}AH!q~@ zl4j<*5ab?50lkiPaa>B9fP^p%6wHhZJpEECII}KXN28Dva!mn2NcIvT$q)<(G=>5d z3bcz0D2lWUI2P-EzgXrMvs?i0hcx8Ufq|fjl{_;9(W)(Ff-@*@y@LH$FJ*}CI1&!% zfT)Y;Mh)nj>PxaUz-yHu1{2*t!h&uXaDkLr*+ziX_-n5pl>Fc0|AiJ<>N}u2KpOzH zu>+!6e6poHCcwG_qFoJ$_Q$*xU12ffr~f4x600Bx>3c|dg!Y5KWFrx&>$g5DzG804NC12|#s# zo&rLF@)Cfo0EGg|0EB2p0eU=-k(5>koLn$W2IpkcRxQ!n~2Ae@Os{UcoSS;pm%_$9psBA2H^eV}BhX4>R*X>U=Nza|V$1t71PU|G?>nf0y=ihFKs!;MY3-CdU$wb2ldv-0;D{CJRsd zUFvVMYy$j$t>@1fw%$Zi2+mK_&yV2tUEmL?E18wg@>BXZR*#5Z(RwQrS6u%>3{npy ze=7tYl!SL9{YImu^dF1;Lfp54-z8dv;E55xk++!oP1*wU3t3C)c0_Ly{&!x%FY+v{ zbga}8q=ed(RuQBqxcjy!ZGDCGw?DSsKzCQf{E-9nMHg^d8cSRNkBn(D_{FgW!G+A_ ze32bHcDTEG0v^IF)dORT2#iINTtM1Uq%Jbvh`@44+W#K^=`Da-z-2B7ivCek)B~e9#nFKt zVD4Kj#3@0}>I=Dun?ecj`N!iqNI(I3B!~!kLjjN{kme2fL3kiJ0P=tcp!ns5GBBh7 z96MD&3Xs-l9uiQL0F)<%mQH{Wx&aUr;!0?IUqv(E_*yU4s{N4gRJnQZX7xLIG{@ptX@2NDBsnwnN^4 zC*%c6LQoOV=dZV)3@EJ$B>92!cPYUO9MY0VD};i7Jxy(5b&NzE1nwqh2H0YCW~$B4(fyfjgS;G@YINAi*|t69tOPG2#|}k zr$5qEkOuG^P|%O}`uVN?{yT+$T_E;t3+_Q&e!}mT4M8HHPav}hM2i4$XTNXSELtT5 z(NUHo1^)0@n3GUYKrngJM{2tDaRza-Oeh+PO!B5tkTgPpLSY$TI%+COW;6vi6$Beo z(@RpLC{bi(3KV7LW_T0Kxgv!HrbDBkOv-GEXb2WuQIB%<4xS~fA1`f1!ubbc%(XRPeoiK=608aNL^B3xio(K+55)V+2eQHwL%rSbFc~GZvVl=l5Sol)0rr5Rry!$H&@t6XH(jSKsgzCC z&%&(=Crh?om8@<&6y;;&VqkST`I;raij~`*^AjWEX!z3fb1zrln`ieGx%G*qsYxXt zh-ElCr#?EzU{1d$;0k#)%iyJX23OAnHfs9l!)52|iti;tlpb=|Vv8)M#)zzk_j7Rg zGM0qAczo>+wthyEZ~=`nle*B$BV-^K5VuG9!fa-I2Y+crwi&0P*eQ|Rslq2Z)f+Yz z(zU}J)Ag3zZ>=3KGZ9K0icMEtHEN*%293%gqv$}3 zP{DklN%@#5IVe~21~6^Q_S4GP+{afhBQxBTtZ+1H!G!pPDY;;d=+(jsA0Aoi1=5dc zd<^|qC0Tw=v5Ez@M(PVtn!rY|VWxhjZk)Cki4?d&R@RN^C*!|lm@;kzf7w7^ZzNSV zkVtS3aU%uGF26>^EElX27^Ms-0^3v5f=)?AMT0_78pB&)gC!oOh}-n-24P`gzq$dQ z_y>|nFgv2JC?#To-)@1XU1=_$KLT?>K>;p7eiz6kJZo3Kjx>&iOjM~CXz z&J7n-S2C%y*6ZP>$}LV`zs+ehVz0PMy~?mGH=8~oa5Jl<1zttO{FFn>37 zl=j2nR|PzeoZnAwJ;hG@`YBFBbe3N3gI~qys%SAONiKrJvHM54@89qqZD7|@b$hiV z(A7pv^d;$YJolO`xM^<_yMClg+1G2Sybr1Xij4sj>;8^nsEA!McBYmuT6+M7L#T+K zS`Ci)Td+bH7F_J~+{@MiP|h8XvGVo|0NA*UW6H1!7Aps1u~@}L9Q)3~F?;?N-I!no zL^lR@N)t14%OyZY{|+GkDKHhT`*NSP`Kt~6=~EEeGT~`?!(7P+i!V;`)=lE=#*!!B zJc;4G9VZ#l8WLISxkoInzDJgK^DX=01VYkB$4><}c^a>c7;~Bmsa@D=>lF3CaYp)5 zT|Qj{^{%%mUo__6THh}k1X5LPkBVVS$37ZaY~T6Ira2v_FSzcs4Gb~!Y@lk(Id=s* z-o#^`h1&=mz>2tzb?-E0SRUoD*p;}^6+SKU8P?Y>xU%NDnt1Mrt>yl^4yUr9y-H~v zs$J`uWM5MDH?W`Fzo*DTnM?CP|6FXw5j?jV+P&>YuX*6MDTdghgbLk}u&;YE=<0~i zU)s_pU6kCzb^!Zn*q+E&KetDC37Bx8rMCU5qoP-!)rY~z!@O?0pyIY*Xv@7Rf0g1p zF|Z}lxmQsFD9Y7`b+JFa9|c$rd0kZOl5%pYDzLmH7U$}ridXcIcEh{F(h72TC25?J zqPw)as=Okss;KILhw(ok;O$i-tzFd|_NW$R8F>zli^i$+0Yh?)Ct*x&3}^uF@-`cnl%)CxMN@!*eVWj~L7=#KVLYw+=PSA;`KhgQ>rUTM zxqGph>XOvQ>!J-_OnodnwYZaRCDc3m9%ZnYe{f+qp|VO|A{gxym7_;aKYLy&EOZ}C zrn(FOFLx2}=yCF5+zZ|s_NT^zofjN5db;Cc2NI{G+)-;e&|q}Ku0{OD6^V4qgCB^e zNg{@aW*7O6VU`52lAsL+D{l{PHxOpSXoiry2p~KXvEY@#u!=lZP7bRoF9*;}?i(wI zu>T~`{+Vx8Npx^p3%fV)rMh4+TBky-{5JFS5ZZ1}zV`i+%)$D+Zv$x$_XXKZxzVq^ zOXN7B;k-(3*~e=c zz8oj5>kpN+ezqER_|SFO_4Dl(XFaU>MRE2)4frl`9jk=UEoD=+OgXiqcd}HdW1UQG z$r9_SQ7NiR}dHWp$D`I|03l!n(X7g|k0$;eL+W^u@@TpQB- z0n3<6$u1hU;>kmz?4Q=ZptnkL7|eyu7qQF`2Jo4wov9h8{@1Z=+1`o3wB3MZFQAz9 z5^4byGl2DAoh2Tin95&6vBkL!(qWMP0;K*HzbH_UgX-oeF}<=k1dR&08lN}JvH^vL zvu~V3#*8;gKhQqQ@a6U^X>5*g+b;8zXu)lzYO=+vl|hjqIk9w9+TvjlUg;6HwSxYnwV@ zB^DUZ@h<#vZbyxOR_TKkDPiklReKS zMu%59F}XuvOI_y++mVj&lUzHeRg_n9oeioPcX$Jg)jm0A0uzJK7xDGOoq zv+d8gOhs7Ub{2FRpC!SVRc~mzt&`Rmp5W0selEoc7JCf&j_j--JwU@U%S@RvaiC4$ zw!Fx`jHzi)Ua3zzhxhZn9yZO%Y819=Jv^^_m#$-bSx31RW%gXYU!vy&iKlv2<#8QD z5_&S?rEz99mW+dFsgFKKkHP`_-Z{V-^N~HtRU?AQksrF)-_c&M^0%zkJ$l9f+M@5V zN_?G1Ve;TT>X93|EpV>QR6aEF2%4bd+3$em_V;6db_3ExmTc0W857)$o zwWalK+>@Avqp0Cys`xaUR*7mCGP3?UM|G_UtgwHZ8J7U`F8Cw#{^d;g2lQrL24R5S z0M8*fCI!J(Vak}JaLnQ8)xUz@EVo?T-|k+JStHJJWNpdJJ8K+lKTX3fga5BV{l7GK z2W`!oeDInRT1V;GtLn31Pue3aOi&dvq@b<-jO-=tS9T`U%G_tmj`w%1wWGLgieWcD z^=yYmzg=CKeJbw@K2%(3UHH_Yj?s;%xBXWV=&70y8}v_Dt$Aiva(r<3uupe%O@H8JF4K%7zVyVT+AP&{Pw5*L%&%RY)HzZPVbuF+ zxaH>Buv&Ua(hn0o6EZyw07RNA_~5R zTkFE{PFqo&^sAY>9usvzDinlcrG@s&BAshBk+V@sjBh)_Yn=nTsvIXjc2E= zQ=ksxc5PAP_ZJ{fFx--=yQ^I_G&j1tW+1naq*!ZuBS@G{ER#?$FBRzd}FKALld5?hx4+h)n#lr zd|TLaK4Zz^AlxVR3B-C~(B1yIz{EoI_cw8q@4@HHm=B1%_AN+FhsH9l2t8AR`0n@6 zGy|3yUYWZFaR!$vQeuHK$l((|vM2et#+d2lH4|YssFEDEC&8PRMbM*pu`-NO!R8Li z;pSS(Ue=19iUtNm2a*a=$Jok5)i%V@GQ`dihxd@f%gI>=D=MhLj?1+vP>fhG1pHt0Ry?$Y}M&e`s++I%gr+%%WqINO7 z%IT1Ajqs;C!Sr8`H#A1h_V&h{H1`^vxfML#8Kbzj&D-BqFOi)$?THMW`r5grQcokS_puws7r})-(P-ESjI@oh9>mnp01(%PQ{qZ zw0zdLsPlPu-oJ%GWs(_eLHxKExZ^ih#E;u*wrX+GxUhqbOdx*Tw(_kq0F@&DmKd!B zEC&285PK2$9((yYevCn4ZVO=-Wmpv}2iCxpVWn@2VaqH``djq-wu<*Z4jLC74M~mP zBgZpRdcF6SeWWG+)UX%Z7!}EgE#&~Lq#m>`jc9XQ?aU;qIfr^&$|d6>BqSZCd9FCAPFLUgv{Ch__u42=W223i&N$d`Q>%~WejGYl z{N?nk=Ud(y%CTS#n~vX^qfxje3BjzNSzFhRinzUgcJ^T6%*|BV6GC^jax@D3+oZO2 zPio#u3~7~(lnijW=rvUg>nhHTAAb=dazMlBbUt08axd3qx@v#jRIR3q!En%_C7*p8 z@Yx*}1015ra@DeZt5KttLJsJa0b~c8>*NHf`X?t(t9HwF=6sf;sEmRY5FdRNB?#E% zu7kyY4j^;Ds}WnGVrP<*hgFmmCFK<46kw$v!YVI6Iq$3!g6s#0rZv-oBw@Li5&s~Y1e}ef;1vbfWU*q!8uZnLfN^KyTk(pwc4tqmjTiQHV{KEN zwc#S#Z=5W;(EhyjBy3^TmNLO+#U(kyosvsegX$F4%LT*7H=qlf>-|JjgM=arW`X_h(MaZ8?~l>*pzA%gT5?KK6F={8d~4A&7Z+eW4B1O*-<#KI zM)RK;zuxxZPI=3l`E9h1^<(T-i3bEV-ZYEUp)KQmTav__0|E|#0OjnL0uGFp$d(rf zLjTlQaLoR{1vx-acoEsweMh$6k1Bu1I2b`UIS`P*DkGr@#YI*TVgGRq{<8?hD`t1| z2+x}91E1+2pZ-B!``eYFLal`?xlOG$E$Ps=jQO_LC&s(&pPR}BlyI2 zDVx0wyJ-hxBnveqxh`ZI1sEFpuA%Ae>}oo|A9UhQO_Wh}8STTi{XM>%CpILui>Z&k z{GyOz*Uh)h@O|ZaneNy+2lWp}t0ni4S|zJC>J3cj88&iyShw)j^If-bwIhD;yeNuM z=-rl|m$bb^BKl5u<>?`GjoZD-)y<8~2gT?eqG(3HGLJ>GDH^loU$NXelmGbnAqIo6 zo>={E){8esir*gck*0ETxmmq_Yq~J6v+e-*YJP(9?X~jJJ_k&4d_3I36T9KNNdik~ zHvrJC5B_bC;rnX-FLCG(Lc>2qFMboaMs|`cZ3F0jZ+kmoB-_c=t5fa7(X9{KQ@O7H zs|W||7Q}YJ5{UC63Mom;$^W|$?ssI9;Ft{LsW6l=NpQ?@I3{5^WFv!yV`5;nrD1~t z#ex0Z>5RFNp{zT>Em&6D+)CCR?|}>PBguG?{9%pd>J+d7zZ`~d#U3+fu!o8Ob~hnA z@*=>#L1gC~vhNDnXN3nlpGc4lhVLgBL6bpbgPSyNXSQzVb&lBZTJw8CpXf45$;lrS zzOI)_PGTDxY`EKy*gT+6^dzSCDL-_jOOa4E6cv#aHbilM^3B6Lru;m(>?TKH?uqz9 zR|{QF+5z=V{D~jnSk7iujr<49Rf6k=^0K_+g%aCHDZ^R%+EZ4gS6N{1s4rcj;5!%G zy*`@mM?^@+S>&^xTc2wJtZv9ebbV9c1u{4AJ}4%o9fqm zL0}6vvv<*hr;U-FhJnTB&(;z3-8kp-d$RN6MhjVW(%jBhdLN*^r5Cq@OMT=9pJ4aS zISOIv8=AKp_>7x5#w*gJJ_#8a9t>DBkRKJgwbLr%SZqdj*Aum1#dn*|Syx)>`&=z% zPwG0d>hUSh?Q-!Sm18@fhQy}tyXj~b+tl!kDIq>h`c3uQyW;n1wtLU#a!{fQL_CA< znwXvMrLs-lG5gBWWIBw>EcWI@hRGviT6CREp##FU;X-0cS6VCL1B&?uV;}3wyC&qe z9Funr;@2ok!M6yFXbFlQh6mQX0R9JiE9mXZSv)cGGLll{0GkR_C7&Jz>D9t$%P_s$JP}vxXKnSAdna$u_+~ zWSa#=hEGHn=e@^`CyvnU6b;fTq4s%s|7M?X>dBBBSTctgOy&?;m=7lX({Q~Q-uQ)E zzhbtKNk(yk{cQA0p^CMXSP%|H{m;W5vddE(I!de%C1&7aPIyXOV<@eM(A**FD9H%d z4tp%VO<^%D6>M_&O(% z?6%ZD3Sa=X|%l8m;HOKwHY6n)T+={X+29U?FokM#K<|iOdYRh^keQch`7kvyXZ~X>&MCM z_STG4{DicSah)KZ%gxXzXenO&F3lVF+pgx zjGQb%Le-o6wi)b|yHx!}U*_%n*TPjzH#}N=`eueF!s~Apo)#ULyFBJ=ZAU90MMcRQ-{PMwO_a?BDc zQ(@tpk&TGKKPsy69lX{4zI6vgFoJbNgf`tBL+71La9DTw{AbD+foJ5lh<~;zll^jj z=!krst8?lTJB?S9?Wa7B#((v3je2%t3&Sz7e$~;nTY}s&b_)7mOV7#PG#|D5q|edt zeE+T&>2rLaR34s~zL`gVGA_6NH1|15tv$6h(P=^|m>SU`_tDwuhDbLDQI;Jts&=8- zLB-SuSq^Yq!WFE#o%)bjKQ;PB$DM+X@!fkSUTh4a>)S?35u(LCE;r{V)K9*E`i8MI zxrrNQ@%rH-9|{dhW_yW|IA20oQOxZEx>D7;(VMp)lB4YjMHZ=2Fwg615dYPfk`AXl1wDU8`yGJZ^4% zYR)PT_+A}J&Zy6A=gg^tvOKp0%N%OXJ=NKiY##I=tLui%fOoH5V`ndX^>f=xlaEXd z+ss~N@UK;oy?oc6N@koX(_HcKIGs3ecU7b!KkcQ*N>A=NC-jo`8?u1`=Mjh)H!co3 z3*SwY9u&O1qbrR#y)gQe{yh5pvyi^>;|V22g>UiVg>NYk_P=uQ2k869A5UampWc*r zBp92;sp(V_Mth;CQ@gmX?v4b zzZaJzO6AmBw~15zg|o!w12ZvgS>5V|?<%MYXA5X9X+A1U z!0Kg;xk^6wNsExWG(5BRyjaxUF1|bo`SO=d(h(^o`v+JAJa(o&57_46$fN+~#n2gWFSsMxiG25r*Fwk=s| z@0s>VJ-?axX=?iRw3MAigNn3?9*j413JuLK%u;O(3o0(BZwLzbvXgz#8=@XB6B2uV zBl4`0PkJDkQ-b1o!{uv&xf&>6JG-ul)4tM7dd&s5^uO#)O516cE<9Aq_l1EVyLo3z zNS)!KPe*EXp3PSd&u5X*B(RX{v@mh+&-(A39%PHsgW3D{rC;e< zUL8uWI&o^2_d;e&BOG%jH>M7bsr_3V??3y7%+%Uy;TtkJB_%~^1#NjfX>COvU92R$ zZqZ*C`q5vqZg`9dE|>(qK+^`_^82nFZoslL1r^l0S1th-;$m5v`oXI53b3-{ zasu{S0!)H8e4l56)mbTcJxu>i00`qD^F)Y(Vsr4fi?xl5xv_g$kX)q|bt$l51#@}l z$HJ^NlOCo;>Z3UZT(Xv~X|gas>ASEwQYFAta*M7N_w@yBM~EP z?XE!c%FB~t{8Ytn=h#bLvO2F%OzM*8sWShZFEFN_q~HDOVfJ*^ZE9nZ07Kk* z>Msc$hql_)o+*o}=zht*&sFTP>v7COIIwRNPe%703biR4+hvgbI-|)~cxpC~Gt52k zBOkv_$)@PFU!Jx3D@Wf7=WxCHqDrt(?lo3;!pndn_DE-=gI3p8(RYs3;*6hjM$cR2 zUfx*~F2~d#hi)AkxE6py;YQItUiw?_V$ygs59OYDIGh*gg6T$=oO@>`#wg`@sP}qB zckvmMrx(9+zbeU{7LeeJEY*>PvhUA+&H@`KW2$j5SG`e_oqTX*P7jweOT)BN>martme{|W&V zjM$hiIOZ-K(+0;>P_F(}*9AKj;h5;$$p6H~0^6K!WzeSUy9BZh?zq^OD&12TB{r77 z((=KGgKQ8nqjbvOL*5a9({MV~asO_rvDSw}uFx!Kv?JK*@eEXKqGn9lwPuZq% z!J?K&Ci#!QNZ>mwEd6D&lG`cAZCnD{-?Mw5-G-uyqjWZ#7wXKIos4%yiTg=-mDeYp zJ}F{9;N1P>9QhILzE5Tujb~dF_&N{!o@_KdKzcdvD6sK_zK^I1x6!)ve#tI<*!(aL zvEsUrE|maojDd*ZEq(o1qx*)pkF&r=*SgO)PV5+bb^JZc!}{!}{zC1H^NG%zhr;B8 Pgl)qbCp$74YM}oE)Srsl literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-namedpipe-l1-1-0.dll b/Scripts/api-ms-win-core-namedpipe-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..fa97b0688b4e55434364ea0c20f29c63800d4d40 GIT binary patch literal 18696 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-processenvironment-l1-1-0.dll b/Scripts/api-ms-win-core-processenvironment-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..dee52aa0ee44733784bf6f47b915a04918ae5442 GIT binary patch literal 19720 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

+g-HjBtycIFy=qeS~V= z?KeIg)slm6skcU3CQ;(JRV+(7_l6Bo_s52sYUWKw1drXqIB<(QDZ4l7pD533pA#?W zRPMgeN^w!@({+(1e}-YESRKyno9PYCn=|OF=I@=KNUy1tTOW>cjVm!A9XWMQF)DHw zOrp390Izfr@Mt~dL^&6{HSAByg54J!G+LTW(LGsjqhej3AF#px2hpHxvqnKnt1X&`1y5mBW;2&4wmc=)#A zjbdq=tNx=ir!*d~_dmpWtc(zD|C-~#*cXKZgu=U#?z~a@iAl=rJ>f1C7yYdFmDL2u z4y>d5nn@HNiIlY+WP_bP_U-ffa;weV0Bdo7}VTp6HYIdabW9agrK(Z%|aw>yj#JGr6^L;~Rr+C3WS3x+vE&j)Hx+ zSkmp)n@`fXqi!!j*d_pB&M*@h888UMH#7x|0=HH0^-Clne@%Fp&}gu5NQPM{X}+&Z z)*#Rn3xa|FyPSq3yKG;2vF5i$Q?j4rc&Hu6hL)>ezAp{0TQ0j)ORjvzZ z|A1wTCrKV!_F{*|MKGTwp3vH4JB^jXmWxr$An)E&0Q*>W%J(I?k2z6|;%!wCpJEc$2MjsnKLUdG&hx zycrvzB#BZIch<-ODxNnZ<{wjw+9xq(`^{Uq`qBy65?g`~bAIHWvAOHlA^6Rer?WV< zL98am+g`8Os&npHiKG4CVWhsEto!W1={qD`$mh~*%-D;7iHc&W##TvYMtoZC!*|8= ztfDk{4-`^0{-C;H%8*ER)q_rWY4<232UQ}TM;Q_O2PA-6#V7lE#vn>15N zjHwpEj2Lr`ZQ@2p2)%EE+M8d7l{jQNY(KECkjn_={Gq$VkCs@b_)1!qqxC64iFG!# zTHTK{XI-;Tjvdd-m@>#b7k5od6T z%EJ)vp=DmB^V0lPZDh=ST6vma?szQU2&3)bc+sbEL*`RHIo~YVWwtd@2y7k6))ou6 zmX)5}w(tI7fzu4GM`nsoC;KPT2TEUx+zjy?JoSb>_C0%|@P*yofyWK8vU!h2w`kmh zc6b@~cI|GfUpvo8*wOIzLdWs11v%H|{x6NK-e1Jgbn#qyP?q1l^^Xi}s*-!g z*Bi))olLf{v!)+INqq{;$bdt3y>)`~=XcyaR68kfXvfDs%vFCZ^cF|uEc|4ZXNf0w^@ap`Kkin(v(zZv>@J4H6 zqdE=`t0iU?c_Pp9FjRm3aJUB1C1_&%ZI0sFRdB-M`^xwPK<{IJhTgwi3IBlJ%*!AQ z&>P@61SjN>u~i72kO3#`i)Z^4{1$nadj9S11&KN46noLe!m?AQ;f}LZ7#aM34C?=- zwL8!?^P!Y$t|&dl!Dn@+q8@g|SeYTJWr$l`g6T0Qx*B8C>t*h+7N-V#)jJ?>ne$^T za|gF-jW}F72Ahy*)405K|+K>9iEB`;10rY}O1~oX8xT*caFz-~9Bz z8%o(E)U*8(!h&I+-hUp8&Xr;KKs6F}d98VV+Gbipc72h`5kKi0R*cWRTs7Hq_VR0v zP;uhsI2zZ6*boG! z;Py+=cvlw$2Q3?8-vC?AJM{~`j}`C$iwPO6yRc^}hMxpu3U_;m4M zae2xpPOml%-e5k`4BbtsOWnG)<8v>!pB*hdPE@Ejzp+J#RWy=L-8yxPvw<$#<=WaR zGr!iOI^W`B1mX+Uz`m0@teZGn3j_svbe~B+yEJRmA$8|IF5XmB!bsTN`MLdc`A}|t zyJ~1df*6sKWhzpj=`g8T%=TP$pvIn}NYA>EB20NxrQr-~=$8~+P|eq2tJYMZHs6MP zo?WayNDb*TPU-by0^?_^+P&+dZ7J?(%UGT~P*oOvqPFm01m}ayU6=?#S=@2zkV2PK zk*31wo$Ug5U+`MA8qoSQze4GK%YD)fv7@!gfs zG#!=^UY)y!>@i=ahuV`b>2!Y!SY zqAhil{B0Hd6pV}rPDEvbo~ezQihYE$b%cYnC*Bu_$KkBQ734Kw=jGZ+1U(ikK?{ZB z1%I)l@Y8-mkzhRkZ(TcZe8eX-Dtz@<8H8xjBm^WHX?9S5Hmnl;iq}Ho@vBdI?NV08 zExqqcvY&@h*!kh^e7m*qmoDGT zOdiL_$!p(c+)nsbxJg`MyO>^C&<1UUT=viljHEK{hs=7ttKGBc8HHQa38R?1{HPY$ut$o4-bT}*}cJ<&*TqOv(Z?&Owh+Z|732^P$w!XICv`J^qr4}D%4ZE zX7Zh*Ul9afnDk(_o69+*U(UAMT^v-z_lVA^SY*xog^L&2-ml+42v9oCcH2bJuB)m} zb25srgXzMf;^5;?8=}MG#La6T_^NNe{VF?su-!3BqKG7H43m(;EAN#OOG2&zNh}MN zoc51-4!_>TSY^j<@Y5-c@v@y#U_po(Y%$1#Acwr15?0>%4_0is?)t%6 zqK`!wWm-eMr>XKS+WG^lZ3V<<$+qIQGpa>kFnO3^{tUHEvl|P&eeR4@g=dD)Ib$7K z!6I$>I0>3Q_k6QE^5@DJv3d%;N&NMhXNNK$HuOK_nwN7*&E3jGe^|LvZILc?bK66cZOMffBqhYjopdS2qowC~F<^q*CflKY_R|wf|^jF2NJZTGVWb8L3 zbj6A8+_9hOYf+E+6rZ4V1@qLoo=j%uyE{C-U}yD?^}l3)w8ODXGwzJGoPhH6_eCYm zE@in=pY@;1ze{=kZp|g3ng{mbY5d=eFElr9K*f+0TE+H8#O}{JMlZE(M#x=#hiX@} zC68J4J==6M^NnQ>KF$@JQMuH;eRr^+4<-rntV~Wc0!tEP0BJPKx+d><3CzPJf%m|6 zuuNnXdL$bm@F+AAOgGqdr83y{B8QiLyX&&Y@KRM>M5Oz_5Rj@cyukwiW-z8;qCyQ&FQa0XlSHQ6z@zCA)k=&~={UMJk&SQINeH;gC zt!hqhdGBDczK&!3u1A$*a?E;3r&+E>SC!ei&d+Kp83F6!{7g;ME*^EVIrm%`r92T!GBy=%#%J|NhwQ=)Y&xI@aV z|F!nbtcZ5m9g-m)7yRE;!ukqx)0s~qg!gE<7L?OuDGjZ?Oj8%EpQm&6LO8r-?~>2% z27Gp>#Q=v0dAn-azBMQjOCbl;>HxBn-E~sBRKvrA1uFfry(M38$eK7gllgOwE(BysXMd06p>u*%cV?y;8yA;&R-`Po?kq7d%s^vQo; zh?s1s(y)>=toZK_5&s~Y2%L?j;1v=avRJia4d&`Xz_>SSO00Uy;Z*LrRH4n@%pEEp z?A8(-)m~Se?|R&R5Vo@E$eCfaSt~ionNv!07SStYP!#>)8@|ijh1WwSd`A_{){PVQ zwnri3dT+4osnW!~NxW>q>d&=J2F3j=uCSdPk@y@mXC` zb~~H4Q;*6>9@my!d%oBt#MpH68mgh*zN>q9w;bp^8)s5?hWdWT?z@{g4ya~ziE6%l z`c*#1p`XXi_7ex5w zhuq4`vNxSrAK%$uQ!tJ?>wUY1t+lx|MU>Vlj_Tz%##iyI3Z|^(jn*#j$_F0rr8A1U zn`GF}e4%Bsa%yj&G=-~2OPz$v5g~4O{ZURf-cY4m>*V4C_n4Ig`g%ua^~2rSd`oCI z3eavC{$r3~WjFtqIP@o>;UA(Ge+XQYPm(Mh1L%Kme=B{m*wxFwSK~m2%e}6=wb%c< z2nXyI#CE|Ji2EW6DN5ty{#^+78`(rSA)h=desn@MoRA48q%VhTWKeKI0<5w0*+3%L zvA}K zG2q-F`Q#k=+!gtp6&{>?B0@6!JU_t*iUcAXoWyAd3-Q?N>`Bq}mbV2z)8wBd9r`H$ zO+xBWHtYCUQ+HEV>!^Ii!-V=ryijAGLg<Uv(DZoJl?I zWu@;&J*uhBoAnV+;%HUTD!<2ADS4KxQJa!yFx8;Vx?9KYdR}cBNj$;yc=O@xyW7`WRqfemRhk#n zdY*41Cu2axy+_SEdX2*>&z-tNF!bh_FTYz{p8WDSv)*Cvb2R~bC~q1hZ(XZ7d4orw zKXwi&Bz;5sRuhkDEBkcyk+{!-CdMftYeviCB3*iIV)iHH_xC;22v>Nke%iLi+A#1+ zB__Ksjb$L$Zxb%{lTuReqllyUq0PC+;}7XPH6-q3N_8nYZ_v`gmhv%EU$sBd zB?TSVG_IG!g?_KpN8wj@WwCP z`cAz2gs5&|s=-}EN@MyIn*>2q%vMsz z@ogF$T_4;}U-1{8KO=m81BS!ogSOJ~ho;;m^d@G;eEug%Tbj1|ZjK z<&h@3C;B4Ri?AL^2s9Z$>c2dCNJ@F^Bhez}U9WBpU77So=XixTnPUmICmdT-aoM}C z>~}C4rkal(?KSxE?lDRR1)h!7j0YU~~-XO^H=DX;fPP8Zl@TPxU7o+*x>@IBju$PmxmX=?Y z+BhZsRBEGtLXdWP?F-ugopQ7$lG3@RsyL)+cza59hbFu~|4isRZlkNz3af=t#>eC@TNO&N&27Y*@E@DoT38x2-t#W3s`wF3vc^d-o$s^qcA)x zKKPGkY#06Rf92O!@GxACVo6cufB6}6=-qr=z=6#~Tju^UT8NbN>D4xW6Dju_*Ty}s zMxNi`E9o+`#zqW{<H@19^=-JNBc*?hg+t=AJ1vc83LE;;_v zu;*ukW-%UNKUM;#K*|{tpFNgd)ox#+_%vo5B2G4>=$L6)^)ely+~61Y&i4xHpx%z@ z9+NL2<9Y4X$KPy~pvBG%m{aaQx0_mFGMc;US#GELgsk4hW3!KZ8cGq({4`n7ou4mX zY14Dt#C`-pVIgR?28-C2|SO>WG_{npSKWhRbyvM~wx2Nh>GkKOEg-@X+JHG%bn1=YJ> zp~?=XJBeRD_XYhV>?m%d*cZDqvR}`Qr^#LNa?g9{p!Mu^SFUeH>bF3zxWOA6>Gq3` zsJvXaaf^3;tU&O!BPGS^^Ksh`24+N;2lqWWGRN~-`Tl{~mNMFd$)ybioTt$`iS=jW z4+|>upA{MRdHG?sX@|Fy2-8*>6^F>;EtQlhOncZbdLCoBm3N=fFfaZ_Pv^0o>FtR# zPt>;147(9?1gSj-sw{a!8(u$wh9|I8rCF*U@P^ToACDWI_%KA+;kh|9sv_amF`APq zmtMBqx=*Sjbn?vBCn0#_KXL7muvMvX8E9p&%iX#wT#fo^j`Z_=kL6@o#ot|#wG|Wi z(0bB*V10dc#lwR&$8?I@y4Pu&Jx-pJ$SYy-g>PRX;!K9UW8dYb$a38jIOBBo^dmj> zLzY|a74_Y)8x0t8Xzm??uYBovYW9ht$<5+fKJPkZ*~{II6f)Bcg_a5f(==k-{k1z3 zc&RTAC_cRHo<2m}ZOjTjIQK!o_{vJa7&`w^kZn6k@az1-*XR7tU!Q*#(#d~2p#;Ll zI1mej709RbuqwcxSYrPZzx`wnX|dOub0l{j-KB-=zn$dk>`AKGgWS^ zBOFPCrsF+A{&MG;^qQR<^Y6_@DH;2veY(fxE1c6T&ybvfP|G>M$%;pmVbK^TW9cqHFw}~SmvI~9xOa51Y5T`6)y-Ha;D=U!b=1nc@PP;#hT>FWBo$Vys?r#FnT& zGne!!JsA&$fFGj5zx-P=_PZ7AxOY9c{O}WEo#}P00%CXCH{~!x>L*Meht;>i&aM2@ z=8?Oso!6`TQB}Sc@bXc7r!=>bt0rf_NHKTK9osVbyN|Sbi^!q0%4r)5I4!KH;(=e9pG9oM z^Xhl!Q=`&~X3KEpRPSfzy(5HEpxE$a(P$`UfZMD9yg_95_8ojgl=yK8sq^Ak3t?E6nX1{9G{ zkzgBl)55a-Nzs4o;-FZB7A)OY_I*)np#IUGuTF|%SACp}sh-^vOuec9oS`tG8BS;{ zO}GRn)c-AR_m2ypKmGxkx$WW#2&bs1AT6&eXCSSspr?3@3s=Khq5g_1?T12f>~*k^&k^EEt3Z*D@`x`>-ki_vI9noR<=C@b?5b3WN?9 z4{m@(CfJ&l1zR?>-vxje9(V@-;|3D(90^VYg9RgaW}jXxuye+ZTtIPEbtD$-U@o8h zSXi|d(!$i_YAE(mkD{e#-ktG3b$MZv#-MI%Mzmiei6f%*(U4C&q_6%Jl)j#dZ+M*J%xTF)kn=0@6lC6(d_F^!aDQ?O}!g)uIKPbdQ^7a z?R7J{-tFPZ1PvS3JG&5l)2$^yrn#=S2m>haYWT@W_3=SCdQL!2!r zTW$H^n?pVz!n}|E(Vj$yXKf1Ow=1S&4zn5fpuIZ!Un;j02c5IAd;e(rHR#zG2lne% z(dzx->tCFB+!b@MOf}<`T46)hB(na5zxvt4HCHjJ9QTvcjqHk!62T&HGkvU6yp zQig?`RYm(`r?82dL~Iasd9Cj#!7JOt8kRCm@f6J}6>{pbBy#lKnbzVr$@WpoO)^hq z_fK!l5EUQ$}|Y_+ewQ(F+BQuckXkKaVt?9}AFjtkr&C S*YI?!?wPD{msr0W(EkDFW+}h` literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-processthreads-l1-1-0.dll b/Scripts/api-ms-win-core-processthreads-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..2b90f9f8d4009f5d6e52223f47ba6fa1e9bc6b13 GIT binary patch literal 20744 zcmeHu2|QKZ*Z;YLIaA6!Ttg%-=b9B|9wPIc%EdKgxLns*8E#QTDk)eJ7vJ||lXyjD3<5Q#caG~F=Zg4$-$vw#xy-GjgXfBat=fw{Q@ zrURq{NKXI|`^?kN)vZ-B5XA!sw8y@1XDdI*St8-f%7Z2?39 zR08NRAR!(Ias(6!C=bwGK&-srnE??1B?7tzh@KCE)&mLvR1D|=pl^UA_#tQ$pin^R zfX)KC3+O!{3>cRzp#L>M9{~vgolOBn0m=h31c(vnD+S0EP%@w^fL;UQ2Ra)A3IUW0 z=sKWDKp3F&CO{#8jsdz3Xc~|a&^rjwVL-KjMgS=Ty&VAU0CW=2OF*(fXGcH>0W|{} z1+)_AssYFo&_O__0bK_)2#6j$1N99d0rH_CI*1-(fEXbrfR8KyPFNu}h#f!$C$t>m zf>uB)A#R8V;)VDienXMk_cGvxo{%{1(Cf-1iX6?))$AxVPQFUUtdTUaL5FUnR;!=hd}Zt z_$n&ME#d!I46+R(knAD6dkDDEPmO15f9PWW8_D*w3Rn^Rh-88dO~0j0f2f<0x|pRO z_GcYH?M#axCKf==c({49YvCz;Cyl!uz{|~QYR`6UEXlzZ!lgPmV z#{M3}Me}ND1t`yt^Zc}4%$&cT8>Sy_JJWZ*>Zis!MB?J9@tb;Me{Zrk-q$;V_I_t% z{$_IhbyM>Ig8%Gj*bsdP{tE!~Qw^1|^d&9gEnNOW&`iIXiut!{L$n3}3f|3P3;AWO zWiWvhK3k*h;o%KNAlxR`z;P$|aUJZ@WKN{lr;fl)tH; zXM>64=3^KPbo3_^7QLF^HJIlwv6>}(>);?@e(p={??<+Es5jZo%ZB(r^QTg4Tj<8 z2J_6BIY6BlGy2WLz=9gTZvt6a>sd>p-gB0To;ln1F2LOSt4%1?&;8dtod9=Ns@p|9 zfIsX4PIIxG3n)`#N;$$zY)AFWi|6YlA|fK(T|Ge=I9;>-Kx`)gQ{8LG1@I1n_>&gz zNx%wJ-d`UGS||uy$LJs1B7j#&3ypu`GlBTg2-H#Umk92+^oT|&0hS$P4Q&Je^&u;8 zWek}^W}s{g{u_X6>QRS&_iZLRU%NeG}V0gN`a2XzDkz}QjWfG6YyT7q~B=<~0SpB!kd4J7%3^MaHhT8TQ6)KLfl z|EW&|;xd}v=CduSPfXQf?!8k>GjH&B`p=B91?W!%5`)2eA}@Ms5O0C!`0>4;0h-K= ztvl!w3N)f}%)wJrHJh;ms_kLGn+*rG)baGA4i%&YA|?d%tKBOAcwM&0#ndeVG8P04ho4tBDoZSwhc_5 zklMAIPCcP%-T<@CD~6y0DumKBLfN9}xsbNjI4+oz9uye4nCx2`9MX2>CF5ZQDstb$- zA7Z}%jD@Z?EX>1-Q-RfCRh+7_nlkJJifW6Ba7@+TqS-Q-nW`BJ7fRb)7bgX;nkfnU z>v{)x5l9$4YkiEqwb@#ng1#zN5mr&cs^D-6xK*(D%mWGj@`0=gq!4d60!%@OEgoP5 z9fYDF*nvGDn2{6&0xHrKnK~xDvstH9O{$g>7h`;$PtWyLF`rCy@%H!aU)1iX$h_!2 ztd5|&Gkim5Oz;bx>Oq@AH1Ees`rD{>t!~G&&ks4>uo+NtJN?RIMReqt8|v8IVKxzS z;ax(XH|}RvdU@wLGcKuhMMccH6s2_I=qAfD)(U>}!KfEUc9`08=W&;pcIb0*JYG?U z?_r(v<_Zy&GrFr}WYo3w^8u~8AxEEQCJ@e>Zdgi03hy6Za)4JoC$gj0k zx3)~boMu8o;%Hu&J9>q<(x-=31_8`(wWdR+&&pI>Q$EWM+fe(9pf|xLuyKxIj((i3 z7nvNeR$ktXj!N>X9Z3&t3zp`2Y6;Y!ZV4!1{6tPZW&V=S)h_~G@ZiQ;Fd zkgZxKI>PCD9G~)QYQNdmuZB57*PZ!tyCx}wMPB@-YmVqj&b@y&kMmuwb%0IGP~!w2 z)47k{TgyD*U0Z5937N5LU9O|$cFTJWkE^kY7-CF6*RAAj+S}dH9+(^H&2j%m>uu&H zfMRa}ighla7$SV9oV}S<->oiy;SeHx$*95Me+yQK!=f{jo`2q20Lr-&FxK9l{s0^2 zaZD9f10Vt8a5&`|99t;DF}wd3-B@83s%|V?=uPGpR&#)i`VAoeB`_6Bf4k4o^xc;E zcshi#N`6vNKXv+($;obGKw%U6;Jz`kM}?l8LF) zPG5>{2sB(9HsvuB)4Z_R&N-^v=>zs+?MbG3`kfD?P6Df&F1VyZvc5rs5|h z+lLHwi!QIct|?V8Y-hEv%`rU}+M|+rSN+}^R{0m`{(7#X`*xRDs`6^b_fN%UA0Y5+ zqTE{=dn^LBjIqR)Bvg%H8l2K4l zSA!L0aClb_b%L@7){Wo}W0e#LDp2MPNJXO-0b=Fu=eZfPr!P|4#@Aj2W0R0KRRo8ded91ttvBFwkiZpa2G% z!2kv4$^Zk`|7#fd8`T_eaRag5mEeYtfVd*&1!Nkhn>Z#ZkcN+nUbN&dG=kp&PaaN!focf`{&t%J=sMihWIZ_W2pMciUJ`sC)0D3VMj?w86pr58qe9!%&LlsbJZG2?na17F9OJ5Qy|({aX#FpF4v1wnO-{5$&tdKf!*5KT8^ z3uMCFO6mbd)ICVt@fMyD_MFnc{p9I>!@~x^!j?R3rd%aMG3kIW;9%AjgUZ9KE za{K)&pKr&wIiB^dCGY0HAfKb~=6lao9W(Jx67*Qvo;m*38I1A7s8{JGlcd7BaFf7H zLxx9RSM_EG?`u01q!-m4^LV^&Or@aNS^r6SndY(3Ox|iho^>*_%1DwSlQd|RC za2rXQW3|{#RWr>T1NrpUTg+gYF$~}{ zM>j`1Zo|KhW%Kq<0;cT-ESrX6Hgl*2P|OH6fc56e0L9e)H58kPZKxB5I$wa)pYaQc zfE?A=M@br#zb0x`DxBN?noZun*m&~ww&1s>>#*IrWh~!rzr^D5#anh-q(zHvDbQm-RfLwx;@1_&HoNRH5Co zngkR3u~eO`_v7zIp2vwOY1G(dj9QDwt|_1hrt}|S5E|<@`;?e_YnZF>kXe(!y<}4A znn1ry{!fCV)?J=0V&9#G?&KxbNmYfr+3Dq3-kExt?_l>d6REE!zir~tnfnw4|1Slp zTm!GYhf4BfFE`0>un`WVKmL&SdATGLLG8%<2$7Ao?R|E`cf*eIIyWnGZ+n^|WPAX7 zxlBnHGOyjiq0?IzPmEL)Wp@2!S60r~ca?ROnX$`LR^ zIZd|Zdoq&?Ro-Idd7563RF_W>D>XbRQ&v?;irfTYwuGk~J?<04R)hN;JTJqqqpLfn zWqU;uj+Zh|b4h8H4NUcwL>bgFxEK;#w9G1W-k7~T8xsD2S&7L{Fd8S)&t~&^JGM5&2NF73Hpac< zBlm8JKlZh4FE+%zXD^p=SX2{caAwxxJ`)ItUW{C-56qg_U3c;L3`yIu*Zhw4x$RE&g-i{$HW@iCo{x z-p59V*X;C>xktTi;6htl!3TcWe3G z3LSLb)JfkI&+gSv46G~S?hdXtkdrEnGq<%`Hh_|y-hS{P?7w&15zhV`*>&vfu;{VK zPxrXS882A-Syk&FJYfWFH1yzBF4A2|kIRwX~QL$AV9di(lNs3Of_*}WxYF9NvHf@7tV4|SUruJGYf3We zAGKcj)co|}fuW@BozV?1j*QXE$D&>yS|cGAF#Yk%Kv=pQ>m);ez$IR@>;pc`q|};R z^(;?pqb1ubSLY4fY5Or7`Wg5Yrdn_tLvWfhB$lRE0h-@qnYnteGUE@7cGvK{HrpT7 zs4TNJzy9^5T`W2~?pu>YN8nqvVFc&R2p;AYZ1*0mNc*7ihlj&ito+baY+Q?_-Eelm z5#LgE)B7L8>re4UxJtjv%am5459N1l))e*=p^UQJl&x*kJv%t{X4kpr1;u3L8nebg z@#T^sEE-mcfldaxD=wWqTd~Qr>4eVr=y1{K<11m0VV&h$`J0Z5iQd(HDf6;+!l*^| z{sV<*Q^_?(65E_!*}Xg2lb(HREwL^}icHTr5+YikNokO>IbXS5Gd?#2U+tgEb+Z1H z;plSW*8~OMs&BoPO^M>o9(CD5dzZT-HL>N6$u$F_gXb!4xmAbR(B0RTvnV}MQ5bgm zY|hbO{)dP6as`XYD-<*O=WI?~RiE>2&n?le*TUw_86(EeCJ_W;Jj<>o@1__2uZoVf z;-tT`HEwo(ut^~I!Dsp78{}-ceVV!Qzv3uTAl)bV1>|~RFx~#S!~`w-`%~UzA^DsW z^NH%N%_gatP`G7_QqO3R-(5&ev*6g^#kDJ`&fr`}G!8g}oL#zR+MADM_r7oLf8=?z z?0!VT5UepTf*B=V?qv0tnxELl&;6^q9F*0lrMq`+Er(BiK$NYSDx2#86q ztt0dHy|HtV>KATFziO&9pLCW`zfyV6Y|Aw@yvnXG8-`CycwNpwu*96rXn(XmHKDt( z^vtRJL!B;O<6f6vhvV83)!ObCW+O%u5r?}@yY}#w5MX<1uVNqew|#M*$xvU+whr!ZUS=@83{1uM6TsBp?V~f`!}55*YoBj65>j?(IE% zJgPI!iq%zHD0{ExmLtXoTgOo!;|4x_jQ2Zwv=Kki6~9BTP&6iUG$oskO*&`d%$EpT z`DiHJVIb(GV{+NDXIX`5(pNT)%BqaLvuo|&u8-^ss+m4?_14vq6BU@^$GgWaCyA^Z z&80{f!xW^%!h5C1QIIPEi<4%_2mUe7;n%Aei|lv{%)6j93db^EU_byXp0`sv96N1^ zK?x)|loVBQN=`pnae&tG1UJjS9sHwHMVwDoK39Q zy0&%dHlIYLTx^Fk_c3M5B=KVm=HdP~K9}F9-JhaZo$bqDaJ0_P$Hw@>rMtt!gEE@; zr1Rp~;B%>KyIq8;<%%O^3^x!Nc&s0aTzbEG)b056_?7gHNTap3O0s1U423TS0z*xE z%2m$G);oxd3nUS3Ru^_?BrwWbmtSKfq^`KiD6><3i*<4G0l%Pb;V2cGfWZv2y6$(P8~v*I3olBg+_wu20Jfw2CH7w^wMuvy=V!LMSanj zNuMi&t_~94cpo%0cGOF~uCaW+eS~;n;_!_Gmw2e{)m7Uhpy&TZD= zVQ}FB8)QNLxMlHMWdSNh{w+D$)vzS+yFl(mWFhymG=Get=GJmFlm8a|W>@k4+ezb+gTWbzyA=e6ORx9bbcnPfqz`#5e@jO;S)LXTt856A&Lr8U z^W?4<*)btJHoOPJVsY-kdE$lTDxJ-h;;siGb>vKNcnIhgYk%1n@+w~kzb4Kmd^LuH&cRd$w$igyZqrbb_&*4o_cq|21(?l_a+SVdi~nzwIFdc<7H0kt@R>}Y$Pk}O;I z_~>!i_9|Na#5533oUeK5iT>>XWv-B!_kHOD?oNyLA+{v~EcoU2e@QGt8e>z;q7L zE^d$;Hu;^h;6Pk#%M@oNt zRbyGNJF?T}gvcM+&CixCGvmFhHko`XV04W@^|%avM?eDiyLFR~)_pv2T&}Qw4}ocw zdgVO~)1#V)>;qD}Htt3QzoCTQ{Ub+L=H&W9;SVM#@~VCLF0QNYB(42;h*x-OYlPE?W!F@kzv&RzDNSu$8~%)Y+`IY3f)2HB(+knQ(bF zz$16gMVVBWGd^h9*X6@=WNk{Tap^N&>+rJgM(3sbkAULAd>v+DRD>YQ6g)rzKurUXf5 z$0&w3-`U6xtPQ*vaw7jp0)x`?q81oLz2Iui2a>F1Stq zIsXb_qUvov#pvzvoAS4NxP_&3!fmM{b7=P*pj|KgbCO|UHUF15^e3s|AF>xeC9bJE zN#?czbbhqEojjc9?CRC7dF0^c?$!+6>;F@P19l5?yI=`q+YAb+U=A2u6WxO3buFyr-3cD}U|+JF z7ugTin(vN;m4p>ALW}m8Z3BC#h+uaUb!S#M*f&VsIY-@hMcrpb06U+^kQ_#635=j9 zAhW?werInkz2iD}Y*>v&hu9aU>{80HPfFj{$R0~wJ~&X{R-e-JT&d)7OwAKv=<+>f zV)U%Oi-=HC!@(GURX;RlZ+0AxVRC=&5 z*E>-xrG=a}lxwIvW?g!P9rlj;c5fBTEd{W)0SrzZc@YI^` zc2O7pYJLCi)9lZDGE=*Dt+uR)-)LEo;oEdUWFtSDcS-k?hRAl~fK%toYDtD}JfBZ? z<(-UsQ_P{4>2|)#JD&cgL0kmyhT%pb(as%HNO5eV_U(Eh(N@6QF?Xhe~OXHeTF^YcA)cE=(nUs`RN2&FTRz43tM{eibS zOzo^8&&BP+#3WTN->OXXKP5B}`^ZqyHMyYqkm9yLVXg8sLbKSgj_9fcL9EL|)p+gr zHQemoc#R`oE>`cl4AXO>wMJIPgs#teX3fiQA*7a?DeR%hC8f?2wpXRq?Ao@f51NM7 z=bsHeX2EN&={_vms_L{}O9xjV!ohgeE~{Q*izPC9d-y$`jzj?o(T!??)FoX_c<4V^n% z)GsOxe;BP3#6^6#8;OvNnhXu@_Q#$GsK_$^`Z`EOPkh;nVYV^`Wb@{|{%lGH7qKmr zWM0uj$c+_-WqS^u@3m}+Z8XedydP%VH1LM!nXawg!JC^up7lNMw>MrZd8cWp(`G)$ z0eC!5>Z++p6U*b`&tDr-tRs%We&qZcX}ubgySP0j9AAuB$Uhlrzn_o%vf^Yd9}=M~ zlIEljO(FMP?tgGST49T#fc5!v%9?QUSkJyVKYRauDf)fJesR3xPgA;F#B(WJ1~7$7 zXWn~9p+IQMr2u$x^Y5J++H#2imH-lg`Z=_vAT;P%=FE))M7I=#3`iMBflsD5u)JB( zdmNcj2;fcs7#E{4bm{5qw;fa*znA+$LFa)W$C$>01Zg6sDIS4PF$w?Zf~0q!yZhPs@Rse zy9Hd^K;YUs&bhWsF>7e9Epo{>>3^eZ3j%gU6=mukFq&%%ib~WXyz_5y!X;se87Ew5 z!3qCylkJS-{a21{i4g0hP|k$4m^WXzj(zwX<$c75Y{Su6$P7_pr{C`MGLhZZcx@1W zHRQs251GxQE3Ku_I1z0D{#2n>CawcJ@vvhhtjGS|W#1kf-DTaIYSb9d>O4&;?FxeJ zB`Nv(tao31FpRlVFX5u#;9@Z5U>K*cN0^NFJhUywrm`)?^l-!VlUv&HT>h(X@K41> z*Y@JS7&J%;Nq8^&iZ*Rarb1v4$Bp`pAs_(D{9g%EMuT6))58Xbj2gT`Zb-;$ByPXuvR~gx&da z=}NQSmaW`b2s(4IO>>Uz3ouLj|J1SVbX)73fIB#@yJM$;K%=6UQ>>rupY3`0zv$TJ z&>UOp#*_ab-kBvQ}j3q^H`Sc&wi7gW@%M(Icw6wG{pE&b;cb?kHqnsvT zXF`6b!_ib;A9W*YOm&yj2EnoP@QsJ8pmH^Ko)7ZjF@%RD=X?fkwtl=70TE4LJqa<5 zwzsIlqsflam(G7h_XV6#*eLbYwp{+(`N0E1G zN%pJ1;oBJKmc2vN?^;%Vp2p{>T}QVc3_Iy}uPU^C2!ZoGS^=i!|)3q-Tn9%cVbDk++c& zoop&Kd$hWyvgGm6sv@1d<~Ba^9o*0;kZ{%}ae`L!cd9y2T8?^kT7!KVZEd3~~(Q3hIE#)Ao~RGdX&e2^MVPzjjo@Kt=kXbB~Z=*Rc&c zNethM<)se1Ud~Zzs56PKQ&+j(SbOEo`AY|4vYMY(X=!NYzZR&2gTHO23lds^0Rf_SfaY7*|G)>(i?kpFj82L5TC|K6jK3hx)rS*4zf1o1J$pcM3HM z36RE%@~2p5iFx~HRfk6$Fjd>LlFxTr?%a1u0E`sRqWygAo!Zm2o9OMz^^8#TZiX!x43^-*5o&`m*$24YD>mkvY0WQw~%4KJV_#0 z_5fxN@+)(0Ia^ zKEBl*TqB3BPE1iv5SG*%c&JS{(5~~xRxXZ9e4fFzt$RvdiX7O{CUB%ieT$#H;~VD4 z8(pca>xMq>lea6iMO%Kd;`q_QY^Cy-3s$CeXbmDuWTpl@yUg}6x zQ?MRmZh71*aRGXrvT*}bgwi^bD?vWnt@c>wW}@{R@j7LsQLQWfUoxt4DJU{n$aSU# z?)|y{x#2k9Z{SS`d=Algom8kt!$ZL+@Ta5@5f+Qisl=8gcI9Rj~>g%}K4pobi}C z6MjCm4XE??rCc0i!ZGSi8R0$!L6~>VITJB&B%3sgD=QpN^c6MbL<9vV*bOrhl&);y zW{N#7{Aq9?R5|IOe^~JS$J+AmRos)fpQoPBnmUlF+!_|IB~8CfXFzY4Lr~yHytQka zC|a>b-~`5nzyCp462rFA0+I4@GIC9p(Y1#wuLZIYwaBfB4r#u7MEb?Aw4b!DTW%pd z^1ArNo*N$>V?xD)ZI}6Uv5TpSj1V+)*RJhb&k$iakcVVjQDt{CA?H4&(a6S@x1c=} zY@ql6=G}YRyi56KgTR?x6uN$PDMB-x*+m@ z<6wbpPW)K$y$1;8PjY3MY^DWVvqb1tP!?N0_~KAEh@6UfIFk6V))|`+Y1^DwC&F|1 zIma|PP*dY2%dP6br*tax;v9L%;dVladfQ==;%EA+n>u%BhYBDrURKmZC~h>Ec#UTG zk`}eaZW^0pfqJlu@s5JK$O^$7o$rdaGQQ<58Lcji7E@olQdZ`KtOioz)UmwO$vqk` zJvJiNkkNv*YR@7VyR3_h&U_b|-rLnM85*uwAW&vytgud=8-47cg+tim&Fm(gsoX-} zyak_lHeF#J(dof`RIO1zk94s~lKGlY-O_Eb_L1oAXvpWI$;+W$iS6=_8QE43xtn(- p5k++F*Hk>ce0+meFrV!6GmOHk1Xr6}wtqR*sm_&j*nVgd`Y%Q^<5mCw literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-processthreads-l1-1-1.dll b/Scripts/api-ms-win-core-processthreads-l1-1-1.dll new file mode 100644 index 0000000000000000000000000000000000000000..6eaae36c20410001c31cd462f80cb3359ac42225 GIT binary patch literal 19208 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-profile-l1-1-0.dll b/Scripts/api-ms-win-core-profile-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..5f9a61fe4cf423fd234c4e693ba89219de6674ba GIT binary patch literal 18184 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 Q*K?{e$P`*R3jF2&0w>?Jw*UYD literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-rtlsupport-l1-1-0.dll b/Scripts/api-ms-win-core-rtlsupport-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..7f5a9ca30b39894c7b2590ffbdfb5e18c6fb1290 GIT binary patch literal 19208 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 a-^aNu^ug=*-m)vjJc5cil*jchL;nY*xoLR- literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-string-l1-1-0.dll b/Scripts/api-ms-win-core-string-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..2ade913e9a1629a3b09d44805d5fd38065a60787 GIT binary patch literal 18696 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-synch-l1-1-0.dll b/Scripts/api-ms-win-core-synch-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..2cfbe993e79b316544c948a2b530cdc3993b5fdc GIT binary patch literal 20744 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

jzyD;WGc45u`He-_ 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-sysinfo-l1-1-0.dll b/Scripts/api-ms-win-core-sysinfo-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..ef61b1bb4e10cd84ed96753486becd11fc1db620 GIT binary patch literal 19720 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 Ntysibi!~(Z{{TZ``|$t( literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-core-util-l1-1-0.dll b/Scripts/api-ms-win-core-util-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..d16b7b7ebab7a2ffb4c80371211b3bf13b024453 GIT binary patch literal 18696 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 WX3s_JhxfI{k_Yr8C2LsELH`Hglgi=% literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-conio-l1-1-0.dll b/Scripts/api-ms-win-crt-conio-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..805d624787e0206929a6e954689d793de39257ca GIT binary patch literal 19720 zcmeHu2UrwKv-a#R8OahPE?M&Ik`*LMmMln6;*yiFfEdUiA_@v9Nd*Z4f(W9bsECS! zl9eC|D4<{h#DFNs?OCE8J?H!H{mygl_xyKwYG=B-y1S;Q`t9oKW{YhKgn=N44AA^M z1l52$a;cMk|NQ4B$foDJN)J_2xA51Xj9U0DJv@W30fGMRflj_y7bibIeb#Gy?{4FPEmZKu>=(mm_wLfW0gH}`b$ zKxCIRGu;e9uJLH-y>5cw5^oX`z|x}W*O1Z+zYAH6q+28kxgpPJ2%-VEB|_K`3BTH22%01(NiO_gK^p1Ur3=VYsV*fz8IZPIN&b(Yqyt@@ zh)$qQ3Q!fI8x^2M)t4$)2cK0sFeuOkFi5&#!2=?*x{p9o{a^e1K=S{t|MVUR$@t?N zER7{FJRl`NuE3sL7j0=Nj}GAj$^m&fKjk6jxB4=-(6+D{yFDAHdh(8`g^wHgXrK-< z2Au*trF?^=LOuPYTmp$wF8+R={!%_TDV!869pLJ`PzBO9cv`Y=M3Bec*wQ%PL|9Ngy_Y)Nb5nJxqvtT zKMBx1Kx8Zsv zJRl)ZzbYVCK>Gj{0ICBt2526T5NJackSm}FK*fL>03khr1_($7kwX*^C4duZfRnTU zD(E13hyg$h6T}R$Kx-jZhz(+gIG}Y9C&UGDLp*=_U0r>AAO{E1rv|^izW#m=Aua)d zo_<6(C>U6Qvr`a3`ga1q;X4HUWlEyNLisj=K#iH#vclW z29Zhy1pn9$Ded3_Za-GGz;FO+xp=Jl)C=hawu7I)kH3re&$&zN1tG%E*#u}YV@Yns zeo2)RmiUNR=+BKKjKz#4xgW}d{3ZUP*iQ-ofdvhahb7UUt60u(0NwC|3Jd84_8&`= za+lbM5Tfo%<%^8Pj3v3B^OyJz!G1sY{t{;?Ye{saibaW~j0M3TwIGQgtmVul>7S|r zGD|rKvi;xnyBpI!Q_l4P)2Fx+znuu49+|@|Ah?`0V=A$34XMlkM^%0>! z$P@B|+(B)gkPk!vHTywskUtQ=Mv{RcIpEkU1CoO@NiMz-n6*%l7Lf6U0w5 z0x1Hiku9Jm7f`Q16a>f(w1Fi_2Lfq-z;^;1Pw?air1e0rp_bd$1~mkc%6bCX6)6bP z0BKL4FM(7WqIWRl4C>W}jKCiRc|pRf>ahZHfuN?PRv-umG?yk34pIauS@1T};Eo4% ztcR?Dq#t;@U~u;VJ`<9o0Hl#pI8r$!@B~9*r1w(*b2*CCPef8Xe&CIKR`q}rN!K8f zu0e~MA_XHsO(>u(0rWOf0_nj3(09leaECmABm|WJeg5_SlLpcnpe7%1U#TUCltOwE z>4gyRi@Xu=y-0eSEJ`A8jA*g+-I3J77yO<63w>+~%KL*FgTZ$qu6k?e7kZxqnk@9K zD<~5RG(tEg;H?qO7VH4AJuLXLVIUXjPhX^~Aa&p=p`ahz`uVH={+mL;E)e^+0&N5? zzu}5y1K$md31k(CXyFH1_F2?s!73q$n(RCx@TV7PO^QZCaJ0%a1+{p*Ui>s2iV~e0 ztuh8!BWM%~M+;L^kW0{G(46EDY(zmLL4hJeMJu9FWVxGQ6_|Y$hXJO>prBl`)96SD z=3iBgY;EW0zQ#n}0y7961)E8a3IkHc=(X3H$G+8|yjVZ~+piyWvi!9K#XV;GK zGBt6HgCxy+V7g_+P~<>`P?AQNtz;A|=&cqw7MO_wB&b+utet{9JpJ5>{(d+{m>ywL zvQU~6T!EA6isOa35e^Lt>lRO!K>r|rHzHQcKQO>Q(23{?O7O#cNIr&zV4NQY*M$3ZHFww$^z(NZt z9!n1=A3_k;(!v6}*}`~(vVx9|l$@rPyp)EbwiZqp7F>8A?q9x-1tBoR(}e&>qXbs> zFNz$(M57phIiP6J(I^yD&h*}cpHlwpQOeu7*D#b~Sv}5_@s`Qt=P3>lI)XeZnT5OA z3@Aq;yPtn>$F^gACyyC(O*d1Esw-UP>l7k9xTlxL5Ir!DPq`$sF(ZNL==edht|4|Equ*^bb<=fJ z;$@A{jhDXNK5@(8r0Xe(TN&LFP|cM6-k7rewYe<@LTN9!Qn*i5P%3xFRW@^H1%X3qAMTX2|OQa`L&TGFy?uK#Z?p)lIX*wm` zZjRUTAQA&M$jG<^`bhgO*`+jC7|8^9dm>yJ5KVIpb|D7IEPqDCDoI8OY*HGCz}qOO zz?dW_r$nL1j9>#;Zz&C<<5dSDh`4S#ueuKw<2~5Re-ybnH z&TpkTnF(Rclb@cin>qW%?7MxEW}8t?Dw{=^G4-AejR z?fWTZaD$hw8Rxg3yzIQkDj?Xzy^g#&|J)7e=q)bOJg1Go|Er8|7yF?8iQ#cRgY{V# z>f)y*UZc8NXKt|GQ57v1vocR;v&qbZVimI6l{>}hWL}aD)v+8)h$%5sdM}iZ-q!xpMPZ=zPox>e|3(FRiH3uSmo&AHdCyZVTkOJ`*Fj1WZn# zr?&rUpkh{`)t8a*L)X53HTM-Ij#pNpJD z0*_Z#f@LLePR?%11bH_p7lJD+C5I;{NI5CUyGpq#%gV#b^2%-mnD7GvK42QV-&xJJ z4b`M5Ez8Ds#VCu054J)Y}Z7@*)%8erh2e+>hFQ#bLap-Tche?#x^c)DI%5mWCC35~WTpQ~PrXP$XMA*YR+ z2>MnoGxzRGSEQFbx7g{tic61Dz%1|EGBSaEQ0r@&m|v#-yj1|6mbLR|;@&Qn0tXLVBY zKYfpimrRuizRR?}=SAWWx9Hj9Nm+M>DAzrla%HcS=>I^qdzWb(1)f{kG{5CwzyMX( z9)BaXtg&FhX!2_S@Cp_HkH$$>gp=f~;eP5Y*n#Aq z(NG^1IgmOf>55v%h5@r1ZXMz_u3}OzPktcyD}fjuhDB%v!_58tfwu-GD^E917bhYC zs}W4}@DKDPhLM~y7*>+S;qf?SSv){9{9+Q1B>zdE{VU(9D$vG$9qd}iljVrTYG#I5 z_-x|p_HTah{+|o1_>VNc z!s}s%JF|5u`{slPPXs5ll?G`?^h7=RaD7Ulpvivo(~5G{XX`zVbDk*-46=I9o;ETk zpB9+g9pbx8~lyZK*S#`9G3i_;* zce2ASNyK7ocd5aYPMe~N(#h&j`$G1UhaNB`TdCBSQ9EEBE-2o18Qrkzl2@X51iigS|j5A^EK?A4+?XzQeSCJ?^v}+4I6Y`3m7e? zJB=x{dRCKYXg!s#ne+a`#Q1PLpPWjKRo0}1V4QeCG{ebX~M6%*9Ikv{}o{tNd+N{n_Zv+A#XME#IAnSg7z$N`}4hWuPMSNB>F{_vjh(szb7D1YY{Ye#QaUkN&MXj~=qW z3cEvA{qURQAYbCiGMaBJqUz-%GtWyRbZRLbbqS8@#^*KP8o#>`64py2NA1fUiQ^lh zx9oqB_w9u)W4UX_yeXUX-a2yr-9zabqMo-?lhd0H^=9**qqEPMJbfR$7n*~f+$ ziy5mGO{uzXtHRL~lmNdcmhhX+0}0bX5cfZU->@Pq2Lk|?mxYxP{Kk=zvM`eT=T`fF zh2E#~d@2W@=p7Z`>n*+R`SqdUhD843q9!>gZFk@3!vx zj>_UOrHX?XVV!rE2LyF$??_pms^HzFfeUTU9^4p{n&*VR$U|2-JDpvHY85cFoSz}T zeG440SX>#O1?YX|&(QmqE8!o|n{gS00eS;Ghv29T1X~5kqEg_fLy>EL1;2SN1x|mv zdlAhTR?e1ZkXu-86twLlC5trSKL+*xrL{ZgYsTY=x9u_73jMFD%R`^EhM8?aRZ0_g z+WD?wIoo<;PjZd)Bj(ddzRoq)=m*AF7SqiB-ReWuwH4d4xS#W&;>&7xO&x51yAd@$ zbR(IDyz!9U(4+-xzscF7Bcq4Bx+3dercF`E#9>|?5f>5&`1W~rWLKs%-8AJ;z%>rz z6NkNN0@G{qlylsr8qDZlJKL+VWgNt+4N-F9XPR*aAvjfuK-$LF0jl$HG%SO+Xq*mD z_SCSyF+Ld4ATO~azwXVoeYBc;9$5tPkHhzCcMc)!2!EG@mkMqeq{^>Pk6wJBv-6&K8rS2<3EcQswpKi=L#tCt2I3b>YR#+kF>@ z3yO*IHO37)1(`)cXjROUcG~J_t-W^P!uc)kji)r{Bg6P3PqM;pW17r6I2%t2@V9Hd zl6Y17QLkC@Q7=ByNJLyu$ieot)kM)i=85|o{I5re5-FI*L-^~mqw7U2FI9S}9>@!E zs`krcDXJ^gon-c(OT_zBeIGPyOcHEzyMBUaKeH=ZRjR@!xn_j_#l`dYU8;9kl0VXr zHZ4m#U%2b+h1_GooR5$0X9*UN!535c<=Q0)*X2&c-skUr!)wx%HLm|`8b$CwK)bKe zv+odn&abolI4R-duTe$Lizsj6clitea-NceVhl>`OgQG=eK&Tf6!|k67Opt=V ze~6o`#GZ4bz98<}VvL#^gIlvI@=ON8yDO1tS{yyRI+qo32A2ww;eaz3MtSozweQ|i z5ei!FGXOSY^2i8Vom1dW~d|sg2?;Q%yw=OL=#BJ-t91qEeu?k;N8et6*F6 zU~5|^f*YQI$D0Sq%c;V)%caq%H8`*Y%@v9i_{E08PumH30+HC?x_01fjH`cW(CS$k zglNg4QP5!)O|+6nuGCqJf<5#1p9J+MdtR-3BzI0^i|Uv_lIkhrS?+J4{oQwT@Vvo$ z8rLeciQL*Ta_WmAR_-0=qdH4RSHfG{y_nIY! z7?24588hi0#5M7=geIKu^-Nv&upU2aEcXX+oTu)<~7138| zkfq0*Y%g{;hHB3t-ffo?%T&U12kU1HxOCv8huQWOJy8c_TK6z}yC+yTbR3?crERgT znjIpaDoheSo);~o14pBUR=z6*E*i}WSWF~KKKze)4!_>SSY^lCVU888F*w@g1SJYs z@v@zg;}}SxIXMvIkdp-)54L}>;{FW+9+^RJ+nl#n2X|@Cr|kE|{SeLv@ma)H;G&u< zy4hT3WBo6O7X%E)KWi_|eZ+pSpEuVmBc{M)mLt-;;L_XcrtR{!M7AC!`#Fe7B;t0E z)P=+Hjm~dT9aF52hImfh;1Q?)d@u1yc)gL%Wy4|#VoS;XBd+Dc8CisFhm#o{a_^6& zaUS{hSZMO)j^@09$7Q@DkB8O`pKW1x-JmY;xp|%3)r}XAR95?yzNqfhHVf}hC=iHn zo1Hi~Kw-Sq%eGbTNaCG4VX={Snpo=I^D;g?&9>Xe=!R_r+9`#-IL1@F=W#`I2pzZB zN5R70QXdVa3z;HefkTbtkK+_Y25#iv#Os`>l%iE?Q@P^D;nFJ`dBJtWL|0G;%PR** z3vjLsPBIiOT7U-dD3<#g+3@0@hNJmE0NcSaAj8cuUJpgUkfFhFgY8!egH10ay!6{m zFH!(xRar8uS;2vkudhX8_CBRfEge&27&~;4&i?)f=CIDxebc)*Ugt*BT7mfS0C30e zu8JQwU$oO?r*vci=g&a=xOp`K&;pgh|CSi-dRPSbT_EDX!p#YpqaMuf$ccu`83$km zwVh(wfm<`#^EUDA`N%sp7K^1dy?FSN|7B){uBJ*s=fmNe(y!K>cMS2^FRAw^m20nJ zI>B_m=b3gf{{+HN<}G;5amVwVXAaW1ZtK5bR&{RYXKR!7)$A|29nVX|hpm^e`N(y{ zUio8n%j`zw6wh@L?nZ_iub#5m%1NR2w&2@~l+y1fUp+Gz*T*y9^lu$)nW2=sCjr5X zbBy=by%lnK-Cv%V`sr>KRhmGXX1@9v-)70}UGFvSr3T-Z377D5yy7uc3U8L5nK=49 zSm=Pd{mCNgRK)>~Yt+@go3k`;T?vAB9$fO-w*#NuW+A{KjBHme+qWtOYANJ^Ssg&O z*?K2BS@QamV<(lnWIFQa@aU=tSPt>gnaDuEu0RYH{W*Zl2CqeIiJXNFFAFOv$V=em z@N%%i4`G#;vkrS|1)yysfyNg<@)HH|FDJ_WeIa7RP^Dl+DOlm(A0qytZX$3tmV#Gk zaK>WQhBX+gq=0cp>bPj-xOI8vx+Fnw7sh7g>8%`r+cv&0x!n5f{xR6hqB&!d*@8o2 zj5DKv`XZ`BP$zHK^gN-}*pAmxIw<@+^=^aFo_(R{h>ixP1LxK7@8U0iV5EL>nCYPv z&&N1xwAlC8HD+~M<9jVn@m)F5^lZ%EzOYNpY^~4-!s$0utFKHct0#{Cw)9 zbYWdAfm&F(vJ*?)SM!)*M0B4)3@Z3-bZGmPTrG*BO@+Ll3^7FEgnUP5;g&-iJ|Cgs z!d!RPY|1~Il{&ZEcHFFcCf?6z6xt@K_3*29BZl|X#GU5nE$5rweBDmfryFI>B65? z#=!`>;XyzGhwS&`A2Gim1JP`CTr8`k18?`Sf)eI_fn=-0EmSvGNB=ee`h**frx`xRlV+`#st!t@2+XBzL%TJuGB8LEuC)(?S=u`4Z?p6GOX<8{}PA(BsBa(^x_YJ zYvdrw(lLOp&sGnT$4=WjdvvI#rP%efW^vs4pCTNvTM*j?TObY#D5M~Tm;HAk+;8e8 z!cixXx5AP|rNdE2;i%;0kc~73j*5a+m!=IgiVgSM<&3GJzKpBCOOT9~sfCOy!Obby zhbZkq^o7-zi=$yVUObj()e$oXaD>Vq9Bx7m(FRptz?KznepCtbvEWYtIZ?P^v-WK^>1#Bilq}PQu^y-h+T(8*pavsU7b%OTI~`LQMhrxGRd!$XC$sqSJpYXpy`OL!%klHiVQ-Nz?de#a3Z&q<734G z8VAJL7Tl$Z#MWiu&(| zJ!F=bIMie~0W$2~ZFjLMwEd3s9=CYCN4sooUK-!9G?I*RPCDbHP_X~=e^dy>qDbtf zNt@(3Pl2?PN7+BLsFg%fG2d+{?=v=jL}6{`VKS-5#BW`DWBr~_pq<6q_IAymP9b?e&yXnuceTe_T?nxSf3zAB?qeWM1dHznws-zscQXx+%sKYa9fr=sY(F2!2Q^%s0yIqfxsxzpL-(AqRU zp(Lc6_4lcNB~!cn>bVf5I(e|i{KYZt`!+sLwHOm@cN^M$HRPi!YxjFsMZg++3J-j| zT`C^R;1b1k{%Xw^eoNc+VNPunFDzO3?*^(!dph2}Yl$nCc)v!DL+WvS_p{Lh{0({0 zELw0hi`ugHj=_MXEsG4`Ni2VNWNFL74Okp#6y}dh+i28A3fd)eV+5<)Xp}ez8Hj)> zQvg`rV%4!WG#C`{rhi-)lVNXI(6r=aQsoM(yv1RsFhUeO3bG0A68edjTd`F{g9~U1 z+p40`fkX}#FjFbPi;)aGPFhJp!4{?j4Md_*A9JHF7erP6!^bDJWHrHJK}SJDN)DWg z`WKH+=0?*u0?&3Q@N8|CJX`80agt|?{%K13-{{$b<-4qcJaPn#?)*zqT{~3+v{N{ z>CkZdh10E&%bVOJ>?T<)M9FY`8eE*|Jgw9$hxaQzi4}&f2TYwSx6g(0sZLr4mt9ZP+@fyQ!H`3-$vxte z+fB?d?eK|q!#TefS@$c8r*@0e;3oTwDUMu9ppqZk#eM!&W{b+GjP}(tAD_BjFF@5} zsZ)2g%wD_Mq`iFyTMmlcL}1I3U;7da(xE@~Yr9-F*eBvrK4|UPtHaeG>tP$`yYiA1e9&)!KI* zeBoAuTa(w|r_sq>*Y6dd6dsx&*>2hKZzwhmw{L?C5BlaEhO4(K9+xa|ahG$l(H|^uyLYiao1=mk< zo+HzYsks=LEue(GDEz|p?exdGa2Fe4hTYQ2)*+{NmQo}#9ALZZbcX3cRxiD7R%Ana z%bE6xeKC{IH}0e!+)m68pmORvZ_4X`{rz)ja1=*bkh)=-pu21AOR?VB>4Cs-CvX4I zlBfq~sLPaV-`;)D8(kgP!t=2v4#gY!jq8B8rE-;BUnAYt%-#EgHd4LJka~USnXELk z*r%H^mZJRAjb+At>uV}Yo*b(>qj|ciZJoxJXYn)QS@}$E@WWan-f+-m&!@~p8LoT$ z6*d>oJ=In@Zo0E4ud`w6u;+kvea8TNbFTU2mTz=*+f81b;9aLAbFFO~x%32GuBm+A z1hpu4*M)F-UaG5o3Qrz7Bo7c1^qIkg(+dK|H&+72PZDOAiH zr+ekmiHtjYUHvYW)@-pz6o`Ksk{-NWAXzb3Wyj}2{|$%MMby4dllzV>^0HJgk+YnK zFzJ>eAHv)x-rwZ-`sy6P5w_!h- zra)-%{pl@*=Qxiv+~dLS<=+-;QDGu{b*Q-}AYj&c-`&rtGwWh|e+%#mAU&ju!ht1eq z=0#(Iz&5TOY1#ff?>}~Na9WrKEZtZ3eKD+14#!K*K`u-J`*!ZT_aqIoDxSlSbEE3v zs2c@QwQy9;-{N-v`2S;~urLw`r)A;w)A9`PAOvEKEf@ZQ46mRdFD0iXt0Sc)ue}*3 z0gEAm7#4vay>+aGe{i4+0lUR1hzLq+A^$nQ8VA9iGnyP4h&gy07T{o5Soh(S!O8-U zSF~MX;Ne9EOoTVAEHc5?tRyTB(=1j1VtB|R5kjN6(2EbO(+jz={aQ$_!m6@p9N4~G zKK4OcvgXpjR7iOY+puHa(lc*t;=HW<%S5x@i!<)4? zX5A`16~-{QX_~q(*=ZB6{0AQjcJX}#?yD~fbIreZri%ONW8anzcg-m3H{aSpzjj`| zXO>OXAO6ZSvm>tFhbbCwg6hc6mT?J+1*a!IfnoQaH0)CU*(Kn@5sF`UG(X15 z@G$3coCBN(qWd9|0skEP^38ki6cAcIUbt4&!kH{~e($~hD%Q?AZ~rs5e2S%IYT&4$ zRTZGu;G#O=s5UsN8F(jTYkxI#!7)WRDzYH_e`9BXGfrEcs_!@TQ)dg1jodT!(&Sqz zf9sRgmJcQzDp9dMDGmRicjwR V$Z7eEYGTJlnzc65GbDfczW_pzYN7xD literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-convert-l1-1-0.dll b/Scripts/api-ms-win-crt-convert-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..6849a4a5a9a6ff7d99c24b16278105927d702e44 GIT binary patch literal 22792 zcmeHv2Ut|Qw*MY_k*=Uf@0~qESCC#rI!ISKh;$gLg(fJ7SO66i1VQWy0*WFc9+fVN zVnGE&5NrrmK#~92Gn4^6_ul_|_k8Ew@4eys%}&tHSoxaBt7%?k>h?Ox{bfr z1}yDN&8!R?cxqev6g`kS#~Zk8z-~aIS^zRF#ACfWCUy2nGYX=Flfz0KnCRP=A!@YkV3e( z2hjsTesV%qSlt!_rmH@axemOYLU=^D7Z6BwgF2GZP__|}uypYFzt8`I7Kl3d>r2jz zB^Vya3V=80llQbP&G1+-I-n4Eg$sC?`cZytYz=JHs3a0^c75eEzdfwqk+cQD#-K;2 zzkE=He6)YCyjM6;-YX&WoXV2qNx4+XLg0G!Dd20!CZ-nR&+_OAt~$;~)VBbr|15TriG- zF2#)?`hfL-SinBOSwJJ;CEzE3hX+CM01H3>AQ_McCcmXN^8$bvk6Ho@Y3m68l@FIvDz#I?^$OM!D+5ztXjLQ*30-y_U z21Ecd04D&q0DS-)*eX$gKEMNz04N0f0T=+#@gs;Nz!=~UNCTVz`~m0!i~<-0AP>MQ zz*;~cU>hJGPzh)NbOD9|)Pe}I9H0uY1_T090Y!l8fNsEd0Jji=$O8-j>j5!;aL0Y(N#D3os7ggT7n|a0SEz4g+cd9e}q01p03oKowvK@CIxFWCP9v zZU8y~Lx4#DC-kE{zy#n0*a|oRs04HZMgVNkhY|oSfE^$Vumey8xB|Ej7zQvyKZ*f# z0qX(rfc=28fM&o8zyyE``cVO34)6se0tx^XfM&n|02}F4Fyqr8v=6gV5phDC5f{W2S%<7g+`!IxAfAX9*hwG6 z7x6ddAtI4T6cUZZAhG|%{(1)nB5rQP5RV8ie}5zr zEVQRbgpa};$<2cp;_Vqo!I~yaGu(b<0SROJE@WW@5+e}mH(L^x5(v|bUt|J_(^CGb z%JZc#0wx8|g;Hb^iTMj_I=jGy42*zD1pe~2B+3ly7codaBl&BdB$kg?6y*z(qHfr? zTLi@$O%vRF=cgt`NyK@nF)|R`{N|@7MM=bYsWCE^8rlWAnxfEY!Zc%^44E}66}?a@ zdOEx4U!^dToBx86uqcT*KRuAAQ_m}b7=q;w-wRWd@(!GzH!13dea}lhO~4qGd6S|f z;=L55cpd@MS|bHf8_N0 zV@1vH`5B7abYNbO&e5jXlv+S$f|5-Kej`azhe%9|D0-9}cOyOK%gm@7#+p|WS>Z_J zUnEFnM0-UnRJmD_8!0qjdBT^kmv^n;#rCa`;U($%;$P zY=PoZ5T}dyZ7a?wZnPIMB*=3?6{blbPYNx3$yuUXG|Z5cZ-+%m#Q7PLXIzXyIgyj1 zB;x!gBF&qmY{<Q+A^fW_nKHv#AWC8aEoecLOvgzx zi1%DwrsJdsMSo1kNe_Qe`vn3d5{XIC6Vq|>V_^}2-UylTi$EZm5xI~71d>D~WpB?? z$bnyLhK)uf8Wx`O`hA8l{iJNNITG{{NsOYW=18-l`LfdzK!gNf-{;zCI!<~}H0*So z^qAkUb0kuTqB*AH z(XbE>{t(QamVm|PJ~)ICe19fD!2D_%;8$DtNuX8+l0EEP-Qe4hw1-^{`&kQ!uZC|U z2xFgGnh!t8-Zm!Ka}VobUU}@PP2ys1Y8u#|&;RrS0S7q~VQ1?PyIeoW%^!BWK9F-T z?1Doe`BhRH6!zUH?6|R~9`+uvujU3>eMl1odt(ns9}BhdfS3=d5Oc`M3-S$tJ#z@; zMT8wbmO30#W8WS?@rO__q&9(8!_Ag$069dEWc?xSTq^KWK-?ed>qE*7t9K;q*@a-w zZw7zhs{-G_Tt4=Y4%@NMlmfm)sJQ|Oc<>29%14n8nBB`8Uc%wjy7Vsd|HG))Eve&?qB$og=;h?rY(At;; z)+V9Qc32N!UI!wiItlOeueYB9q}GL;0^vEAO9Ux~wItRGQSgnu5%?2H^|qW&iM=sa zixMWi9O0KkrlUb3!gS7&RV{!^|7bX*T%2U`$}ANLVd` zp=4MdLFse)!bnqwCHRLQ(wP($6@n&dPS7#Rq?)9DW5Ll=6((uE1=1iD4u@w(8R=+c zS*fXbX%WiFTCg0AHYW^5ynXMR( z7OD_UsuA^C8aghjwYGRJl!Fc;3|veO9uXV-gZ+ph!FYC*6(iDf(cAcV2ZaQC;{{MY zjKajV#N6L2JR~B-mnftk5*`{7?m_ei31L(a<5P1jo#Wg22l>d`5_>nYpIWyK*h*0e!C4Gfj$vJcDA-c zhPD*u~BEMTu zMeeT6I`Ka^@jtF@8y+lsBb9Bq?-#0=NKZu9T0a!9CutDB zD9uuoJ7KY?^4Jp_qfn;zI^UzdSICzAp;Ezy+F|m7H0J0UbakO|p<$~21|l(Zg`%QY zc%VYij9w~ug#;;v2KZxCML13Oj`Si%D9&~xrj;b61f5iXB&Z`D1B^*pT6!Fg#tbz@ zO=jXKRjTH60nyRXzbgRF+x|RfBFcr;SDXgZ!095W87S2Sh9js84oP8o$EDR7H(5c8 zo)tUA+&G%~zH?{88UORg?rM7lj*c0u>tI{Q{?ypQ;ku^0!=wG;EK%lKT`T1?%g_T- zKdYYY#ykD&P+S_#;E&Vj>M(VAx+(%4#J)YSHx(`Gy-A<%t(l&} zYpUa3vWQlpyx=irabD;KgS-NXbZmN%fp=bKGlFu5Ev*MBN; zMx(pQ-aVD0yx#ESS$@|E)5x{(fklhID(5^&}wMxUt%gmQDO3+=bhCSFmm2LLbm>X!C)Ha%owVU#}iOI z9v0 z_-?@^&rSBBk(PdSw5`SGt|9wwEVnB1SPARD^3=Q1pLD*kJt<~$IPJxF;@QcKgU0&D zuPwQ$C0R0LZ?mJ_DYppOrh4eEMu!ZG;wzfIIK16&!t2p_7 ztTSPw3ZHTV*P^QR-kK2s86QLL`(L}WlI_qqZMY`C(TkzOt5nNFR8E#!*~Pzj;Gnfq zAkK9+PCHtAeT1aL#Bp@+LHPNdJz*k~>Ae%Z@;z=JyQ95(y2|Jf#?wZ7iog6!OqI)$ zjl9hv^=Kfyk5BUSfsDMHee}!jfAr=lmwo<;Auh%$g^s|dVO89=Gqjtbb5n?!cHU5A zP=5=T1D~{$y4y9w)1`UMg|^sX|KqAzbRg~fu)CSlOAtQ!|qz=fIZCC6OS$p z?!Hi=Bo#sJ8eeRbbolH=)##}0XcFyJFnA?ogU95dB!Qhd!xm*hW1()O^%)c6K8duf zk8<9)W!%&-yWy8%%SH+!Rrd5=Po3qmm6gpxN7;s zkk*#bHvvBnaI^RJtRN=yUQ#S1yqoI2p=Tl58IC+vabQYoJ}0#L^T>uX=4*BxtBqX~ zcF35%Yf`)?KXOO=sR)DkM~P2A)qYehX>v7ucK)nZuhfPEyvL7)N7#?@WcN?1WQP|% zjB*o*HcU=Y=e`@^LVLx}X4kO`{)%18n1AjgO7}%6+C5*4I*oPg@|Bh>oJ~!T`e5D?KSJqFuGCSpD|(U!Gt-ZY?x)>!r`W9Xi;i- zP?)dZS`utF;b)_vfqg?N%1OsKy)9XSqoE~b4C~)n8Wpx=o4kj&xG#~O^WvcU$`kmI zQq8N6<Mud9$hK@X z3g)v=zfd<-`(L+Zv-%zms_g}uO|oKkGgb?%mR>j~GtG~T~TDujTQ@qOF^)4kie% zJENs&cID^^`@=6oYpN^9Vyjk%e_QoNH@^ABA|C&iV~2(0Cz!2n+PBHSH0`(=I(UNR zDD^S>-smb#*kPZ; zmh4@H%T1`AzqJ?pF%gfczL!_zX?zu~#`!s-QJ%=?if9| z&+|I=CQar2?{YnY=>=z)zH>?Hob4ZfaWdYhhTh%S$6d#wOz)k=`--U8$4ttML3{~# z!9G^I=L1FG2aMUzdLNv!;#SyPM=KoHm!m7`|3}vDoTgom4+)=RaXmb8^jzwOEOE0-(kN|HB=b|1FoWkYGC#oPl_s` zSoH7P?f*0DeWWO`yyvOOKAFt{3d>&9_PxB7Yb|PZ_RjOA7Gi9}_m1B)J4-}`INs8C z+T|=+oxNOd-?@XXs6-bMFtn-mT^c>xH&&X1BWbOIElOhB^FMy}bSsn?Z}> zqIyx==3Ntp?TmNVpTAqCM{{(%G%(BWk<>FI+p^TV15!o`l4nva*V-)Vr5j=BB*ek@EsEy7=hULp>{#vx+>Zs`y#Te|$T1 z0e44ajos8Z?H@Pbg7x&y_%vAWBV9yaW@gQbfMQIZEpozN@ z7XQxt7I~F;{N>AwB=*>|+(o8^$IhBXIDV$*Qtu*a30MF@~n2CYOxUFvdVoPr_<+9bKWtJ?*%_D z^-N97$DMcIt;7xYUE9q>+qlc5Z^U-VbIa5F`UiJy>`bVCmHm-UF@^f|UKufw(C=S= z^vC2XuzaKM3%$D3B0n>LDLkjTNaL`d{4HzNH=eHA+y{3GY4_3d62@Ecrcrn;*>L8@ zH=$ZnDNI~FH<&y!M;=x4ytUXFe@jJneR18}t6P}$Ha)Nn7am5NYhrv{U2r^1i&;Cm z79aegdD+*oLSAujJSDZ&+I}cMG&}H&hS`I!v2~}G#(7GAIC@B0nJ${wvq?)JNHA%H zxk0X`UB6;r{N0wSmnA2ND%BRZ!bCYGqL?*pGQymV^cP>Ps3we0Jf&nB&M4;~W|%p_z?#N3?U*ncSP&dqOL5mK8dNu=W#juNgr zlvFQicd>kCg`YjvjTxd%zP0)M+c~|dwB*k_?XK<@ z9;hm7_Nt7rqkW*OV09+D>{!g{io*SoyifLR=ZX|jB%ELfE_BHduPgkpty%ctTLH_a zyy4Zo-*7%5Y0O(1{Tp8ezd3&34qkeS^_Gk4WAo)jk0%rhv=!EJ2Q+aNPvVm#!QChE z16;i*47b0}F+p8^F0?Pj$zBSX&*HsHGUC==a~lFyK|mtW;`oO$z6gi24@6m z@UR&C-u4QvEWhfFdv5!BYD7D_K8;w5YR+cCM9qg+SR@x=<)jv4rKh&RPQ_2f#3bB_ zs2*-$W^1ltAL(op>EP_)<4f=%5Nsk;l(kUjS!pWVB0OwC3&j#desiF(;5ea3Bths; zmv(SB-a8~Zf^t>{7cET^n8@8;o#lHCbE42oZ=VgnUYlv4x;Q87lgy%KsxzyXGXGxue&6%9VXhlJ#oit} zZ7!RX%1Kc7UOczeMD6R6S5q{rADrg5x?-t(>2+It$T-)THv>2+cjLGU9jb(#i&I`{ zr+mZb*Ye+F+k;1(J9CZ0cbfLcR}gEPo-#}c2<)PLVwcgo+57geLSCS|hSif8h8sfo zAE}XI@9g;Zy=uuwz9GV@C9n8k4?)YlaPY}~VX5vcA-?Jmf%ofNIQs9@bKZNg^MR>I zs9R*IJOYyZIq8@F(T4r=eW(HfhwWh{1&qnBRpvAL#N{eSBx#pC?$)T(S2M^A_Xt7l036>xqmdBwL2Xv1d&E(I^ zacQ8`74Xkux?=j)W7PZd!|}^k0?+r3NIRa&TlR5li0RI5Dg1zWPazqsh;3Oc+pIrb^z)YA{~Qk9$b z9%PLKH}~LujXebkF9gp%$}EZ1zprIzrZd96_RiiF=eVClhh`=@I;Dg@=hR!SaMrly zOvL!@120D5w)|R2z9&t7X~~=K^m~~v;yRq`~2nL|A~vINR3PftTN+P3hhCU_=}!;6NDdGRSsJ05+X+3g&iS&Rl2^NJd@_}MGhpMX1n`cU}VT%Mv;f}1`Id>q;)#B5cSc`@V?r)pG^KCtK1&w|&zro*cV zZ1~kT_O*@ED>uj@DElOP^RjnhUT>bCP0#vrJC7k-q+PFA=Xg-7+`7(D-G;2lX2q?t z!S0tgd_093s*Hcw_aag(O~Z&TT1Z9FUsyffD^6H1%rWz5%u|M3R>a#FWlDiVE&nP#jppSS2}(?_~{3mJd6e&0Uru8sNp=s_|{@(s0L>qbD!j z>22PRTHCfB9O1NGDm%n`u!OM+cTd!)DCXOg&m9XF0e6Lnt!0dHrh|{RL{r7zyTy@K zrcHRCdg&88>eJXTBW_jf& zS&vPj>D(Vye(PHK^+X^Wn zHPl4$9mVdR;%&QDeBH~moVwOeuc`QSUe;us^RV^9@zh|mLBvr`|NewQBelSh4>wz1 zw3Rizomj`vWt`~1AsHN2f7^1a0mFH|;nO*+#o%xV1uN$`<8WAHgWY(6-+nDyF&oZFO51 zUMk3*(3M?!>FAo^)n)-p=)3QA+(;7$%WkWRUsHLW;c@GZhXFjY_lfw+;akg7aE>EC7H{v>ZAnwXEhl@Lv04w|?RP24@}vQeN$6BALbnQ4Ox$BqBf z?Tpo$)r#IBUJ;7=RR-6h|79a@mQ(Q4~gDX@aaJdP)m=z1x z2C<8C*hMGonw1Y+d?F$WLi`KN2z3&8Hh76294w_b-Q-S*skXW=@`Ew|Owxfdre?fKM)_A6FornVD#qpmOcG+S@Lp`3?Xq^!%*Osz}u0vj(0 zn)0&xpM3PJe(Sx}p{FjMtqC{w;+ZIYc(gS2-3fMsLtYmz_@~h|7^TK7)gHRVFWk9l zoJv&wmTpTOzgZ*qhw{VmKSb87P7hx4vNS%*<(_Tq-jw{#j;C4?DxWmZ*Q;t@ocO;ikbI7xRl~ zH@CdlO>2K3?%Qh{^Uu+=mMOO%Gs6`RJ;r-1Q7=X9V?-oWuQiuv1fSyXPw6sN^4wk0 zv{%V3OhD)SL7yg(Aw6O7bUu0aCu(WBX)@ewk32N9H@Mq;cxaqkn4mMfBr$r`;a=ON zyjJ|`Ifn#%mAE7|cw)Az-m&<@?ZOu=W7~_p15cSfv}7Lble?qlyh=w8Un0oPaKrv^ zo!B~Ss{Da#QHH;IQCoTl6O>cQ3Ao3cs0RO1KR7+^@f0PSEXsOOO&+6p{@@nT}a&_cxGRuA?KE1vEF{PxCC zS%3M1difzow)E(gL>3-)D|M{OuGuD1xb)=(X}0tRZ+y;#rfXYL;OI(6t8)4sLNyut z#10u9e=?GqDki>?IbhZGtd-jerSbw!SdY3tu1N28I&g4=e$$KBG23O@`SHt`8)CzI zuh({uesE69du83@#n$qTZ+-mIRb`VmijugD&?GLs+0{EWHEeCU2tZSq?RRWz%Owb; zj!@YBt-D=tKWn(*sgQ@78FC^yM^Dl);!A5b~lR+RTD5#HB6l-<4EVusdL+r7c92u_(Iv zFX@WuyQ|b({Bw)&`FCu|3-5onuszAoay6PGeTC4wA6y5%OvL+V2N3PpJC89TNh#mo zZ{Dy*&h6G810FY`F0JyFbs1S=D@lVF)LqV-!+(d7D|534>Qs&zu#LL!*k-4{=#hD~ zIzxrt^Q-?BqqP(GM{4;QwbUMpPF@q0e$Z`y3M{Fc%N z=aite|LD%c|Hg%FA!%WYT|D^@THDgU+F{Mocf0qXc48Q{R(^4ja7e}5($+8dYwfgs zCx1>j1T8}=Zrt*1+Sv1Da3rR-;Y5M>%kiu41MD0aWUZ47IKN-E&1n7X&Y2$7s-vTO z=$R|elBz^VbB+ZM^BLq{)$+hPde_kBORI2fG%X{je^Lq47 zuJ4|Vsg0iT&u^JB@0IA&c(=?n%qxGBaL^xzi;rqf#BbTZaZgNXP{)hI;YDsMY?>QR1c&K9Sj;ShB+>=a!(TN?KjkK-II zd5>9*^Ac{|Z99JV!m##*ZwYhQIBUUoJ zIw=2USFe%+r}UTWiguF1-x|+YbV*g0pM1Li!g0N$P3_Bc&3jYFW%7zSe9`+gM8cXL zuT5Wa(-oID2%mSVI`_;#^MF;@qoR&mYhU_zJJjFnMz2q{zB2#LQn$|Xb-utdb;Yag zjXQzUQXuy6|c0nfVxRk+li+@I3c+|1kYi&JK_3dos zq3X0JJck*}mlo~S*0*14|HS2%<-_Ey{X^_KmYc;b-*faq71jNFV|9n_OsQ<_RLC^T zGK#C%VqtT4DaYg11FdG+{oy;Ue!S_hVPscN=BVCJjaPTo-L*n`JBK4zG3(haXS*j} z1vlTVE{X`cR(0~2-|7JR&9OTweN{i=CDj-AsR-6fu8V2xlOY87B^ue%KHQ|Qve5v2 zUnBfpZFT$w1I9yLPS<5u?HgmgF0qCu{R6{&yTJ_R-RZk*z81!wu=J%PT;3@&Ix|l# zhnC`@xX-tl#guu=cgv~u>~dPMAwuSQRy)?s^9%oW+WK!^9fpMl{AvQbIy~#U#s9m! zCV!ImLcj1oyOJ^EEY7Skh_%W+i#yt)g1d4J(MuK$yU6dp{Zxj_&rR<`Q&}0psvJ@jv)M(1 zDh00=8(kXUUUP2b+{G&vMM=~|ILLJ+ZQT2c{&TknN5z?7_da*@OT7f?Pg2Mys0I-c z0-Hd+a3#yzMbS?R6YJ5$YbA*_XkztWvhel7V9wtB zAnjTUnNS8yo|^lmd(ljozDQ_6eMyHj+!A|?Hu3Jy@7|}qM=tZD`12!oM~#qOHqT!@ zerRa8{Yz@}71#E}OERzbR;r)PHLDtMJH@?M!sy^nhnh^<>@dsT0b`5EGo8oY+CF8a z*6CN~wY&NL=hjmh4cnXxbe1x{`nhDoLv8(0&vV&jq46y{FBE>xOImetIdbSm$?+?J zksbjuC->5f3BLOLv9Yk{#`7KDb4{zF-6!nYd#)H~KX~K7gg5Kk0I!n7(+x`6Z zuXAx+5_sd;9!1^OaoW)Dg$GPO*BD4#@;4t7a=UoUw?HqVDL}MWi)OLoyPCR{TCpNQ z_qEvqHHtSY_U-x5q`6`}-3j8Gth<|jN^!1A4|ZAt7bw2KxEm#nyR5%=6G*;A@tZZx ze0LcE<(+kPz?C4DdCm-Uq5G@irk-xX4?*87jz*paJ@ZU%cEmSIPp5SFsb_n|>aF8w zVjo2YREzM59cW@Zn%D}z?W9@!yP*p=716|mlCA#}8w;*E4Ibx@mNxq~Sy$Ps>FKr= zAE{yglv49y#=$O#C|`8vkk~17`;Lfdy=c%Q?zOk+9BOSIw_K=Mv1M>=$@<>pG{LQm zM-;-FfKX?%zveh@{75cfK1Gw_WACRP{rTak$A_X%{ittWJXLW*kDhbIzRTuGjMW7? zu{7Ym+Q6jv+N4!xf^(Jlm72H@cg5s$4p@rke{VYLQZd0k$sj!yi&jR!6o&8kdJ`c60^^Gi`?Zp{+PgdXN%FqOFtaZ*%tQ7^?H~2`8DmrJZ9-T Zzm^`ooGZdymv+lq`_AR)T=*}b{|_)d__qK6 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-environment-l1-1-0.dll b/Scripts/api-ms-win-crt-environment-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..6b9c9cc868c515694356e1a45da370e921f46cdd GIT binary patch literal 19208 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 K_1?spL;nYD%wGKf literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-filesystem-l1-1-0.dll b/Scripts/api-ms-win-crt-filesystem-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..430331d75a3d76b26ffd8f3249830859e1b2cf90 GIT binary patch literal 20744 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-heap-l1-1-0.dll b/Scripts/api-ms-win-crt-heap-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..7247858d7c23fda5408a3818b81935f48a7679cd GIT binary patch literal 19720 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-locale-l1-1-0.dll b/Scripts/api-ms-win-crt-locale-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..d71c6c20a21bee4180cd6d0fc4df009b865cf565 GIT binary patch literal 19208 zcmeHu2V4}(((mjpIS0vU34-KVG6<40k|l{Q3oJqMvP1*02nrHZK*^FZVIU}qh@vPU zf}ofXktCQE5ky5^?;=5u=iK|=_nqJQ?t5>vn5hmm)jie!uCDIg=(Zn1K@da*Xkh_@ z8o`}>=~4dv^`9#sn?>Xz3sg^kTeJ~jbz9WY&p#X;N(k{K;DXRzxZvOrBH9y=CPW0I z{e#g)HV){Z5O2H!Gc$w457El{j8~)3_=8KtYlP2=1U#=1E-Qj^&p)`x`%=>F{k{Ci zWtTLwHHIMXWF*wJw|?JJ+IvV0&4^@SqVNn$so>5=d5%YrZ{%kr1d+3sh@1?;fIw$h z)V1kvd%F`y2p@3_MLm!A{} z-Z&x-f+DDaD6(!efL7}RSUvDxfe=pc0?!oP(BOewW_2F{R*&)@JpBLb|N0(?%>82% zm&Otp9*`y=Z(vW}KWu3!kC~hfs08Gd{E|mDztxw$gOLN4Kc+F~b_CzWEA-u6adeI3 zF^CKGmk$b;kMa+e_aYGG14F!Ufq3~qj66mjRtWX>T$Vw8KVX(@oUG5uWnLmSHrCtI z7w}7CPyxR<79cbPc~Hs$o0otw;1TjbL(qOOE-B+c0#+iY{dz665#oR#vYu;xkOmmz zdjUNJqzdx<02Kr31%%{;AY(uYfT{uA1+)N20#vpJL0%`&D9uN z6BmwG_+92wT3{fKh{t+`{z;XevllBZS^zc}7xeoV{UIMz3-ZKzMG&w-xadE==-0fT ziwFK?g&(uVRe7}8>O+>P%mOk z=pUQ7IvEs-`jb+t)4_)c_VM>6`VsIr@5Sy}rOj_Lv0k7g_%44e`%^mBhk*Z0q1CBa zUp$fA^#pt{@sHwulS!@+_2qUs>H=SvO%oqyDIHBwO5kJ!}EXSg`l_&ybu)svw8>$4#K}lrw7;16c#!9Q-u_&*ZC_>fQH6v}FJo_11vw zl#uVblw7i#LIv>b=j$0rKmd6}hyeLR!H_SI<_`rzcpy0#@_|A?@k^94Fr)$;J54|; zkO9TTvx2xmT|-bN2nvO8pnMF_1_wAiOPnN;rih_awO&BEesBiy&wNMQ@uQCCM!&Yq9j*$=u=>{4@O* z``8xL4*?P*z;`09YBls5y-xv67W>v4)QJKbkyC6ytI3)z+5y@2(BR9)fLwBa29di8 z(gQOs0{Zz~zkby}|E9n<05T9@)ZoB-mRh)C*}#7QV}iVjAZrl}-W>Qtn?3NhF~ii23Z;e z6@sLWL{OD%fVE+sRVl16JqiK*!7^k#1dFb!N3|w!@=J#OfZ$U|O`2{(C-721xlwfq ziHii2s9IqX>UaqXi9jMbm4UWR=b|LSEYP4w$yXE1ysQ|48mJIO(FnDPiiQ)p$pOO& zv(o^Ej+4O|7w+dD>`M#@#<0OG?(r!a7GZS?mdgoKCq5YdJq zgwPNIj_40+h{7V|d=w||O1`6i5MJJahzklu+ZyV_!aU3vHCPi?$Ed4nsHnRER$~^QUv4*^ok)f)*vZ1~v zW-Tnf*dW2*Hpl@_i1hcu!z6^*>JCOwLnso071#rU0ZBq2pvI5m>Qk*B^ad_zya_GR z^^qQaH@7g_R(+Ri$A?dLG1H`$BcE@zB(!fGQV5stOk2}6cK8dc`JLJ3Q z&Ycgtp?Tm{{lTpnI}i9}#<%s!(;M5_-?D9vFaIp^l<2;99ObiaqZd(O__|P{;uReq zt^G2O`a^YcW7|f3E3s?7mrZP!oEM)y?zOP~+zo>x38rs^KJ;oZJQ@qF#1CEZxfkLX zXQwncV6y*9V54dvM{U$rfj5e0)A)JPMWcl(%N>Vv1y5+gJ{=n-mI z2z03s3l%rjn#?EZ*tZ)@ujaiyuk`GuuS7(*j3vc{gv6Lr(WE1@H3KZRHa{=QKmk2(f^Yj3&YBAssvgJhd@QBDj?s^=eyrn_*k{(Yq)W3*S>h56 zP0a!2m%g*R-Owq^+pBx%QXGfNLWXNLb6hc&twr7^Gyi_V^QW626NLcN!B|bkfnoDj zwkJ7>ts?m^eOn7n37!Z$pCGFe1(|@u^F1^J8yKY8N>4o(*H+EdCj=N4Y~R4`_Mo?T z|7cAro$$25UWA{kZ65q-Zpb8PFV{}A+ub_jh>b}?#OdAnVRd0q7Hficy9oPlyRxmj z=alXsdQfw8`-b(muDE6;zvL0?3P^{(X#f;^15m7g1;r3CI~1I)?T0(>0}O`{F~9U0 z9P_teg*Ys_IOzG8tp%W*Hy-T(mMZ`omvKxT*1%wtU>< z%;tHTot>CO6+#6x?vr<#=XD&R4f@)i(sLUYoSyu@=)gzuCz>?t$AU`HM|e z^er?y-sXPSn}ZtzzUze$>l*KCn0MUSL#v1xI(Nys{7&(C&+Sg35jMUp)LrGLE<*=f z1#C-k>wyD!Hu;Y9N4-z1kIGq{Pk7NEeR6EugsEZmWv=TwQWcX<_IrC=^Gc!JY6W*R z`(&6EpHq#ra30#5c+5_nS3hNBE~zL3&#!~>?rM8#8@gqRG3i+5S>ws5g~THICc?Al zPINgJWD_}3FyAIz2tv(siQ-GZgabXb<#z)WwF<31kL^kq^x6R(?+S-3?oI`19KW3a z+mi=3I~9PU3RBn^^UL>9ftARgi<(nbNl8-!R+h!!Jbg6rsy^~wcyCx1LS+L33@iZ{m~8yN zg@C}Afhhyv!@?T!${2ZI!Y~B`-If3fV4yV&P;iL{7`Wlz!@xh0P5fo(QUEW+GGJFS z^Fu~S+W@V-?QX|rYG2CaRgcrC7$M$;f2~oRfAhINew(VG%1utDhOOS(;Q?t=A$R>R zcdutHn4>0W3z-a07H&{G8=`uw%GNP%_@1-Qdf{02OoVQf?$&TA=P%Xp#6804eM4bl z^Qq6iJd+>7PCbqC9(sI+2BJSbw<-T5D+v3MO#Jb&pKj&s!{E z4G+aBv4UatAz&xL5KLD7KK@=Heu37HAo_(6{E0CXuMCDYlrc(57)@m*fM!ZRSS2$1 zPXg_~@~vtKuI_xWcZ*QI2O4dV7wHhVLEwH!*R2mP1HK>TW_vcIMNH&BuUMk=df{oS zfwg!)0UA(sW=QEgg*Kml?{{*eWqM_EjAdAXDedF=wL?V_dwY(D8^t|H82H#crB>15 zZv5nQjn1=meuw$1D+%FFA9%9I=2f!^CHEt-!coSFNgCXD!Z%Z2^tDf~to2uX%*Xis zAW?cGQqgg64ea{4FWqzgRtMGuV|zi0b4(BJAxN{W6T7Kyty7|;v;TIf22GN?wG(Nb z47JjE%Lg`I6MgcYAB=S-PSQa$CZ)x_o6{s6CS#9VOqukkYiktON4Zz>6sO-}&veqh zdXgTCy1N8nTLFZ*!K`Ft;6xx6sHkBSxUGV(-y#WlHW6Z_q5=ztWSE17{>Qq63qeIq z5e)p_sSSByNG4xFo4ez!xH^u-G3j;mhGJYOxp`sHU-5Tmrx6! zm>FyW8!hnw#Wems6kA-|kOvHTya1_x#4jWQa@E`rCuwr}RfyhMrG{;hVlEY7xI{L@va@Vx$&Y~PUU8LbUuBM%(L7x8+AI`Ywe|9Az#;RXROuOto~L$}uSX@bTT-(PR-7?MA2k_YUGo zG8H7jtdVS5p{Wt;&uOKdlbn?YtlI_pG6^{{VL=7_p9SAL-1qGgTW}Y;U6$4?RU6~w zWK?E%d+tTKi_>5M(%485JN@|7J(5!Jw~8Fju~+^R$I9d`x687z;4|_DK9zmpkfg_J zWPgYiv1sZYcAC5seTdh+LzNplm?dPMA%D3>#Ypfi8y7#cWl(jqXm{>S`nO3eX*NMD zoYp!!q|FKmy&nTRuf7f~cRuL6GdsORzzpR!+f(k#K&(`IBd^HQ{+yuBF&%PN+m|$F zUz@JXjTdG~9b|jzJsr|*a_=tBi@F@4T+={pJe#TDWz94HaC1M&ZLRf!xZnK zXMM)twe_32$e4!=D)d2u@feX27RSNy(y!yDY&G7w3%1+}J6fnkV@GoIrTnjDW#)9G zKP(VE#q3`AzU)-8Un0{s`KHJKNa#?_6!-QS?nH?TdwaGWHN`0AKN$_vc>wM5H0|x) z+tJATg@urQwOr>kQg7RWf5D*b7+Euj#-f8d`wg@0ReJ+m9TlgCN0w0>5E( zSOo?EuBr@clJOfuVU=Mr`_C=+{}p;4DGfY3G+=g6W=DVm-*EHDXj`70xNS}MAg{Fq z>)YPyUaJ}+jAnmD+wYjeWu7fyaPU;FJ1qGa3Ygs9{5pk}b(V!H_kBv2$Sq}wJw;Q~ zzJhY!womL8dO2ZTUV2sBp)>u9aS#2St*7stF`z1&s|w8WeX#C{iNl%XJLBt26r@fj z+ibFD8bir_-L`)}9K7eFD_rzt*ZsqFlcI-reeUD@NO#^L$iCiq{}D6D!qkUdO4{e> z;jz0k2^M8@yQ|qv*U*!W?0&N;`a2?D$d)b%VuMZIoPR2A(sW(k@yKc6XnjmnSHaNw z#H>;rvO$RX?6=v1T12;)rQ^aJ^|e;8!~SDsd;*|%^IV-@Z)P0Oi(|Bpfae{1ay`kL)< z>NR(ik=o#k`kJVL?ijm`h_edBu+2eCoF}?3Z_jL0xW`eJ7UbFJjJ#!y=CsWljMW=) zZaVFfFE}iONIuyVJ+<%7>-C7YBbPH7sN2)cM&3Jc4ceSII5v^Ktv~+i^Xw@a#U#{= z12Pg~pP`e-@=_u(RlaG z2p)ztEPapHfTID%W>XVPw97M1=1=sQT(1A zI>JFBr1y+B<(hg7>&E9^?`#;YI7(D)v~CL%=a7tK)V5Cxb2BkqbE&TG%tqh#BL)lc zF{1IsT(Hli0moMU_F^&7JBBZ0Uo=gdb;;d(s1$D{DPtyqb$jXbuIg!CQKwc&bAl9+ zhW%}%XiEXUh zKkb^?I3_yYaHi9%KH8D`p1y+Z$?P+g(I@Ik4n^=kI=F{3LQGNVC|z*L=CrjfCGU23 zir#-EY}1kd*8JHl0w0pXxU=2A{dw@q>cia_=>?Xy&F&933Y0$lqFAh}u!%dMgR^`d zLz4UklO#WbST78Q+dmhWphSQF5I0!~K9?kXCcA4tg4FaV4AZL6GZl#Mu7su;F)Z-v zTrRRRxKxn}1DwHy(@w%!X2K$o?{?f3p#iRe!wF8GEyhEbGSI^2IL`y|NKrE=;jvItk*t|ELcG~R9WxMBAX!=X}Gu**? zSHEQjKXZIJ)}kZprIH$Vecce75rj%At0^7DtxJlGxKbtVtbXCb@hpF>@*wf=x&a^S z^s&RQc-!lwwJ(V7!=7k-MY`EFlN{1YJ3=c`Z#5o}>qa=`)T z%|dHro-x^c;WUh`C^INcoqNI_juU@|p-wI(Nf^T^V#yi*nCI~O zU5r(Byanc6(HezeTxMtyz>1gclp4cI*1$6ycv8-2WJL${}O0 z?EPGM*-TEmacS!5^1ayw9CHlWU%7TGC=~Y#o*YXJ^T|KJ)qT_Ux%j%$2CJ`llM8IO zwQoGk={eO#|M~htVyDj20>k8e(RX+~-()dV(TtcepAP6)kmR!*)akJJSmDYVJefSq z$!(r;QR2ply+Y?A4ZrWHbB9S{d@F;K3V|Vsfq1?c^>Sa6cf3SrV3Oz*upJC5xeGm# z%@BAL6%q_L*nOok*!3cZm;Q9uixL1?RhJ5_Z%ATEysy%zP#Nx9Bca25{BWX<&wa@- zqW_f9vwCs05)z{mh#x-%?)Z&W@#C(B%?3QQ9-QE?5r`jmt^TTvK&4%OON@3MED8KB z5PK0>iM{+9KSq;dZj`W#I;@FN0()TUu-cE!uw@n|{w@0b*v0!l4jLcZACaGys3b6X z^7_-8F1zgUc@usdZ>Wiu9Jwj5nr@hM0bx@fPw57c?bE_jle^K3whbBQLe6uj^>>^V z_srO3pzwm}j7Oy39yzmnSpqxMbMUr%{HyOshwR0V>HK*%ue_OA)-=8ne*UEDJ#Urkp_-S-sS9~4cfBbv# zi)R*Z&6QX&=B)>B&(W&fl!aindA3fz*AiYY2WwKZKHbQt%NFY~DA%hF>XO^i|3Uv| zRz#=bF4v6f)SvQRqOT7!&Npbi5Dtg!Tk_er0H57; zF~G5wyj`_y-#RpirH}(^bpY9Q({)m&T=T%8V$FWV-tu`RWNjR*LiW+wsX)N4LK>F( zHGs?wuOZtKH7B!@GOVGdDyyWTqynq`6jpiu4ZFQb400JGST{_I62+CCzdQNg7a}Gb zsywVN53Bw6hlqcYO$5%yQt%214q2?)u?Az65-{$~dMkDIt#eHtUz&J;7h9L+>?U4< z%lZ$;&UZiSJOtZ0bmhM1aNw1lDOwW?L*T)ZhXW#CbiQd5fSm46m{o9iJ@%O zhDza2mMG%dz2zRBYj3A(%^YA5KsEasbd;aS&zg^Qduw-pE;-n00&J6J+Ms%kI-=4@}DF*?EP=InSO92Nad-9PNaLD?X z&Vm#6{w>G>g2Ic)CcT1ee;!p{!8n+VZb~2^fgx}BE2%EBs$}*b$KZbzp?JaKZ5!j; zaD8;19VU^if~x=?S?qZ`qOj|yY}7>;K|m?>Xy`f{rtO1 zu5-W87W0`}8HN6&CRg3h`|D*BiJh`_>rF=Ao0wna@p0@BY!jjoK@f@mF995U?H-D;n{A?eiS=9X` z(|)!KHztq2-M3Ai+TG(uz0Br9aY3x{DE}Ja5cOMp%JJJ$HkNPm@russhkJ5Fme6h# zpxqGs#~{PXZvJm^=r2OUKSeM85V$6vBw0EJ&_CmJD|52U-P5mECwu?q2i^I+*Z->s z2kaKacEJ`1b`gctL$+rKJBQd zov|<7sIInf)@L}0r(IL8>H$lgsPuScsehVSRu?gMqSVxI%HiY{R@gu8d*52{I~UyD zA=>^&1W3+5Ia0@Npi0xMLmd}HJLtf7tNK2!wPhsn1naYaf}Hz1*V&y(v9PPi4{Sd# zV!_Yif9%1NtGjy5Lyw=UX(E_<@qDSeUsjd;`Y4-Gf!DcO{}h^=Cdsk9x|3}}qW#C0e$oaeh$DebFzQty+9q{2Nn+?U)XP)j-s|ny77?lL&h5e`d;S9QE{heF-f({ooCa6j|+_@JvLSL%&h1* zpo|R@);pbx?+}|b5M7%pDDUw|Jw-o7hMV;PPCMJr!~WfU)4Y;+y|-KmQ5y=MIq>q^ z3TfmN2>U2=N@?;$?@{ZvzJ{&+q+{xE?%DVNBTh%=!9lrhb+-+A2AB#FHo8`)!WM}w zcF3Y_F?~FDA79PRpxwSU%;*How&(Y542kC-ifF@-xW!-+w=iWrnDbA=^}}zjka}-QCPgx$hZn8Phw)U3-f- zlV;K~j3T#G&0pAcMk+^-HME@=_(tdCA=&Jt?CZ4Md^XpkRO4B_*la#zG~_CDBs%Xw z)&;7R5j8a=S#ZbpjGS5+xsg!(0PeraAS*|Wai zZo^Q_xuTfQ*|dI#w8mx;W&+8!dz+tc|M0*$Xpm{kA>AFtF)WW>W#_*ij#qflI;d=s z_2mPqU%K7>RQeIDH;pV&nJN7NW}UukbX|RG35=9bm^o2Uq#}N0KJm)O1^Xj3c2o$_`fgfE;xvFsoEw(CcN7XNZ8;S{n#}TdCogR|1waxH5`p^T z(w2nKpkZ7xH#V@kB_X6h$Uq!SnIgdQeu&=f%78)uZ~EtTF%{ZNa#qvD=*hX471fRo zkJec5mEk^owfuzQXNi9I6wy(Sq;adw2rsJOWd$>p2D}u>&~Srkf$(@FYN8~eu_B@2 zpFTUOp`vUgudHsOCT{{ZpZ?9WlO-gUPT$Y188|A}rbSgb3n zsglosQQTUY1OD>?+eN4QUpckMgqSZyv8QUGUw`8~{OL=a ze|7-Tk*&Xy0U{-ReY3;QQV!d8Z5-Dcd47YB?B@4e4pLMY5q$yv9HDM{&Ws&6*!3)I z#QMQw?`}s!rUx4vHR$RL2D47y4~Ly4N#(}OcV2!nO}O16;i2T>VKU`nnyj>2n27T| zfK6~b+mmH=@apxdExkC-;B`0n=aS=_hH&3Zu1X0>_;L{VMN>~(dZ*ZWp4~DZC8G1* zIpSnxN-pv(=t7!VH=-b~eUFk5|vX#3KL2V0!XjArcOA6ZbSLYr6Uvz3qC{8W;(8+(0UrYOZuO0Kqjc2*K31KLmqViJF zkh)h@U7s+Qd#Fc_egEPd#0S^4w)u2y8~QZyKDznl(c-nEbC=!(I6BkG+L4SnzFu%h z>zel9NR8~$)6*|_;?A?+KDU)eHCMvPlK9Smt^IUM+>N*?^__0If>U`h76k=(nXb~8&dpN|haOR~kec6gTJih2@eJiA zPi+2xv)+pj-FZIy(-yXQ#tpVvFdmQ`(R|Hk5$092T{P%gVR@PMm$;pWw(XCu3hEm! zoD=${@i2S(MkT|c&2iH!~M1!5ZLhPC6~uV<%Qc6qt3WsOzPbdD?wJ5H0z zn!ygrP6XbUk{j1KqsjID4;^M_$*XaYl9k)<_@ zH;tbBeAMj3>{G%nTtG*=27%D+s1rmVmr{ppILqm<}u`$_A^>l)7<8#q*3ZBW+H!>7OTS@N7remT1j ze7A|HWI5!u{Zn45qQFhj)2jT)!wJ@mHDpc8^1EQY_WM! zB+RFwc&W#QTHzgYiLL76cl1(%{dK!kh3PInRvWmB&3sDSYt8{CoJSy9e03#S3>|X} zeH3$LH-3aN`yBgq_W5Taef19~)Kry!#EL1uqad^Yk&{0_-@pFh#L4U=-l}n@yG27N zUxk6(1E!fdDTIyr#E&X^PXpMi@7+AOi)G=6s#aXJcUo8hu8q%iL-v*fiq==&T-6Jf zqCIeL{N#+VcDF6NgOuOyzCND{kzk?i()%Pw=}!?StiBydJa580z;%rItMhDK0ozk1 z!HSLi*A7XTs7dd4e=1~p|FEt>I_<(yMX8Ke9BgMz4Q8pDHPx=SHC=gq?oviVVaH&t zp0-Z;D}iP>;`?UmaG^CA_IvNOT3+{ZJ~isN{@rZY`MN?h9oMdp#x!c?=Njf+gxCl7 zdZP^3G~b}<{w;G9}}BlrLmifFA!V0G*1E76Rc@g zLM^QQ`d^zq7ENC^w||_b?%eIo`f=w^G2!1%TmQvl!@$u1znCB&8(xmvV*a}#CVwLP z*O>6XI*zdvD5lHft)$(jNRWt-%Rui&&NGyrW*I)C#GZV-Eg4jA0VxLJR z=iM~4z)>w{L9W^GpmfGsTI1kk<46gUi$tprY9aPT=f=je(>kP2q#VCYAl!bA2N;}n$T6~z&#xN-ZQfzAgJjS5utX<6#2!jeW~kM!{wy#^PyaUSsB8(oy0sAMT1M-)4edE6p5603 zSEUkE??G2T1-|bLZKxO2L zGpHfF*Siw@Ex)#ugd&1XTzB%aH({joKX-Xhww3`jVP)GF#RYBAYH?~FW|i(Fuz1f# ztdHgwdo^8>a1~CtT#?WOCp7*oj`zR%{g}0*1LgN)N@{AV@+yYPCh~@=M#dOfSbEW4 z7yH>?M>~W>5WMi{jks_k`1P3~`G?o5ryH>4jHHI1?pAyai>)mCU`-_@RVBCO1k8^F zmb7R6JATU>l{6M z#`VZ>b$dx{ctonxBpqJm$`)?=q+;RE<6}{(>HCADBkm38D}GS(PUjxYIafHBQJ~r# zouVgA!(=dKw9_R#YzF7x*&|A&+$eAa?ZH3tFgl$Ud$L00^hY96rqJx#Bd%*FE73)1AqESsT{rIR{_sL5$ZLh)s_!t9P;51 zM$QT4*5~0zc4_8V9{7@xaz(;0`c6m_$Bk?6gGY)Bud zsP=6n!|ANoCkK9wzGqP6; z@(wiU*_Rzj=R##V7udam7zUvV;LWl<# z7(l2Jj`+`l2>)?#9->7R&xoQ5!FuINic`I^M|eb>QY?cW#t4j73J#2kp)-|&XiALu z7^R39C2LoArD%ExO-DpTNNv!x{tV&TL?zlrHqzF#+ys!Ntpju8iDUjomK;XtXGa8w z<7wF?bF)DxB$Eqi*&kfP*7YD2C1EbnQG`61t%ajFah^iK5BND3LPBt0gR7An0F|L> zL4kS+fTVcMz>k%8_+&^Pj2ey5_6bBvR$zfp4_>kCABK>CIa`1{kl$li{BNJ>FhT;E zfl!8tUEVQm*Dk4 z#y|+Pr;x$6#Euie^}r5@+c6>zZ+_(8YBNQv4O+mj4X5n(jhAJ|kgT?7(V~!`Fg)qt`=>)= zy$5&;4gfXL-qkQFoT2~=gx145IjGaab@-2cPfO$w!po%s0nQ|_d2}2?CNc<>KwLG@ z0=x%=JcJ7U&1Ys3D{dm;)X_1h5p?2;+B(H-I+a1Hh+^kPM&$SOar`SRftP3X}o0z&+p% z@Cy*vK}Z!a2AqHZfC*#)1wc7)1$YSb0DQU#$piX;0}u!-0yY8%fQ!H*;43g1gLVT< z0o;I4U<6lWCZH4O1w`SkRsoCvCm-zx|D$-oT21Bd{Y02_e4KoxKscm@0fB*4c^25bOdfDWVqTY)m*D)1bjfNvQC zOaM#(XCMHG2eN^kz)7GU=m2^FaqusyfC=CXgaC_y^}rsW8n^?z0Db`C;9JyzX@ENr z0we-CKrv7OTm|j}ZvX^-WgIXGFb6z5_8)S>@kUerhGm#^5Le9tqxxz4R7MhLRVT?5g zc_J_5jeL+Vnv491E@Eomqeg`sd1ffk@h6osNu45Fi0v=A{+9Act) zlz==plN9+E6=sjGmyUr~^Gi&rv6OfnK66^a{O3Z_r!x4t1mV zs0V#OAJHfD8GS)t(KqxR^`buX1N}t5P(K=g$4{YfQMf5Q6kZA+g`Xlo5u^xFgejva zA{0@I7)6{inlgqWK^aRKN0FpRQKTv3DKZpUiX26rqCiokC{dIt|DgXL5*3B~t%Bks zqC!wS3=V<<<7hf;g}+sFd{l5SIfA8NMKDH2Fp$6PZ?@PPh#F~)tr?6W+haw6L8spg zvNaGj(jZ$i7)3V7iUNcFaWrOp9F2jGf@lnKl94g~!GS?>q5jtYz;mvB(wA3{rtB`3#4 z|Bxtp7+Hyn{vk1RMl@MV$o?U*!SrYj6D$Qp(4&&c=?U3CBrZ5GibmG66cE8#S1cJ< zlWUL={X>|vIF7p{WdD%(nBT0kRsOW3U|KAbO1d&z;~zS*)&><2F|yv+8i?YoIhG7+ z&bnjCpdL|sg9?bC$I{3*IH-V#krm6<;8C1aJE(w&k+;v*;8C2_JE$NcIIoXaIH*Td z@t^`C*fl!b$cA`oAoxd(Y;=PPh!|NNYz;(lHaeCJYR*Q-l0iMP39&VJ6lW6}R6xYYCdAg@QJhU^ zP(ehH?+(`!H#njRMX}lxr2oAM4eR{jUV=!qNr;4!T=BRT>OF>*#0(5&(#XzvST`I^ z&N>ti`SF`2UyLQQ)Z{#b9#8+LO>Sh2e=@mAfZ(4@ZW18)CzC4;guq}r$wdJ;l;mPTns6c|6l2IO;W_bQ;RkZDSTg4qn~?B;l%FNy zAt^UY4907F_)0912s!c-506lj3OgvX4kMF8d07!0m&BiU6f0t+9#=C+A8SIw0}ji$ zh$}gA<6SSC33ilm(CAxF$LmKu8hapzS9!fIUW9Kl)io{Dq_APkp;cPs( zgg<_AsX@Y392djI;8=PhDIG51DsnnP#Fga25MnT_8Hx1nx&>UqRpk7Hh%3o;LWqQNL{hw3@JRBdSTe32p~bJi zki!`eBBA843yE;MaNw{&$id)jNVkAXxQd*g5OF2>76_40j!25%0v<`e6idd{BeYS7 z#vtX#1%NbICnP-JOa&sYBw1sL5OO9Y(s3q(Ymx_+xB!qo`h z;hIUY(WEXFOC&)F}W*x|eh;*Td6+t#cL`2~c^!ON3^|2L$ zM^0OKQo;f(Tq(p=S0jZ>f6hjMS1SNAc$zj#d z8QBm!Lns=GCL3i(M?v&&Bk5t)&>4s6!3?*&7$k`JlBs?IeBSh$f4PO%%08%1Cf`D{QLc#;iWFRs}e9Q)A z)`6UwNXJf3st8ufD8z(4pQKJ7OC&wFUSM?H6U?-1+0&AbLPUO6mD2}h80+MSabD+wOV{l)&bUMT|jn#&=$_| z-&vmb{rH+Pz8iNG>b7JbrxUUGHdP*2Z|3|x0R;u@F=3@P0#X;L^Zy46N$X zA$c{C27`5E3|5fwqa}o}UkFyEDX@M_hxOiASPPDU^<5V@Mni7==M0vD!7d%vfaze1 z2`kokY6hgn!$8nPz*!8WwTD`x3|-qAEWjw5C{rvc73}4Jyb(}d8et7DcRZ{?E5RDJ z6a0hyF|ZasY{wJQ;VaPWtH53dD7g*+6;{Nl#Ok;Xu}-c8>*rpOG6wE09*$A4u8qeS zL25h~mB?oTXBe!r<3A%CV{`LCPfz&g=QWPAAt;7)$UXyq&BtVGY5$q`;%I!Ls62D`- z6zu1YOROjOXXR(ru^Z&4gT;7wPE68W|Iu?l3?*UJZ3yH^gc9KzSGa4uWUO|8w>>3z zvdIvO*Jm_QR~E1nf&x1c$k!VARR8>$!k#>^LV>p?5G=6oaJXf|ej<1$5bSWkO95XR zs0VVZL`ab5D4yUS{)j#4TwDlCGyB0OsF`V>`Avkv&sCIW_7+rKToejb7!%~<)e`0A zlHo;|6Q7V4AFTSP8FNv1il$*^m=sAPh6!?0P!Z2At`vkRlk)M5O>xSh1@P^!JjD(0_8kR;;Ay+Vk7jdUi#GpM;gt*cu6tvGu zv3IM+l53V_ChApbnW+vZ$6E)z-alR|W&eT?O+QWQjkI3e+h|JRt?#;G`BCmCukm`1 zJv`E1%lU3_H(A{CIsR;e?-h^d2EhkkhmK8I_A!`y>#Z(PMOTHT@_jQ`3mLqseWN%~JcpFJS%*Z9%D8qef3az?lb7T!$s=WVY(|Se9D6pfUF2JYM1r!8{VfA~ z`@8e|)>@o>=@a?H5m6&}yVMoc17osE*GiifEo*F0z8_F}J4CUiBH&liH|@n&Z@iTG zRxkGcgXb-6O_RjXsdf5Av-ahr38#B|sQn!KQAK>zYT7n!nJ=m)%|82@eHJxQx*jR6 zyCFMzCl@qmN=X_;5Nd=MlZPsm7v+)U8QU3VG{^sF@9fKEj(1}WYgSD;WOIaQLh`CS z(wJn*SXG1X4`$oO3ca)Vk?`ZV*3pZG$Hg!YJij83Gv*@F=I*)v!Ec^i|g~G#L5*8s)jya-hBVO{|R@(d<#cQg}fC$ zZ8GLF-uic#C~e}sxBb<$=l)9zo9Fq_v3ll}m($IQc&11zKYd=mJ5MO%YoB(Z z?grtu#}cFCUu&9vSh>S`;hj%>onfcq?W-=8_&hq+|H}QQ+_^QQ9T%GI94~m{YsCCR zVc61nRV}pb8B+o-@#v)MhIf535mB^La_T!fPP%U8y*o_{i>YTq zmSHbONnWDk|I^CX;-}utfO!K;rnyn z71`R0T~1OiD(0u=dipKD=lezbOx0e&8onjn+xjhfvC7DP3p(?7rx+| ztad56Rd_0Bv1e?&Ygi5M&630C(8de0ZpDF9p#xZ+c}wGy#TT&$C1PF&g9Z0LDqZl> z&T8MeahJ^1cXxTtUe)N6R}6b6x8E|ottq1Wf~TWKV#})Z(pkpRGqO5*GYZzyWX!ok zZeDJ8i=FpTIHPo3xlLE%Kze~-730YZPl3&+wbI9AQGdSlX2_rIO;=?*ra-8vd4Kex za+AE(_vg#j$OSJ!2X4lpnRh-$n;fW5#b)C#_h=q)MZ4`V8|sMXV}R-5kBe7AOHa?# z1k=}|1_p(i(hNhjgJ~g{wt*haNITHTFho1VRNoLYH8c&SVKfd8cw=<@PU~&|5qLm8Z$IyaD4uliMBpf8=5di_&{H_g90Du zf`J!g%isg2{cAq(Pi!+syt;(LqdP_}%M`gUJkc$3%Bniw(yzx}Yv%3iC)$twKei`^JZ?S8hXfDWt}pr0 zpPD&2S1bO?=t=iFvpeL}4{puLztq7${?5k`sdBBhPXddQ+%ov|Q~3M3$!ez zJ5A5;ijRJNL&8f=!^gz`oXx?#`PX|j3hPZ8PuKCDnf&9@gqm=X$6|{uWj0@3ch)y@ zz3{BQd#7HmJ9b=uQXIG6@)Fy$9fwXDB_^!I(s--E;q7KQJfT4SiSS2K@S~2XEX<$i zpa}_XoS2pSadHS{yd*b#-KgX7ej`aKIP~#@KmXFg8y>fW+OQ9sO^3fEwStdTL}&!8 zqSKUS#52R`j0k2j(JR9+6Md?l9@SJ|54@S)ps0t7f2X7UXML+<3?IMoSV)b0et?pa zWnO}N)HK<<^qV(6ypHVODk=Wt@f2pd%qiU>y|)AH7c5;=TNvn}p_fqB^}|XIpL@c~ zoE_KfIh*XbaJwCU>#qrq3*uKb9*DDEelPXmr?Vf8c3<v-Y*jZBS>1YM7|v6#>I+iQY; z-MHp&OLaS~F7ey~Yh-AMPg1#R>|$P|XTH9^*n}^`&&4xsk|wX-DaU)R!7p!X2Ys+H ze_1AgzSs7v_tJ z;hsT)LK)!U#kk=>a$kSwN${_UyciD;3>-4CF?@o9dhr?+ftP0m6_{0o!PbDbH}sTs>+J*$tN5b-=@8uvHbeeQBn~%_Uus7?h|&q zkd)XCmn$Jng7FnYVpcex(-yJ0s~2K?mfcjcT_Kb9QqX}xP!eebIh zZ_l>vTsGFa{-0Y9H>c^v{M@}+;`y71m!-QVpR3an7p1Mud-!En-XGR;d0dS zt;@UP3CZ_`3_&go_E!p4UzcFLX z00ReZsE?WA{+mjO`WP<$eZ&2K=Dl|oN0mQ*XunZ&NuUOB1P1;3G zth;GnlhYw4rZoBue~ZWFaSoegEjJ$C=7&veMUh>L&%Vv#7yBm4v#lrVrs55KwUq@Q zKZnUp{<-+&D*4whT}p~;Ro$9c7Ryfy#Gt)rGayL$IV<%Zpx^vKrzXy&cXNwzxb zWtpyXW{-N#J^9Ci_3N>im7jdDg1%*Uw;u0O-n#7jZHZ3;r`)4wSJwg^pI& z2;IN+`5nI0nY(&d>>F)2RxoYnig$C8`YHMHZUPxd9J76Qs$JE#>XNp{&Lav*GpLC- zw?Cemo?9HqbwXaG{O7mr$0!XdjvfQOycaLP|FAGPGCm02d*46u-hVg}=J4L)LrxgH zH~4derEbH0t13_GdMtHK%Gf`0zs1431OM{wMVff>A<5#IMSBi8#d&|`m(Zd8$9VmJ zY3vSlExtATq93=lQQNDELx~R?l4m(n%5|6v=SGi`IM{G*@w!T#<}tf+qJt{ExNf*8 zNx0>;EwbqFsygDGFZWcQl37-j^l|mAw^J$I9p}~w@z$-e@91$K*XDX~}(e;_(Hcz_mU1Dy81ItX_WEP-}ik&710_!j_Ah z-5JW=*!8L;n%`WCl+akw+pS}_eK9*7>U~^W_hoNJ=FM52T?Mh5qRLF2n!hI39FSfV zr15^&b`1l*M46y#<_gh@X+6SMCs#FE9q;UYyY$4f-TRq_l`fYTs*ahMAZ#`}XQ8jH z)!6Fe$B#OP)$Oz#NJ&;sDIAA|c3F;@FH={jqI}EhmDa1O&-OPbH{aJwahj-UujcRj z+VlP1_Pm1YQ|Ms^V4hW+5LgjYEU~xdfL+fR`mb!gsAK() zXVvAXUJE^2Air`<2$#9`5ubIH&y_n*9K9Y~k>tVKJVVE=Y}3&_Ne7P?ZHbq8uyLhC zyo#>geu0>xxj7SRir%ldu6*~6g6p;XZigq|C^UMO@Y1@7x)(98_ib&UY7B^8p6hqt zS+@9opKjrFojH<`*Ca}QQPb36x^Lo7nCr#hb^H4!CWzVJ-{wt*C!dQ_zvJDt!AWXC zZt5t~)H4sv?+#B*3sXfga_l&~Gsw=!Lxs+uXRBi4%r{s1x1_)Fj`<>U_hwSbY0PZM zgb=qJRcF-XI5!{TBsWXra1X;ULwkFM57UHU?d0xk>KX4lJKoDTkQS;()6<(BXJ}xK z`3~jgqKu-#5VS}wMdc4yLO9kFid9mS{e5dx>lu{Y``aEMd%rZi6?gie1>Uq07Kbuank2optL$JBsc$11YD%ue$ zs*UogzljYav>?(Xe_F#)v&y45yt^4>LS9uz}>)(A~{J^82%duM&+>2Co zn#w+Vo!y~zts+2t;zExD&1-t%sAFZ#_Kzx6*7>AOKteM@=?>c#(`=y(URBxZ9RuSUd14_<9V3$aH+Ye!b1W-1zPb?JLRQ{5lajP zFv(${Z%j4t{jC*y&y&1YRX4+Y2X-fAv)Fr~@o(cUliLc+&*E)myLPR>wb%>IMLZ~! zt{URHHQ=e%`Xu?q=568Y?edn`QVJYqr1Pal9@>{z5vuxqHKvksvL@fY7?l-ATx$*B zl}K8AHvN3BU{^e!fOnHg-XYUxQ4V`be`YQBbL&~vpW>LaL#buI{w`9x|?L z4v0AJ9%!iSEU0=*k*+@D(C{d5-i;?$69NpR&Ye)XbUxH1G=J~T!)Je;nSODuHQxix zSS_l@GS#95Kjk&KCzfT*ch08;y>^)2q_pM@zvh8EhZ`50dv}f6_a;VZ{^F09Y-Fyy zYT9^5sp@jC(!C{@47_DzKMqXXA|N2sl9OTJW~tep-Ue|+=A zTuUkb0Ey9fx14g5{8WXZNX!0`Ioe6sMCf7Gy+{?)MVZ#!O+M$ppIZ zMuUrCLn6lfOUgI6iuYfhG%j5qpP!SiC)-tasr{<=ve~q}m*HdH@iHC9Y|FxorZ3dk z&X|)YRXj~`@n?mPT`QD?-A=4MNk28lsO4I@YS7wcmO8IS9SukbUpd*nIahXx@n)La z%7}fpH0Y~n9eEe9QCkC!%IsS$6yn`>eAcnU3%`1~PO6aVyc=*-D>HeLmd|I|bAG0u zE9!qvHC-PuetDRaj)Wm#c=_w>ck$J>|enof^HkJI+<2tq+Gr;@kqj_M$Znp-eK5_zC5*v%RC0+>;J$=l?$WTkq zK+ga(;+R%>@zZ~Cl?w8H&Tu*LS(&M-_u_rozi)~dZ>ZXsu{LJ(@1G*(u+4byS)zOjn7ey3>Lp>`fZLh!+Yw7(o+pju5ZC+x!>H@Gsaz7 zt4n6vZow0jCRN+wq;CVX2A8=C0XlKZjtVZC`SRY|HoZ-c#(f_(~R*hBn5|5pVrwgt<88ym9`j*MJbq8X5G-WG3X$3Bh&6a#W^;_%I zuR9BM_SCGP2~IFAzpW(LTKPcix%$$X>6G}lX^FQ^7g=fTowi5eiz7F4!m5&hpb7PB zrhMHXB+Gp^%<@{v!Tj7`i+sCh-R;ecae9foCtKa=v##S-*!lj_&8PK8uf6G;C(vq_ z>NQ$DW?}6W*JaiMN94K>ZWb+p35Qtla^CC-hf%ZfEidq&D2=ErEOpgi;yGYanC00t zhCSP#&ngf5I1Kl0dN3hDHO8kV3|XQfF8=L4_@B*Cyb=v@OAb46>Dezqwa195a^=iHcXzgqGqYUGaaq{Gqj{n z?Q)E9aEctq-`;flLYBh9P4y?1J60SKxPNoi-AJiTQ*s+7PJjEN-(Z_pi~Kx?ug5fX zS~9A9rhi{wp_R_Ou62B>?Xw#`>b`7GyuJ0SWlWsITIn7!v_&;7Eu^~q{s`^38$b}izkuXG*g zUcEq@*Dv5oh34EHs&f7|&t%3b(2Z}5*H2lHexGC* zUd{hQKlBf#hB;<0ew(<)capHT0knMeys@rpmtRnLlli9gbMH0eOJDl$dN^peFt-a! zApR^bWTdU9|L^i}e`1@7r550KrNooE8B5)WrLG&AveDtjQd2Q=_Gg2OB1!$z;f$N3 zgKh{tI8N8f&0RNy78)2I#ncIBMq?I3*|{(S1wAEs(jGH^*h58!-A(w8ykyuni0_=k zcRJzwtZ1?lhR$kYT>}a@AOTNirj;((R7QPr-t+w5{I_1~eyc-8`oA zc}-(YZrwA3(ub*)j}*|k+lKTboy(IqCw6i*e|U4h-bFz+aMuN2Rhgcg{Xw&A!UUd8 zH&e*{j%7&InOf|yj(X5%XcIQXcol=}B zBN|b9?@{ftCWqJqCl6II?1H8G_TJsKH}ma&aqI2DCyzyB@m;meTqHfc>$1FZ%i>-x zRqe|&Zq&#-)k(fD-?99silakz%(!QJmnY0^a!=lnQP6Vxp?RF)C$qyI$7b6tIDbH5 z^X;{xTl2!^>*f3~&S-iRpRr@*6<@E63pH&b>vFbhzp3bMRKIg#enj7HNgm2RwXnEG zXV;VMyq;SZeS0^n=#z zzP3T%f1!fKk!`eVDqWV!6SC#B10EP>&B)S}6uTE_wkbSd_WQebc||D}-Q!Xdr|o#+ zE-m9GZ?bv2La4rkx~WvsN}~psi~h&HnA^FZeA4+)IM7`4-p0ud#=g@mEUCK{#RV>S z?x<0lH;b!aLGo>>JFT^w*77f&u+aJ--+~v-S01b8Z;8K5O_Q96rAev~P2CNy3UEFPwlQcEjyoM>Yx&&EK)gTZUv8cg_)SasV_{*yxw2qu5|l)++K01w9G^I zjOFtAH{Wt^Om|qLvh3ipDT_4AXuf6V3`68zeJYe)G`6HxdiP2$yK1F3>o%Yo+QaMX zqYgMntX#dLz255j`vUp6)td}o~dBQs^qcT?JxN>Wl= z&(yeniJkw|oo3}Ho-4e@>qAW3;qQF!tY7pLUoB3Pu*K3OEQfmU+}tpv#ZVL3KImg93N+r*4 zt-9uz`f=NBjTI|S3F(w3c$TQ7D0gTjsig`XxcHrm&-d8TT`{Yrp-?bTWY1(6>KGcq zYz9AEAcc$axhVD2?$in_wfryX`El-_oQSF6{Xk&}d5>`Tzk%YEJlx%h?UTlswY9c^ zrJ<#^fuWJfzqoy}C{6SR^lTSG&(??CvlUE*|1%GMTq8b7{}X$*FkaU;GQ_ul5j|TF z4R8@#@|Qe`!Mf*`kRR@YbMCQa^}GLBzqV9fq&jhQ_7tVJKP9$)>02JLDU#_S-m*ss zrDgnhwT%#t+gf#bwXiV^8RhIFjv-lYLFMy)B`TWtc*U2U&9-#5 znAIeofa4KMFa!n^LPJn447pv-v{7fcTjj;Rh-%V+86MWcKpMBZA6m&Y>{@t$ zFIy~2@=V~q(Kqt%i`wOKUpW5| zshQ{csz719iEeeHH?Pinks>$4*7t(yaxKS~87c^zX*GIy$A4WrbCtsw_~6`!3FGs_ z6UOM&ca^bAxmEi6h_BD7kzb#`*QMisJ7Emd#(FRph#BI$^r)uLpJ0psiQj&_heWRA z-~M!>A|oM8XIVYhJU8JnOF|@!b-sEPwMrNkccg23+TVI~r0)8(%aMo9g&f*2;e2Dk z>RFX-FFRg1H{7>gC+pACx2P@rLgbFuioHEY=Z)!*%4l=yyrmkhe@e`{*2lZx-sePP zhp@Fj?#YI#ZL2j9$y`sFx^0t~pYSpV%d0D|)+tnrJsub9dg0@fJFycM9N)4u-klNJ z++60?P))maV5NAB^-`XW>YTzxWe|qn7q~} zu^Y3h14hedcT$QRw{Kv~<~ML`;+qw9B0pfN`O;1y1?9Y@e)RYuyH(zwnk@UsZneht~Z#&Oj*KMs6U>LzMEBuFFt^el6 zVd!VT-%Q{ehlgfvssFAylRvRNa#r}CZOC9x6-VqYz5S+q*Us!0i`5oasCTz7+GXUq z%5aX{$_LdCe^ACdU9u=-Hm)5oiM11WD)#-c*%HjRPU*c%!phmclgz^S4}4G#3NiX( z+&feD*tS-Cqr7p=9(xS#KC*aKA8vbmV54$rQF`at5Z$afsma^U%fCCfjd|09`vpp@ zKV{I=eqr;3(Pz7IcTb4;{Abix;)07q($4(qgP}AJr86zP_QcFI%C94Jxoim^x%_+<-wQEY0e|l8w-y z0hq&sbNHX8xhSu>U`H?v7~x#xJJ z`&?l~%7`Kpi!`3T!e|hd(DHV|MXwRv6A8L6j=RGV-HFqD= zyy|7uGXLwzb#K3?PdB@p5hkR(PKkHoTJxhTwYDg4&Ar@fS-yUW&ez5s3BGh$`ilNe z&q;UFt6lB)-V&HI_xZpK5zTmBi^E+f`4qbS^iR<`-!8fAv(8z`K*?kheaqY;{Z`5X zSJm%Sp+wbC$KBV9G-{?lgbfs5;LZC$ym`5Q?VGxm?(Uf8LKrKap&_CK+*@IO-wu1>dBJZ67d&CXMfvOk}4qHqtn<-<1z-ypKI zz-R7D0g?2+8*|QYEEy-<@zG7v?&@(v=|g-rPNG%EryM&cv$@V~-I@(Y1hX!_j+JRP zHEb*69~*O&hjwZ1x-#oNd+(P`a-%jLoNFZPb<%5g*t8c7Ue!@&+d7UFs=O(`;=3W~ zu;!o^U?+;ab zw9nzh?$O83wDG$)tSOeM_uN1I(2`Gc=T*I5&(*OH8@qM$8rdGB@x2vu-`JFDHNCiR zCMl8I?VWy6BPaTm^36vxP5SgT6sBOZle$lEThOEOx-!$kBBKw)IwlqQlqBp5{H7TB NbmozcsOXL8{{WOn|1tmo literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-multibyte-l1-1-0.dll b/Scripts/api-ms-win-crt-multibyte-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..0cac01d0a015d0e750dfcb6eef5a6e3aa1f39893 GIT binary patch literal 26888 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 kE|-x0{tM5LBN)oSVuQ8`l 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-time-l1-1-0.dll b/Scripts/api-ms-win-crt-time-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..3107f09f60e086e4e4993f0fa13ed765b2d3eca9 GIT binary patch literal 21256 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 literal 0 HcmV?d00001 diff --git a/Scripts/api-ms-win-crt-utility-l1-1-0.dll b/Scripts/api-ms-win-crt-utility-l1-1-0.dll new file mode 100644 index 0000000000000000000000000000000000000000..5b08a2f821882de6804349ee0fc6835829188758 GIT binary patch literal 19208 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 A{Qv*} literal 0 HcmV?d00001 diff --git a/Scripts/concrt140.dll b/Scripts/concrt140.dll new file mode 100644 index 0000000000000000000000000000000000000000..10651450cf20c7a97acd10bc5c6f3a90e056a86e GIT binary patch literal 332568 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�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

ookQHE|| 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

A4x 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%0Dou!SueYNF-P`C#T-o3Og*fo? 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 literal 0 HcmV?d00001 diff --git a/Scripts/msvcp140_1.dll b/Scripts/msvcp140_1.dll new file mode 100644 index 0000000000000000000000000000000000000000..c0253df9d68f3a776df9163f83898c858d046393 GIT binary patch literal 31512 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�!Nre^I7{@WHA%SHDGfQIm{f#!y}`h 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�KbxW}<*TmHTzXjvn6y~OS4q&LeqDvTx6 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 literal 0 HcmV?d00001 diff --git a/Scripts/msvcp140_2.dll b/Scripts/msvcp140_2.dll new file mode 100644 index 0000000000000000000000000000000000000000..93f00f5a97bb5b3502a448f69bdad85dd569b1ef GIT binary patch literal 206104 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 literal 0 HcmV?d00001 diff --git a/Scripts/python.exe b/Scripts/python.exe new file mode 100644 index 0000000000000000000000000000000000000000..e2be82b8919f47d0e8c9e0cd7c68f09dae42fdc0 GIT binary patch literal 93696 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 bXB;FQlpK^DBpqcP`#64^2!F?_Avy4W`8y58 literal 0 HcmV?d00001 diff --git a/Scripts/python3.dll b/Scripts/python3.dll new file mode 100644 index 0000000000000000000000000000000000000000..95b52c3236244797dde09790b80e1b63be0cba4e GIT binary patch literal 51200 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 g5$rv)vFd(aqfBm}72&{3 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%0D{Yws^wf?iiGEWAXruIt^LLv1 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%0AA8 zP%T(qFm6YkO$jtyaO{g40A#N~OjKkI6Cbj#BJhRTC`Z5d4mwz(23BBQC*-M7Y+Mv_ zQa`3Q;~RSo#iKc@Jj;QWUnX!yaI3KKH-! zq-gLiur}xGSq`Yf;>fJx4%F-!}2oPyj}MZs`wJ4(Lw~Y(RXZ zi?~u)Qxjse_{D0SHui=FjnX9;W4JW~Ou|ZNrEgTIOcQ^IQ`n)!nXW?FSCEqopL^Ci5xEeHzs5bkNev8OldayZ1(HD^UeWixXf2tqn z54a@sBJ&Alxa8G5@|*!UqZ3sIZ`?CB*vQP{BA+Xi#7&S z`$I%z8R8yt47Ok|ZPfT})(Od8>O}3vyg>R9YgpS1hI39`?T3`U~OwdnpoWb+O+ znqZ)tE;CByeXX@*x7x+)i{EE%wr)|K21%EepZHadZh-Ti(}PKY&ziJ{cHTIDc*|7I z0;2gVMLA76mCSKiAV0w(I&%->QDgno!Onaf&zONR0Q$$V`YBb;{Ci}G?Tv9^i-HGt zQo_3+v}w^jU>>p$+d#|znBGoc25T6}HH8WSv$G6lzE>B?HHS>0tLZA}a_Oc`FFUPW z-S=3XK9a=?aAtcAKRc)66ZVO1gn4EjE&;*Mxr%xZ<|PAQ>bch8rkY4zG!QL{2AaeR z>HEA`pt&Fxct`Gb+FyTG{fMJtng2uCnZQR~U41_g<}p^{1T~8LSg}T_ilUFC5lv*9 zkr@fDsHkaCz^$NUBq(cVMj8JMxL2#SE_LZsw=Px`twa=pAmR>g;68ujf*WF8=KcQ8 zoh60*W=U09)yt9H*|Z^OnQ{ZgqtPk`+22i|b>{ zh5jqYd|g87Qb%ivBzP6j>l4!pK)Ie;SFuEBjibsRN$9M|Aqs#%rx9MLI>%TtSf3@xt z1&Fcw!-J{6sh~HiF;cnm7;m?Fn~j46#xO|bgvhSybp3gt>5pvI^#&8R6xd%Ob$HdH z0;gRr9A~##lex{RaMgsO8D4~ode{gd)Rdq>?=04cte(5j3L^asdqlAL?^Q&OSDb^9 z^iDSQ+gL5G$1*6?NTr+}PJGm(Fp^+u01GHU9AjlZrIx7Mb^e=1)!b{gdod(y{h!rM zbpI!{pXQwf!zf*!1;_Id^FD|+ydTWmMhOWIHqjE~?_QD2ZV&{$bRSj$ORde{|Kn)= z!1#`vV}O5sO#cfQ04a81%Nt1fBdjmUeru>ni?m+9{jrxUMD-T;W2CZ%Da1KQ14?eC zYT@&WD}qYEmz|0m(a7Ehy|EmyH=4uwpMOL`eeY~*wcTxhH2n+zEuv!ehh~GR8I+3T zxO44|6YJhto34|rCO9LE$A6&RV&5W_%fgkuYHk$vT(6{tCDW@5n9UytTOwLt1M&y6 z243K}9MhJ4VPg+i(j#5FCXCGC^P>9f z`tNh;z`oXe%$wJ~xaBaL(E-Ir6#_k#m|r7Q5hCd(9)&t36iZ)N$Nw5_*Kj)U#wE)2 zBtEJ$NB78s74x^4`CDxBw<0TWtNv=x_c?!w@fG)J`R2SkTU}3m&P+gt!ALIWW$5(9 za59nr-OsFx#CwnAZ$^Yr#3S!F%A2XKe~Oo#pJFc;1S<2jMB?7k!zV+%h3wqnC#`#q zWWT=b_Mvm9!r)D<)5c0(Z23pP+VWp~Ytl4VEbTm(HVD6WSyxYyX2gU@i87@Gd-nei zq=i{jI#Ws`Go(8yQ%bh|VDf4Nzp()>^IsMdm8m{|G@ai{od%^2 zKc!D>)5Wa=c|N&r&bM0M)_vJz9ZYIR_99g1p(`PGqv?T~vK`%Y{Wl=o`7<5?8chaL z?N%hL7VVgKM{FfVj9Qo@+``SvC{FZ^6QCr zD#r&Wy&JB4GO@mrm*l0L*?%?M>FO_oywaCx3`G)8_9DxY@xhk@Js;SyVtjDWezoV^ zua9-LeJtYj*U0b;;SQH^(%SLC&NX}op0|82Jw;{B8?59(`I4{NuS&iCQoiKdlzJ!H z@WS+DVb9R!8?MSJYpMvW86OGGeBBJ}ht)r{SkRyBskyjAJEQ=EoLKBRfowK%gUOox z`^dDV^rn1zhICu2>r~rHYU@U?I{vimiDZt>X_%-X%y=6P)gJ8wV%O89X#I!*?nTI` zH?@uz2YDH(Eed*@OQO*g59mNn&ulB;DQ^hqZ%7!l#OBKB5khowczlqek_DyD8-PO* zubmY-qB59@up5>QX*1-7DvUS0UwX*&q3K1lseWl9$zLkJlwDk|7PBAd&GC|6^*=Xi z+li&@%1d%L0y`PalVMwAaP&+uJMiaIkmJ`@3GEm_Cf67kcRkUUD=rf_u#(nHrSBFZ zq8@LUnI7(yRwQuwEbS6I)7v=Hm%55L)93Y@%}7LNa(ff%daR#gxtug3>S6f{-+d}^ zrYMZRx)WMr|E!LR^)V@xYaQM)Bb@y?4G(ew-Ze#Znu&i%`} z7kB9&(Fcs0(M6tcre+8FuMvem;02ESE0KfE;mjhC{n*Bf)-fMp-Jk&tQbHA?UjM#E zJ+iMZ0y%h!S1@0@_&Qh7S1tq(tHb$A7aBzN_%sT0fyh0`H!fC{1XBT<%#ke?*xm&u zT3{~=U=>_Hp)Gza53RJBfGv3l@p%abT?t3)@4S`X2UGhiKdf`pShODtQpkN-KdrU( zCpC?be;&yI$Z^^ZJ3xWCEXjsf(yht#}0+ zf;e^d80}TnDaSV2givd!g7z~amG>`BAdmF=RC~~rV7SiY{Wes6Mwk|h1PPGx@B~^x z6DhEtOSEsV*6YHFnKeD)^Enb)SNfj%QF`^_CcLxZxK`J;>`-cM9x(9r&O5oHilAw9 z9`_CE{8T11Z$c`>P<1l;;_~8(oWYlsdRh!r)_>bcdv(IIO>9^r)ST`cG^JxCNnqQu zoSNpAaOSYgV+Zp@AN)i`)1x%PCM@fFD449a$v-KCi}X+gE$hVhWF-@43;p{1J!<#3 z&B@cfJCHl?Tj~Ma8uXqa0vU1u!{mDYuT~8iv-e3{Qd1F39zpLc?k?-{B}g%TBP#p% zmrMRUiG8w6T^^8yXr>`UYv-|w`~JWx+A$!~)oFI$ucq+Mcvf)19ejS1(lk_5RMCuS zIS%RTT{oL*20pn@POmOzdNMu z{_A!OWDNY^h;JZHyD@2E$y^UK_Dt^d360Mjf}bhy!3G$(es*-twdMZefP#1}-aC?e zI)X81tl`t?YjuUJv5Wsyz3NpSQGE2Sh8DZ@;4e1(`qR6Z7VtxP$MM~o+*JQp2^!6=AN8=L?6s$ zP$)pyn!S0F7&h`VDlXDT)nw1b<;!;;c7K|l4;ns zo`NU+QE+7gz)Ld^4EIM86gYBS--_U#jTPg^m;5>QMt`ia$Ih( z>pX&)74E!_hX}G%7w&w3Eg0_ni<>a?dkXqIQfD0a3CfH2hq)7=&tE`SS>X4j_X$c7Ia*I?A zcaVz*`3zg;w=T}ROUi$ian4h-sRVbR_4oF>m9N$}u^VWIE)u#zh@BtBW3KKe+TJetH9n*~7DAidGMJXeMvxC>x~6;##5Fyg)@kf)UI@=H09STj>y)-7namp~t}mXsXC$$htrS5R zxwRf%iFh?8lSJ1bk>z@7A+SOp3U<)CONYMT5bfgfj}CD42fyMohI`JDo72Y(z_~8W zwwd5arw=As>PaSW=f?dtrFI7WjVN~p-K|7-2C2tQ1-QapcIL33KXh;fmwm*8T${Y# zcRP%lIE^sJB{`xK3F)^!3#U?Y1|jiqnd+-2!Y}Fiy&!IRP)nW(Y)6;E^&=>G0TGCU z0Pb;0O3c!sIEK%%4h54Vh(OEjr+QLHa-@E`da}Ddy|FqUp{SY&8MTtBe(pd~Q|<9S zbnBW!ndbVDC|QS;L5BnPO>^BP;166ywbsTE(_%l-lmjbl(sKR+v|~47FJ;eqRRhY3 zWd#Dez13!}{a;tL&`^6w?jKCPVcn2v%%GA{vyr6L9XA|MksWchITwB*yYwn)381bE z5Akevx9d$P()p;-nt9t@dsI1Oc;0>@hqb>G2v@E)>3IIi2`T{^S@%vyb;X7GT?A=Yt-`oshIcAOhzP!PmJ8w7r{uX z!gfF4YR>ffi==9m+3?;RrTJl8njc1MRcA7sII1Fkzw}6w669)3T-2ry?H6NJs{CIO z7v)LC)S=pi0>9KgLT__y0T}<_<|P#svj#%rrsxney&^jcX3rNr6ZH;?HhkLJ;s1`p zY9gge+Nk%TzZbt0spxzz4+DA2mT6TeJYz}MdKfF$pA$J;fB7K6nA=*Jz;h~Cf4LYF z-W#S9NLxzu5S)AKr(KNbLalF!omjubE>h!vp+WeZ+-(D>AWvr%ening(sg6PE<}cc zI63%06Ab9mt$>M0C6ED|{lTXE>(Gtr-=0)hdi9Za&V!eyHDxkBSV*V!&%GLYk)pl8 zov3$!JpP4;C!HFp@k9??j8J`4}mIv`Ok&0|ZpDW_O$)_@mR-8Ga{HNze zi}!Td^;&rM)M)#=5_xU@)M)w?b^uPRw!{+VDm&+e)01kj*kgZof|3}QulETPgEuU} zrYM*kLO?7)gGK)1H|SReQwI{ro`u<@HhfBkWy=EBk)%FnU%C+CUEnh1onu`)(^_!?xlK&(2(=ly8*KE$HR^6M4`W%P0iQ5sHEdnqAs}}g-Ssz(w*|0 zqE+x_GR-AAvyC{TGgk>ccZj}9&7&58tL;3Hu(v|k0%|@C^;3J_)f^4sd3H3MM3xgR zi;{R8(`$oz8v|i9W(@zKE((OvSQtYcOI-~#1ZAm4btxA(yGC%l`x*M7=i$6;pb@mE zm*Ay)$F4C=d~)yPa@X+FNvEBH{!O+8Me-~uY({=2&ypRYYQKLC=FQSt&wbF zK>q9#@h`bq)H{ZCAB}3kGp+TJGEWnA26c_t?*WCu`TMCYqpfRr&f1A#k>5`L%nw>G zYA^XEq}y`wEREUuRGg>LXcRnoe*c!5a!BFcb^mvy zKx>+TumD2lk6c-y3to&UP5>jXE61Qbuza^Q^CYM2*nS~__ic*kicarSlovS3PW$Q! z)AH!_a-vJB)<*qv$lo4>8n15=yctZ#NZLcSG4-T z%KM4I+noX0iNBFuw!x57{DozK?@!MoriKfIm_8w>f1M8(M`!X{t!}d<9Ir{uZZGEe5`k9UEZC_ZcMvA8?oKg z3JAIvP(2;Loib4#kxmU(f;XfYhm1@=$_JIttOk4J}3WSEs_21#vqDWHq0~ z{YIwxd7?OSUeixHu!Nszy82MkwCbro@XY=Z6i#&H^uT5QpY*}m>D^t@=lN4@luY%) z$!N#ODD2csMTYPio8%!d&&KUZ>o9pcn?z;{l6ZJ4jN@BlP&b~; zPWJxbY;6y%^9H?=`puI zQs*ix1>|IgFL;~o>?f00f2Xt%7mQ(&r0wK}NqhYTDMI|~bjZ`GnT^rRIY@TbqqI#A z7@w2u_C*1!fT!I){Ikg-xO&Uqr%JYK_1gVUUjxBFpAUo$wCraCTW;A;<14@H(gx$M zGJ7O?@dDgN!uhpk@yo>GP3aw0;kO!gKZmoQ6INj?$f}!!H?<9g{D)rGKw!0=hGF|Y zI1lM|&Oceyr|`S(Cd``+{1t8z(7ApNl-(=N{@C^1A29S{`)y$K@iFYO-P6!xH~-FI z@=7pyb|(Vl|F~6G0MBK!??|r%*rCVG8Yg_r32Oz*{n0Ys5KK-a(r#FvX1<#i@`qW+ zT?Nt^(Eb?C84y3xva@hvJZ}A!;c>_!fVn1$Ns75fNZk@F! zZQb1QAQsn&ooGS#o6V@Zl>}Bbt&L6uv?FE8Ur^MWYJ-W}*dB5aU>+`ZR?Yb2!5c{8 z+cS9`gkHN{F{`UHfm5vuC2Dt^g}X<0#>oEm}|ZgB#cVCpjBiqbS%wyDbm zK9w&lJ1~y3ia6hm(H=?&n_nkEkeK9be2TM5CU}{mtjJ{$s0r{}38ps2_su5RW7To-?UwZxkFZ;CJJbjW`A8Bbpg8U>M-pB=}72NLkB!KS{!!e=Own_z06X z_^)se1LaOIL}Kv5;~)it3zn%Sui!f1{3>_3Am42M>m=D-p_za37}9ZX?_V+g%I@!x`$kfuEB^uHr86ZQM=9w<;J4&v6Ab=c+uV<$lVDU~X%BP&x9Bx_#VJ3q-D{dD1^jC-AHZ9SbUtO2Gyp;1XpbEcT? zB3=Mv{asCG0x!PFxa5bX{^+VW@8BYBZdlU#^8(l*QeBlD)rV7IjT1IDvlIjL4!k7U zzpVkUHY|xh4?@iZ=9X7=QP?||syewJ?FQ{{zedAS56wgo)*=E9N%^{kh8)U}-gRQr z53LK-kw!^{P&%)#Kq{J;DMRIjR{jKC#w}Lw`W*KIj&lw3J(GPSC>koOPF?OFW0B8g zJCEGKY5tZ#!0w+)ME90%hQektw!CRkxtheZ5Q^ydpO}X8T+<2-E;zK3HRC(mQ*R3UKhinJjsdv%O_)4 z=_LOS9*fow15Mp)IhS*aNkNPwI@9ZqY7^a~K%{bMxN?oj(f3|g(8(~uzpN?aeyyn` zVw|n1^9xOV984m}wx;5D>IJ1(15x)g(M=15N-@C|b@2LHDPpZR>f=vZg-js%!+vlF zL;HcdZgnw-5TloiQfb0Qmzm+NIC<1Dvn{I4I3RVmrkC8%AjJ~PG`}p*Q{l1;4DpD?((#p@&lZmHiEEjU;1jK9)|p`z zI)Ao;e_Z2)|H%*efLeJ25+s*@Fm?bOTX4Z;B$Unas%%rIW;yExYDmwsJQtJ688F|Z z3Q7;h&Lb$6NA_>YThvA-uz}YL+}l{kxrjdz5yf~b^((dYn8A&k;wEL#I=GoFtcIIy zDZAdP)z{5O@))wp)$rV{7^z!=^sB69y}Vh?;!BD1Pp}HR&3SRc@=LPRze`KS1~T=S zQ51euVCFw6+k--Mgy{T?I{$ww{2$FWVXZ$}#qFu)uPkPT(B1(5Ljr8^{Fzp|SHo2s zJ4SbE-eHr*`q$*MjwaIPq_3{eS_klMxb9 zkW3&%hsD_7y+=+tjIJL|UdM@yuu`TFbp)RUH3r>9@3XNAcihRxsZfeO*Kc+eeeKFy zGlzjn4>ty_gB%V-Ws|y?6sw~Dl%61^-?Hz|;7e_m zujFyWF)>@cs+E-I&r=k^7#*84l293&vno3iqdZ)c!_Ms(_3m>0c(3(mv4-(9@HXA@ zJ`*Fjo^m!|`Jix|ClfBNW^yq3J&BOGiKp63*~^KK4mZKZZANk(X#5kN;IN6{wunt6-8W%$$w@l+b^605BpI!`GJ%hA zH6qZ6pP^mCjhNImW{vhPlgb>LKidZrQF`k31c1{;F5poq!{1<=2MSIl6yyr+N+h=B?~p;^2Noz-4igm~>q-aa5F(*(WZCcdk z)^CDP@>ij46Ul8QeIg`^eT8!b+Sd||TU_4#Lim9|(aZYhXlf;sNKNF+A4gXnfyJ!I zPIw4XSgr3%lCNOFx4u)Qt z9U(soiGM2=q?n~A+11ilQ4_Bb@}ICpNt(T1)WfwcFe|U0{_*?)s@=des|>)k*S?=;j5 zq^%%#l;ae!Y=q{M8FA)~yPzIuZ8vP1zLwQKsDssh>jW&xR%-c~KizrIqx5OAH~K(I zO3Q3ARg3>WoYr3HSqMBqYH5u2WqsP33L9?=v5-$ub*!2>WDk@k<-{qKb5d(owIlFNL( zW3Bs$Abq*iky->8F1^OeQ4D`26x=V?reIpGY&)ClfWv^5lb0kr!lv2I7qR9{(&n!Q=F>!oN)TWUz~# zPqfonuNJYLj~%kASH%;ScadTtf}dd43NrHBNEOok$N8k0pgtQ+E+^8cyaXTOB2O8u zl1{3A5a6Y5wb(-=_gi^MxwAv>LuV;3=rcAxgj9L(6P+;L8x30p>_!4B!1(%nk|!^|4TJ{sg}Lj+J&5R6i^}uKIT^(!WFhZzXh^jGsRbC#KcWQ8*WbIBSEcZ4B6lgu;2E zD=#~l*Y8%_Pb-|8IT2nEd`M8Z?XU?Qxv8kTkbGTPr38f)t+qkp2ac>C`GVvNH9aZ> zXll((ViNc~poFCd^2&)KKn z#*lOiZ+0wv!hH5)ZPA2Tp@dRU51GMlac`GDAR2Xa|6MJV=x@a(HyQw6sY_5DGAY#Q zU}k56b}`6RlV}$st}BY_c4tErTsHjcac-%$?6SeX#p=yVGg6U>)`yT1AX)*3n{=8I#rflIUQ;S=PT(2UQ@nTBk-&|8zT_= zZ^7MQw{d5c_Osme7osmAdi;p=&{1`c0+0$PHOBw$r%4eNaVrb%vvVO^M^!aFW(S-! zJ2}}hJ2XWb-kGtBp~+v+Sgi6rBBp<45w&Wa#bn|832_c8(YzvdiwCG=VFMy_zIP|x zC`J#yj6%lVL(4n_!Dz16lw^9HXvdw$gVIj|Q7gA_;;mkxHmgs(OXTp${52(FXrhNL zfrcc#P{rXi&IHk?LO&@QLnm`tKZ1jAXRY6| zA$IU-c8dbR*))SIM`7zhvCN1%JN+sbN14Sjn%mUU1MpTJTZt6_Jye<%e_-QOwcL;v@>$&k)V3YpT)MmnybBn z4>nQA&=EsspEnA+nSkJegF%g2ASjb)=G3}qC1h$~(^5*9X1rX!3c=+SVg4$6J)wiM{@1aO8VR3^B5jW zYwCjj*Bsk1`FiCVPX!nmw5D=K5I^s|xVSdenv&qZPuPkD{14bh+Q*&CA=Yy*2@Ein?Az}Z=akFN2LwIP?VvouoR7vX&rB$GKg2xN{mZmKt*%+z)5Rz{&+qB^oZ)JOAkl|4NeZ6J9@x%{rVG*sQo5 z5WNAvxw4`aKaBE8jYS_qO0F-ZruZZT-l)*@xBOZPxWY5{!6KVoj)7Q#{tPc;KAF)> zBPRX0C8fm2#sen@+1v*@cM#379+O3l%&UI=X6>7oa`!+kDS{#WdU)-F^ zP@lRtDifp=S^L~kI@=GZnQ(xP;8s+IE`rhB*t$~o9%xh#)9bEX&AUFOk7Xx$MMYyU z^>fWY>2$BCm>o>MM_fVlNuI9eUCWf1Hxwl?`7mKv#b$I(K}MIfM6u=KKL%dswuHUQ zBx}<#HJhmsMwrX5$pDsEXTmj7R6+=&o!>3h+B@?6MKTFnmY8h}B`j~?rgkA$$yy(> znuZ`SlJ7-MZeBO@$wKU)oK``Ujt## zJDVgN>2dS`k1m5Ky%U^u4PnJ8&Wj%s>O-h(w71Iolk=SjWmKiVXT zg_0gJs~;1}Ya@zPeg%&_o!2`4`D*_kZa^a&goDED$jR);|A%1uudJU$8>vU^17hJB zJ|uQG;`~Dbb^#!Fp*YFnA~!HDjSLZ;6Z2gy&$%eF2UF86!{A#ErtwVm0~z7!8E`|a z%R3~o=TIz|uGDm38b6WrC>-JH4wp}!FvZ7wWZ4L#C*|HHlAeTk7XM8AGm&BOY+R%+ zng36(y5etJRxrR}i;t5|$clgVbGWVmSIp>Hr`dH2&JaJ58ydFJ0O7v*)$}EX2hw5Q z`*?5uiCcxMDC~e~fxe2sG=~tt^jv*cV47#qrCSBvB?6YrKfAvy}(r}oxf7R zj^qD+rEs09mU#9K`(O$G$p?dC`>uvtG3gOdqSsEy>j zi=2}1OFS#zXt(lPu)BA+q;1sdMl4UY4gnme6WJjEIah1SGbZlVp$~&8Z2PYF4ya>- zRHTks$rUY{nCNC!xtj+0q@g=I(H;LQ&T7K|PtX}jGvIb=@9ZU2pz42}c>w)ek^N}v zA9McAv>o%>eO{Ub<&~c7Y{GN8-XzHzQXEY%Z%DzlkO-oZF-51}PpJ$*RB_aEQo0v_ z9p4>Kuu=fWT%XhkH~HdcIuH_W6{$qcL$02~mEZao(&Mamd(lmEYCl@>x2EQp_k$6* zPISHt`S?O~Uc;9cSbZQ`$~uP`eQt46;xYSz1bdi-U~+q$nhS&rGISvY{X>|^)xX@s zNrsLj29x1!vj?qkGIV?6Bflb~fesf-hHe-I8G7UN7nui&v+s(6`6VD)e^QQ{m zAXE1Hby{j7bEbR*Nm7t;=FBWctpRjI^XMM`a~Br54aov*~|hc2z-&V%-K z&P|SapHZ(-H+g0yT*;t@g(7=@Z!AJVH|F1zK;dQVAnQ@@kwrAu7p!~f z`n2T?5=Ld3u#IacQ=qHG+Z5 z8g!-LJJxg7O*t(*SeO1&&I}K}ho&z&5?a1xj<4@RipV25E(7Bc^uV6drsfC8yxLdTHkqR5fvquV&+WIM`hC?|p*59O?072=J5)iecs0Y{1a2o( z(I`m0MnmDr`^yt*6#HG>dR>08^`QF0t0iso`CAappRR<0Ia&3PH0ET1dj96x)76LZ zi#7NH-czHgWymu@Nkb@5w9b9}4y1hNh370)TVn9*64?Nbda1YB0}`wSDdp#2qUabvsI4RP+ofmDV^;FX&Fa@(VE@nQSgUU?27AmYM(vj_b`N`=Jgg%j<}9aOA9Z)KR&G@?6?2~UqemOG547}&*3 zAjH#`R$1UIshS!xzgQ7iV3^P;InhF~sRfmfSF*3MnRJ%^PANuSo@{v_lrz?+LX8lYdoyZ;|1(^o-Bk9rv&gd1(um3q06#2kBn*CBFcZp#bnD2s5`FLahG1 z@9?7uV6~8f3-zUwCmcp6;_NrQu3b`?pjX_vwyG699b_L~^)qakCg&2oT4gN2 zS%&9ldN{pT-hE3)2P>KD$;D~n78BXRXy++*p}C&}Sc zIDPs$%n1HyEeN`PZ#}3!pAE_JovS@hAL(HqM)L>mRMKGu*Kye>Uy<*AKkx-TAjUcW z#4WlokF5iDe>gCQe}A+VGH(FMu&l2}#`V5B;*IGW_IkY-ZV2NR)^;!J5%qTKz_vGi z`c{#KXAhj&16}Iiyc;y5&u`L(nrCMAY?4T>lC2{PLPoG`*d)zK zG`$;MZ;^$Gg#yho*Teh9#`U^_fpo|(_>AoYRL9ouwwU)*ad_2~CQTB}<&uj`3$!!pz!`6$vcEb~Am zc%Uz+?*+5}~|X&SyYH+O)LOmZ+J zW=!RD`O(y4<3VkXT_lil;c!THZBxW)GVK}x>8 zSi_6cA69#L-zZ4@jmN zPq}ChP2gk<+2g%Omn5;XTS0BBvc1?5&X@aVJ>o0?MUDQ5O&IFf7r8at`l1HS>c*Le zh8bzp+q#Q`joGbzn(`esD(o_KSgtDD@nieS^wsJ?)137c++sA%*`yzgs=dn^nMwnu zOKfVY&z1G6pz&OVJyTl-NJkzDeutXK?vLGmfmgBZ*G;Z`owjZ!FyyZQwUG}I>M4ng z8m!jpoA>3kDI>kLMM32vz1fvp6c;U(;xzA0QIc6Off0^A%;`rr(z{ue2|mxT56GQK zR{g(B-lN_3MnH89oABs?>aDy8Aiu7CV12DkMe3%liN%-(d$!z?*+=Y&KSD$HV8KrIH8o2j8MBQ1Lg(7COo$=N6ONT!Qb_^AudJU)t*JOYjOPR z@VIYSid|abkp~MUfdToDoDHOK~)<=DlY4V*{d}x^m_iEtkxrlLp*|2 z8T2#JsjIhAI-q->KD@xaTIfd#{J8ezt}m@{}%uYjA^JfJRv^;cyte^o>851Ft*j_6oVJQW|u zymFfTLjdU=4jMZ6&HX^E*+>6T!a#4`r#e_~kJo-_Zb(h`I~@<{VUFdPr8Y9LT=r#q zES^}?ccMo_l>&rNJLN8|le+U_S9Fp=<=(F7r0gH8=!ugI!N#U$|7)e%k4=)ErF5o3 zWTc~WztGTaiFQ>{4^BO?OlH}wTXV8ab*fZw!Tvs&%xXti_M*R(#`QBB z*QhR-_0E54ECEmIDRyrCk0Oeg^=3ja?7c4$k+@h#6oB(1TI5==2hmILAG+5ncfN4XCmUeQv*NW(jy&@_9Vz+;KTKVd=dv-m-zxk_Gt0VlNpE$zjTFJnlC}~F`=e8GaF%g;x z7aF-lZ{!lavBl&Y70Ry7zmt7%t$rXMdLaxrDEGN-nWP+qtE^wGL)wG@B(V&y`hyQu zDDfc_@UW@K#|Tw4N_O!x>&dG;@o~(*N^qf(VWi;Z_(Q~s-vlP92!~HF^@YZl82mPG zYzt8SuD7-&EO0zM;yu#82^^JgLQ<_En}j&SMY+RrtHG>mz#aW9(8Ee?|}-}MsAqq%w)cGkX=d0 zpUBo;Ps9Iod1Po1I*lNuE-(Ra5xZHm=#Q2Y&f%k z3;hWej4|J@W+&}ue%sTZ3g!OF@J<_Av#D{L)OPhIo02e7a-1T(HU2UB%~kq(rllYX z@Ov5_ns10YQ+pHr%pS{Sm4=eKLY?<4jr+fc6pWK8eiMUF?ZZVzFg1lhcAG!bh^F&wLdyb2kfg@5mxkoO>;UEDpFe`sg)k2l{$D<$ zKw|L4+u5DR?vwa!9l`@Z*?qRNowbu7atga@r);H6;=N%zv8y;JY5uf3@eR=!s>JaS zU+&7Hp(5Tckv+cC@@@Nn`9RuV*+U<}nEl81H3`*&&f@ZBoWs~~5F6A;4SoVBqM7W? zjCbBJFz3(OkjwEN#z|aT&8D|z8Y+*0UZh1%R#C~4$nG%6T@VHsl1|kTh}8o_=IYwEovsxcTKm2J#!hCc@)Kw^2QoR8vf7CMSv=oz=V|uu@lr*uJG|`eCwnrgt4ks6rCR@_N zQc_znsm+oeDJI>fb&l`g*5yhCEW@;7i?>}_oXVHFG@6eS6=s z3}$_4myw^j4B7_rAOc?x4mybwNWBC(G)IC%S4Qi99`DUt(Pqq%HV`|$Ia>c4hdI!! zYOJ!P`{)kjVKW%VVGgJ`>Hg8vsjigmj^sxgAQ!iWsou0ep}mQlwYScsJI7Bfwukmu zzPS|h*5C!4x=}Boq70x)K$e%y^>y>ON`m&S-E=9Y>rMUe=Pd?GACl+b%xDfR_HjjK?#lDQ%*F`M>7}U(@XiJMB(J$48*wG$;(XAUF+wsA$p4bDzeLDtF==l!B z|8&n)ywr26mG`u2y7c^qvYrbpw%qe-_9HzXrLuY5R|&*7>v_OBjI?Kabyz*`rw{Kk z?I;%5e!Ssr5W8(=#wjf;&|BWG>KK2X^bqvU9ZwTdOk1B~`tjkbB=#BO_jP$12{e*N z7=t|e@jH~qyG*;tR(2s-{Y5sN4&2t03-=eQA)QdbKVILNz#BPOk9vdlVCqP5iJ3sh zkHk3`_xmd<4~0Sj!DNN2L;=&O)GY(@=%&fsS|Sd-9kEC>eRP$7BOisdiKO)nCZ84i zh7y(k6d#2&mBaKa<;vCg)4P?c3nm|Q|~{EL)^j@+#bCR!iDdW)+^{|d&;iPX9+j|8-Y8=4u_KpE4fM_2j# z>%$v9z^3^~YxENg2^xlh&<|1&cEC;A8QQJyv#j>Dx*_J7$e ztu2^5)TOog{asox)l<7EJ-V;|@|RXqFttLw#`wLND~1|O{l~?$ z__c+Y?=0r3*#e@A3X$KtNQ3B^g~&Z^xL0jZ&X)>v5OR@OMXoPI?&Tt@sKq}JZr++c z#WmgRpGEf!%e37Ab`XGW{Y^e*nv1FNx3d_xW7IWV07>wWPAK62&4dw7<<)@Y5bd&^ zv>o6ZQ_E?|>TQzjA-`p6hzurs2+Yz61^lm7OFlJhsb{!U1^naqc2LKbxB~%)zqj4( z8ypg~R8f1CqS#cc6ea7{JhX;*08mjfN6$yGh2BzB?@|=t`hlY4ur{BIjq$0XepZTV z#QaxLs6`iYg@ef-6;)M=;vl$@klzDwPQI=&!Q{3Q?tE41R|^&%iu$q`Weiy`d68m2 zE5&O4aeA!SPl?rL>Eo)sQV21aOpp{#UuD>FD&P4;fe5&Qb@mYh6=DS=*vBaLnNqBP z1Z5(C%wJBdEnw_60Y*=MJh5PrW{1zFD32a+D&VVTFaj%aG4YXfbB%w2vI_u)S^1+I z{lm3q6*HU|@`U|Hi*bM@(ubx6YUzXm{`UY(V(`|#mNX^>1;jlD)WgShiNVk220$={ z%oJ}~;4wnvugHEToq~NHR3bXabxUyJ`VG3ddB2e+(ct98XkSWLWGR1L!98CPOf9-y z2GSJAUu1dN>>-Y|{pku2$x3aCg5lh)B7}!`kdER_}`J?TnrZIsTwvmdh!f8`|h9UAK56;TDQ!T^pHv zq9B>eGFk&+&zr4^wvb>ifR^gbXMZlcvo-9xZVo0H{+apVV}-Xo-eZY5?eynctI~RD zmv@!aEreOl(%NKSaIyu>Q80C#>tslMaTA7;+)vKXdwGAqUiFFd!hb( zg;(tC_WD}IRAeKX4_fj0ZQ)px6dKwCFnw5%wgI*{wZQuJ9+O+1uC7zsIBufnJtt9UHbkGi>g|YS0p98i zal3rM1a6m+nyyXA-nFmlrTScLD+ylU72>$Aex+*<9Q@LEYVy{0?jobx!hq+Wl5lLC>RT=@6eX$5=xjJ0NLv!hN5%V(yZDo(o<~`8)maBz$8a{^@;5zqNb?Gq+pSO&;l$ol6tNK<#Vtq0 z@DQh!9)uafHxslNxwTz%7B)jTx6ew&39F%x<*?!3H}})HR#$Xt%!#a1eQXqNpj_6z zntKHx@5#K`Hp578P;sy2=ggkQ(LvF~*hX^`9NF}}4G75cnl_lxb>i1q4ap9I&8E)= zI*2vY>@tskG-Rtu{omj*8{w0M5kAu8{Q0{{hzvIJRh1y*z%O)B;^yU}?(<@kg6~Rm z<9mpF?tHUQx2hddZj3f`v~J7Qqs{lKJU;L0DLDJoX*Cs{K5Oq`?=pr3o`^EaWPrP^ z%;mY7k9psk&)d(7I)tHM@?ST@wBk3xTb3R12sd?E)&OleJhI^vc2%}Nh*ELExp$FK zE7R!V`1|~R;h*$3P3!0P>wD74_LlJgS=GwNO;gBu=nU64L3p(b|03BU6fP(mOoAVe z;tDNsR=;MtgaXxB{X*o@m3r<(q$8}iOpt%0j;Kf1*atcQS6J6ZG=>vLY=9Oy#)8!g zPv5`d(GU&gY9Hd0D{td|hATCVlJ(>&03Hzgbq!(AlL8QJ4dHZ{#;7efVoW$aYEU@c zdxHbYF&cOaKsli43|_gy+K>sCkh9#?Aa zP8Qx0KGxObx4Ek%F)0-O;U;>W30%91`grJ?y&CA)IKVl^bL5hYeFFa^4qmQrwqd-O z;UR$e;$U)_3WLr{#}`F5q4%NprA9KXBejhPk0d;VZG<9DVqCVO^G2N!-PY4qk}Wt9 z--nD_|4^sR1}~p(t>_s(l!2bh24Kqzx>CPZQtFeLeRSt84QT+nBl|~=Xx^8FDb2MG zi+Vg+ul3jSG{UXkP7V?r7&PThs?qXeUZkb}@eitykFWKSK4NJYTlda?Q7(G`)5|DA zjJ}y=OHXOUaZ6ZZ@3wqMVnTW_Qgj2@q)`VSd$xM^X*zlSz+YAxg2c|rGKb>c=Mh%a zi!{n{ld#BD^r5H+n5~yEusa6Ztd7I}{-aKtwb@I={&|D%AXxU2SB5IfUh-4OxUPXwY%`)GTuJE6QS^W=c)q6dsFS$9Jd$nG8BFb zyDm=#8)9Us9Qjv9bDm)vz}_)qmT%OM4Z-5U)&)W~FLzpCv(vD2&hA*MXY+GbN5cOG z`Iq%;DHEI+{MXMRe}bu_)OrG!Tk#Qq9knfv18vsne6`0B1jq}m{EB0kj&m)t_m(@Z zh28b8A98vET2^B(wDPec_d@4Ag(-c!@Ns9CGstPJmY+fY53-yyqiItVnmzcb2)#lYkCJdrBt$wL~OeNeb7wcDxp!BjlTWGNWn<7h| zEH<$^Pl*U53vi?(f@c#1|jrrh!fZyikgpmT>9<{8QA-(xuJEzjNu z;9+@!+b2;*aKQQb>h`W@Iic0C0u?3vZqe1oE^`qhCfp^aff&YBHedS@0|1uApp;bP zLW>h!n%487*&y5+)jcsu)<4H%eaoxind)7a)=Ikpb}rkER0F^KX*tbo5nZ*WMp_Uo&b8aWydSapc3d+@!@8IkH^!ygN2 z!SOvt{cE9rjmE@LhyKYvqM^MtRP@IKe&Reto3`?W@YY-icpSU!@vP2v{X@w<>OCKA zSRM~7kt3fNr((qG5lJj;1J{5RX3!=yT%_U2_`6-^A?(3i$(d*{mCE-Ee5={o4E8Of zSKaohP6`A6UxXXh1yi1tGZob%pgJ9GGCtdL1$UZ8Pp4d0qu&(u}h&Qqd>k2Db-)nn0@C^@$qLQUv*Hgw-ate4@SMmP7|i#3OFcu*&FWUE0Sq&9g_Rc6N|6x>*ddAK=4bfh>e(T`1NRS+U&2p#foH6SDO{h@PcU_n@<8iS;i?>v-gP+Ks)dCJ*fp)xQx)blq6wtMD~iXJdt z(M-S7xKgL(VVM(qG$sC1Iiq)E+%r0Ej?Qt`48w)xF3jEp%7!x|d+ap;A7r6$!tW9P zinQQ@b2NhXckx*FdQ;+up25rvA|m7d1DQ|UcbdQ_xHrlkgGi27I68<3r-!W$XHM*} zV0sw(=aS8WxsnmeQVZ(a=c`)hI!+jqtm`S3rPzA=&cr$hug_ki%c)FkefCj(c&EEc z8`iYe@+$boKz{(FXE61|HJbfhd8URcDVp6)H;dysqLnzeB>1>)JM>}CO!1*(;Q=f3 zYIc*|LZ0s0#Q-vO9|;=+t2>y%VCqGe%ldFCeXvPL-oXNA@3@p&Ra2EM{xD8cUL}d9 zQ5o6TS{X_IcTufB6WHeK0TsvOdaXaU$Mp48$Mk4jUxRnQBU$g3u1?eNj=MrH%*VWE zBb6^^$I=d#TA>IF!W(VS=bfEl?>j$bl=_M+FE3Pt_d4wCtd58k*_6~d(}6Px`hOuy zHY>Hs;|*|EWG5)KM_`ar^A6vlUJooEvFk}k_`fw62#+Ocr2nwyY)KQSq-#3Y7ib{P z#I-sI_spJJqXiVsi62s+b;g(c+5N=%*|{t)5BsJOMao=Gnizn_lK7{EIuLqv{;hzQ z3-o1?4h-cF!sC$ptWn*i*p!PM1Vs}xEfNZfC<>;oyjlP> zvdse5S-_jC+)Dht3+v*>!Z*6iU5Te(LKq2olA}bEidtIOJ+eeC6%Xt}zmw-NC${&y z($~fDGhJQjU^uZnOH@m*n8fa!CwSz4TbJl%5M){Zx6oBbLa0uA37iGV(=)Ami#`B- z9QN7chD$hub`95GScT$F!@BsVqE8@F#ukZ`Dki3ry8-=cbZ81PT%?_bUCCm z3>a=IuqVOf22G|H;ovgoqpdmw0n@yj(9_8ODF2}`E)0b;)8x$cNp-bR{%fETL9o0r zCC!phF!euV9QX-)b>{Hnaco|qax9U_6Frw4UtUj4l(*qpr)g>$O|mA> zsv&7vAPdn5kvDNBysnA!Z>~ zPOIsB4_7E*J(`CR>D3}nx*hpO_7~bN;kqW=NNmzZH+C})EB*gwoTKRZ$l>{myrID< zw6gQ9!W^>=#n;BSG7MV>v$;A4d)vC9bHo1!ZYbfI`uRVFXMUP~DrZRPWC?rgRxZDA zW!T$L=4LoOe~a1;r_XaWIGp|m7ihKxx;*#VB7w@7tS4vBW1mrs1UE(r`ummqi3zq*BYs zx+0c8g)PvDyTU1r(S|AEDbM&v(FcbJ^M4zUKj~!j{T(?O*yA8zXCTyRvY!xO$(q~X z^FP2zFu9A3$y~7H`}j)kRUi>ZzFv!Pl}@sJrZFz8fw)XMyqdd5>hQ7-xFNfob|TEP zZiEM}%>EgQ4&^~*JM#>?k#_?q&W@ARv(|xtZ&+`u!1R zX;bGb5T)aJt`;NQcpqo$zK;y9fZRo$&ms)lSUzEP9u@8#PRPGh9MV%)ij$U7c4MqoOy!w6b~?iW3`-`nZvHqUJu=83sKd-sj`nVkYS2mu^ z``nU#L1ESNf_zjWCLF!U@?CR@*rs+2K8UnM#z_9SFB6E$YaM20%`it&yoF*q;48}` zC0y*z*nM!7524$|1~`}dkTUvS7TvaGgUO%U4aO*nPwksn5AD;z``~HA;pq`IQ3R05 zIdmh233PIqeGpTJyue^)6$cibSOF78o4s6{O|%*I_Ken#M~Sh&z&TTUqZmx@J32Xv zPDUEmF^pPC0hZ*!yiw7~CJ6dz{+O#4B;=xRIH9kd8)>9?=w}u{9O{ zMX8yfNdqE@PpedV+RK#KmU|QbM-X5sS1VYm0A<0{4mQOi)0P13dW{G!m1%L)-4lda z!wgMDM5@gMbQj6FCDe*H>KYNc@68+*#-(f2b5HRdM+Ift$c>uH9|SK()iOgLPk)J( zIT)swl{we8-0pWv0qlQE>N2!}r!cf5>4cMW?P)%=m=lwUji`#GXTW3*D!K#M6ipxG zWBE|rnf=Qp9%4v|Dk0PDFOo4`%crZDI zqDEKrDz!wXO{fglY@T72GTfuOty5P@KGH>K`G4({URbloPIlS6=3%7ySF2{dhVoi+ zv%d9HhTHiA?3Dp3mY_ViMmfW4jmMivdJx>D&TORRNu%xD2^@$q0pd2fpPvq{0+9^> z)|RpHbVh^J4#=V2XnY>0#b-Y^_yIxTKFpgd%oJ;QuJwdi!%Cj4wa~Npe&Ivb=b750 zfN_VF-rrUwcZF?=|J%4SDZtkW&46cVS-8fIOre=UO;A8#ZyHD@*SfqLQ}##+u!5;S zYnMsc#t}V#bWl8EQ|C2SJn>nNwlvt3$3PE-UO7;Dw>6R?mjFB-3>yOZtjDys{8J4Z z74}Q~AhH&!UhAqJwyE3y1ga9NxiH{vr6Xu?ADk zhKr}r{f({U`q4dC()F0`fU| zDzA4^ySFmZm2WKNTDpZ?$62nC5)t7j(WwTBaS5g#bAc8Myl8>bU_@Te59}GMteoBm zrVgPp$5=F$Q4zr3m;x!$G*+|(dYM*VmjNer0+a*a(Oj{)Gh%7+ELlSfMNBxn#$Q00 zNCWmDr);6Z8@g4v-4-fb+^xd13Kj0Yg$gg|R^dBlz9QsM>ft@zDy%P5__k}k9A1)R zyH)u2EmU}Aw+itL>V|yh7AicrTZO;dLWOPJD*OS2W^;IsRoG=olLvIG@Hnfm>jB?V zUg3}$|68jN;2*U)z$O2i#PU@>w9v!+VY#Ey?XVoa$=|wLW+})TNaQoyaZt#d5V9{j zjpe1jJabyGvL9_d{;bVT9Lk0|`J-i4cvDEz?@g%|WL zEP-Nr_xUYVxCfbgK3%w~EB3T143`Gl1%6i~4k{Xx=G5)_huMI?zW2U3I8S=}<97Yk z(FGoq0^8MwqQJtV3(SxL|N1utekld^rV2D3-NJ9BfP@KCoqSjd^hE&#p^oLq&7f}h zSHR-L{Rz~f5$z?Ggm{e#`@aOfrHCc3&I6mgAhtk?tBQa6?<&qnSA6`xt2jAb@i+fn z#rx6~&Ht|AP3eliRTX>VWOCbrRr6n8nJtr39GgOMHSIr}dDPw*3*{2~b*jL;qYL~< z3T#Xjs6V>E1SxRn-xQcF1xZV^j_PO3wE|V&E@F(5K3MnHKkj`;SnJWIkbWESGi=@~EPO)@mm1LfH zMCKUD%sL{oUNS%D4_`@FUnrS7Q<;kL)*|haxtc%dYak*o7@Jf{b)p!d^5+(DS4w!$ z4~VIJ^Bd-mkuN|xqCui?Oo=)Mia8lv|97(ltrQ$kFdRbkVN#;AIF1h8iT~SdJo9H zSHTeB%5ihtqVPo!`{sv_+9K7wiz5&bDyLj3^#M2VRXI%~pmNZ=?G0}H(PLr*Q_a>K z-Rx%oxmcyNhd6q{CpRx@a(b+$s|Y9ReD-kzRT8ALCvAVe5f9L2sf^G!wf zs5$$~L&EjzT`CB7B{dCN<4^jvr4ijj^tqt@BI}=oiVjSvys+2s}n!oIcByl~le_P9!^=|o{)FyHIk8(q@Wh~j`04H0%Gu?7}r#kWeVgcU3@6#GDoqp8*m?;an zOQt|=5eMt*eIxzbEh0Pw)pC5=Q7xY-Enk-^@bu9IM0%yd#HtpWk1lWl`zzK@HrW-9 zjO!}OIHBY|6+qg1^ml<8sCiY!$PNjl=pUu$rsR=|A=!&s%T37zl*FfJ#zQ|+e2p|u zB2f-57*S8$0$P1vmJ|MYejon17Lg+zZ-m$S zMT&syRbZ9m$#_ty6FvT3A>iDi$q(SGMIgqpyRc0Jk^4A~xy1D=eVfhv6%&o>-v9D} zKJo4R=vs^NUhD2GQ5kZLDDru>*PkiMN{FV=p+cdtB@cRY_9yXdpJzkxQ(C!0*2DS{ z%4Z!~^H0^*gg8qCU-EfA50xK5VE?*jR$+;#!f66~jlv3!z^!n7~#lA;*StKS2Sy`nk*rxg*ASdWaq0mjV}dSL`I|uN3&f(FIH?a1{l7%9my0 z4SIpUKjks&K6xk5I<@-W!fzh~KiP@o&br-zlHOj&q4XChRX%jOvo+ZUz4R#^iGc*_ zUB!+#fR8Ko!|w!ASZBYZQ0(f0l*l^Y2aMyXx7-@8J1(mq+8+NOpWJ8Lj#{ALyS*1j z1m}u}(z7^$UW*fdsi$!0_+HGGU#9j#e4zpc#{`d>T-hXX#HVtRO(y+cteM<Ct)AsLTK@4}>#=9L7exnb>xRF}tT+Bk&H4ob zp{%p-Q0SV2Xe5tJ@4GH^ml6IPCNz`2WlQZwGWh2X2bCb?cA4e6UQbZL4u zM&!kR)~n#O-q^)M%t7jwQPGK=X}?vnkH8;s9Hu08#5Ab8tHZQ>G z3dJzH8NGSd03B|_((xkSu0<+o)Mx27a5?PebG2x}5i+fX@?w&lwEZx5EGwc}yC0Of z_;GFto-hf9JvzRq$3_iFfsBb_e!L5q`d#`ECb}x!;m^>eyCG*fJ9!n$a#vP$>3(l{ z>Fg5}S+m)`oDb;13!q>Z7W^DmWQ1oRN+* z>h8xG{{FPRRy{ElpHh`}d7}?NT)Z#)8@Bm*e&?VEOoK!+I*kj$hqs!l}H9} zB=Xmh5Jd!G2#f1iS(4|ZjNk=A6@h8u4cqLJc+IV`eqzP=<#W23RT!X)IaoDNd7)IM ztb6)x`mzQdh*!(N<$@5^)GRYAQ`eS^?l(#ItktZw_hw~WA;KEX()f#RcjR$?rw{VH zIjg_6qLmmE3w`0Xtni;z!Sr{%$gpN(%y%-x_ zI}7$}{ijCVVcp#2GuP1nA$oXtLn1T~^j55P+h%_5*)?mbxu$p(HrhSYh@xgckq*tB zNe`K%KMWJgu|@n%MJM+O-Kpm27AaDk$VlzDg0B=jPPsY^qX}-Eym-<;Ow!yvlhxhFzQy~8?{0B7A#}C zF2P1#xJP7GhrQ*YJZ-_-3ZC6m2oBf9L9E-XEyfRe%vIQ5TZ}<8X64P?LAbrAWU0&psR6})N;`V^D$toJG_S3w>Su0heJ^KFyFO^G9@XNlx`cFO zc`{;?DVn^~^s($i)Y)Rnbur$sXPqPva={a{VYt?+&<-kNE*VOm6EJUgi0ptl%dN<7 z`;PMu;k%+50LGrXOKMuV-vgJGtyd-z>>@%lLy+GEMdfR&mZO@ng1G^>*W~E0LV{{8-#3zy2{Z5?pDJnScQ@q78C7=R5D@8w!gCU{W<(y0u*jwQ@Pf`(9{z0oU zeVEGcCBQM(R24`!+kMt#A~JUomO4XQa5n9w!!W;pH>>h8U1Zb$Wu0Lj@`DhcbwK}z z^we)%oSCjBa8e#rZ0lF3W@sz?)6oa)X7*p;rQfV2VEf=}(=|lAp04pbYE1G*$510t z;g(Q>(cmU5A#U1K6yQ&pGb4l{cVe~^)O!9o(gmbjc(?NwP7zi^MN;CxuzhBLR;u$H zr9_TYnK4YqsouY|MzJ`Q{r`R0su%*kLP9tfBA26}0L5B;{3>7To@}2r_+^Rzf@bzv zhnz@#+N=KlMX|H_wyv}{V;`__yiJ5Qcj*2kN!EB*iX^MyeJT#O$WtW_w~D}xoR&h$ z_j)q!wjC>#!Y#h?8u#o1wS;Xl_w1c((eG;Ud1}(3w&zP-E4$$r7dfG}FQ-S0YRVZh zDnf0~C85TYWXdE*1=P=r%?Hu#g}+r?C&Xace%;NHgr|Ti#ud^!>Hv-k23u&NVNKT}16_q`M4t>T zfJ=UI9Ni6XPKa;VS7fC8Yw#^+Eb^~DK;)aqD)=ToVFjD|M0J{;nJUdM6#p_}I}`aS z&*}IQXrBKMUm-rM1jmiolJ4P}U@t=4H=vu(6cb&EMgKU>t7eWDDMa`i)aV;2pqmdC z5cz}x=Sp$qO@E+V9V+iJInd^fXwz=TPrS6COn#Cb>~};5zW~we-NE+-yb?)Od}N=a zuB^1cMRo8dm3N(Vkls8>^X6T2<`A8EQ@*7fQRjjMIC;XTQ{lJ7#k`6};n}BIholj> zP)&EsYfntGOqNNavo?KCs(QZGtSR!U_%n|xy z^MT}Qt(7$AqNkV^X;pb@wOFA0=(g-;G3t6((k8c~1Z7xur)(og>xf0RxZZ1WM7C+V zG9!cg;8}_})B7h$tBw_<8qb)v-X5U;wvu4&#n%=3JRle+1v$1vB zU1#hho-t(Z-0rXIQb5Fk9EAOpscxL3dY=8o3i>8PyxN7uyRZ0yr`&WyT-C3>xK}PHvMqy_fyp&F!B6UBfiv3wlGV4^y zdR5K!HiZh5@PO& zwM1dgC0|>dZ1AIv$p%~bmeXMHEE)?!ucsPPlHgzXIuFI(lIgGvBmNQhfswYkv9h&F z;j`@!n~2cya;2a?r$z}gFzG%*Q5~@d&l!?bBUbckk{@{kmXuwJn0q^T3U|uH*ZB^f zXkd`1PhADNxwkt^00RmX9Q;r@!`EL|R=`Fnu1=7_2k&Mh< z^+fkZF+h`Y=NYopisf9@)weT>7ju)m{*O7JeH*Z{PgJAn2vr>+3_FHaV^>PkR`%Dh zj?W}4{)clgVm(EY?(R?#5eK+Ca<;utQn2Yo|*{@c%{}`6AyfP;=3V$e~ z?NKa~Z#D@Pg*#V5Nd$wq1wcIsO+Is@eYebv3QN!>I>d^GMZq>j^re<4`}H3{urFD&AGvB}R5x0OTcd zsuTq}N2F8Y-yA(NFB{BfUi?qlbEk3}1Ph=D ziT?xbafpqECl4DyBV5zKIb49FxL!fm1{Cs;4NQuIF$LeNfD+PQ)@tcoeIq4h%} zzMvN_ElG)gAbZncNtc*+a!PifELRZzkf5^cEWxKx_eaMHe92Lw(u)XCG7g`%st4dy z<+@vIyilIP^(7h3YWU3uA=gGsSIbkXN^VMY_=VjqzJ~5}>LTf_!E4bd^@JR=yv9I7 zm?yvKcrBWO-L1GRGT#&w9?EI6LgjVkx2WA|>qk|pt=V6dm!(C%Ry%A4%#&VQo)yfO7Od1T{wx`ZYUvJ9DJQBHW+2VD3ashJ^3>KJEQ|FS&8Kl1a|0>2N}<3xjefTo(fi0y zn%b~8CWs?yKOw$i$0?ZWSS98%$7DK96k#L1Nk!S~Q%R(6VoLv;RN}X(#O6Lb%AwB; zzsUcUu&xh8`ik-FuatZCd-NWd+!tW&lGj!8`WRkgIwYfkAe)FO0(9MEb03Gd_0xVF z-|&b1J)ddw1@jO}j|sgaPiC~lZ_daIcn)gw-&U_MN|Q4uEz7yyD4EvO5+U;{6dLj- zISLJVO})CW#1}ru?EZvl)kR#gf^1z|9LP{;=31V##ap=Ki$-B)?1QfrP7JIc;rHyF zI=F05@ERox-~PZ?63r0WK#V}%HrLBB<%2@tm&t*pyL45q9ZoF+V}%S5eB~XCfQR+> z<+G;SW%DfY74M2KR%ldw8DvnSMGsV0o*^NZ$%X)KBDg%|ac^$w}= z1_c2D53}OjM-b0q&UPluq#}+sM;0#w3A;d&jV;r&4VMVEQMv_gkcxkmyo-BV$a5Ft zZN+cy3>3qz$7>T<&<@?)qct`0EicS1xi;nQIc95k_vyO!+-m*u!R5qW z`ATBiCN}tlqxWv=b5dPs{>ikF>I#*!$^+)gWOd;$HT{l$%=2EBs4UB3y{GULFyEJt z{=g^k#x@(p@KRO*u;yjzWm(6D2Kf@N!2k((-kbSps@+sqJ@09a1+<`s+D`^3O$bK| zl&`lPdWzpYN3IXB89aj!XY^PtJe+e3NXfkbkOJc~BJMVg@Uk*lA_?#Kh@^;arhdW? zxihrLBdW+l_($TXRTkld0S?x(4k|b`Bt;GN6JDk`hpHt>kuN`ZqY#rd70C7*;!wNCwOG0YT+ zJv>0V39~ocO0cAr$x7#cd!-99la>CezH~&Tq2FF<$An?dmj?0vs4pG!?UjaJn*7p? zZ~M}xKb9q|1;6hzrWNNTEA5x5J#tL1e|x1r9Y}WX%y0YBa#g89;6GDGWKM{loQ7f8 zJ%GTy%4bxF+!ll>9mJVZB9I;{MJ=)qVl4JLe>#e5gbGUCC36 z^YjEy+ROH_(c}(%L`tz6)Q|ayl;TN#V)sx~pA(gx%D)Qd<2@N!P6k`g&DL|r?(b6^ zjYkpJ^b~h1QlRI#;m87Tkowj@!l7I-9dW-1AW}x{a>w|s2iW{V6rkfWQ7+NQAerV~ z95=bndoCel7`GKp)c-*t#p{FLa(>=+VVztJxu0U4{8G}~PU?>C%|BV8UR;+~y5F|~ zcq;$u(d-LNgrGJQ!=yz@Kwv1w4M8ASU+0BiUVu?GJttX60cKS>f|36?>^MYJ(IbTacbQaGM7rw7VG;jk&-p`=Lcc}cnz{O0kj`d@{bIfHbY^8w zKZ|YaL2;>r0)l=_hs+Z1P@te=3MbnaLtg{>%S6;Q-N`ota6EZOY+F0~86ke;Hqx3; zrv(XHn(9|0)(Wa~-V7#woF-HGDA*=}|v@^kN%5Wb;3;lu>)0vZ7`QN$NZ z+}mB0YQxPEW20Lu{5>=K;V+9)Ho6t$l7a7qpg(a!W%=`?r#|`i= zEML;W5_69W^Z|V{qBZXFC9kWz3u&f&$!_?GTI0PkXVejvks;mP9`14n_l3I#1V0IP z4Gv;ENo8CJQ$Kv*EG;sd3f${jI7f@Tp-P;oMK-8zZ?^xAR)6@w zOt68pxa2G`XW8`^w%CaQ!Y_-VYF8>J!`bavw6h( zRJd#Gv{QjD=iW+Sz9+QBk$$`Jb8pUnOJM#|Hbtwnyw0G0|=5n4?)s#tOF0vL&}nkIRk^P22vQ1DezwKVy|JT`~5b7MTKLj6JADnn{SF+-7@++7IldRz9WnqkOY`$tV0J zrcd4V!%gqw6^NG`g;NXy=k`P%&!TJS&`KkB7Z%1o6`q;5uuvhD(PlX(9PLJ7b2<%a z&3_{;yW!}O%Sq@LT_RQ^sUsw0388!0AejOW=Sp8%7wcat#F9(!BuL07VhFO2)Ee-d<<>*_D)9o zE#*rYG2x&lR>xo0nr$9IPEIoFMi2Mg-CQv%FVQT(0PHhbGrX~-{-e|ztuad`O3hre z%v`LMR?N9lnrVverX_J8D$h=kLkXDx05Zs6u{Yb9d|Q^2V|)(t81CX=i$Q@nU}N`q zy)KMu%%%j@zb+o`TK{`q!1fJj5;9!^+cOow%84oS`Q5?Hsz`C}i<&j{se zi?7Mj7H9i;DDIF02((Ycc2L5q%nWzkrdel^2FAKQPdYnb!96sdP#sUy3^(d(hDYz7 zTOq%)Euv4(RioXEf_$PqIX;e3hT?9^xP~zqK=bX1{HrEAaBDN`z#9eA9wcpUv&&?s zf9uX+QLsVIi2YOTEh?30Dq@+vx|=a>m#e#h4u-n`kayFVRkb_`0h-m*;^fo&>O<0@ z4NUZRev8g##HPsn*B1@a8rMjzH8F{JqhxxqYgrL#c z=^G=wm(BLA|K>~P>ev8UWe0d=;gmHI;7)54O9J6NoWO6)%^&+?-m^1W7A1$$%}%qb zUQ9myk9tZ$&9OX%4{%$4LO;}G70ABi)@YsN%>D_g1haJ|{QsWWxk;j{pvkamJi zqpyj_RJLrbP{!jNrWOc7nt)oRzdDd9gk9kaZ%9;I_jY>Arxk@J;ftq)pkmAiU>WM= z%|!mi6NQ8p=3ubc=h{dKcL)Vhxy{s%H}fwx%Vk98z94HG9i10@kc}_(OSdNSzn4dSyp0;iiPvtg;+@1FMhOSQ;)sEcsy495^Z9LoycsQigNt+KO%x9}9a zHrx$mTSwN?OQ^Ui92<@*oGL+3OKu8lhY(c z(SO9QO{QLo6{*y@-0&o<%I;NC;8#meQ6C|>Fm@v^Hf#uY->5ZjAgM)Kq)PV%^;KHr z*OH8#t@@}%qUxz%aDX_d8;JJSs-;}{(pgxILcGgJhRajqXr3&6Ft09zkH^DOnVsVH z;07skv8v&BYJ~DE{rFW&3#6r`nEWQ&Qyphg8gEcdUASr~2CTgMCK0@(mw+YV%Mlim za&=;OGPOtK%OboM#HOu}=j4i}^7!6x?A+kFECRt|oX=~K@hXw)C<&-_IF+2_I(&0( z=xeJoOAmKl5&C3RN*4|D6?P|HFScq;&FX{7yf=8UpPoQvOjcCJMZCc^5Lz0XaG8JX zn$?TTq)Gz6LTua{SJ`RMP<=WrIKn7NVJpM= zZORaw&NB_U>V7f-ut}+EjoVGYD5+87uE1pkskB`693HgA!!MhYaKx%YbXRDLJJDc$ zB6QF$H z_96wtC#K7`C@9oa2#X{%JOF?2AlE_>_G}Yb7G`i6C24P`-l$|hC;`hVA4U}`BXk>s0{NGj5#;~91T$nkS=hp}&%CkBXWmueGp8Cp^Mjrn&9Ev5_&jaX z@~Inc1!|OM1fN!{rLF-Fd}_3Qo^4oJkBb?Ht0VS+x}kE*4$649CGtm;K**TZhn>Re zO_u-+?tnNCgu6&wfDaA^T-$x7xLm{IgWt1tYKfy73R85TsDXwrWeW8DD_z0M)Z;lk z!gbP{;CQa0`~z>wxH!uG;$3nl=LMq2J6>U;rwg1Y!1LKUzh~RjGOwAbceXU}FLa)6 zwp2H{T5a}YYnI+rl}Sdcou{|j1w8euZmMz-Kb_TF|3Et)pHWl{LX-}OiQYPA&hc|K z55CBbNK5e2;lqN18$1Jp=fGc|=Zb%#E7Timw)U=k<^rtfnemFlfJ#TzG4Y&+8JPn^ z+hk6YETp4gkpdbB?N5FTj;r~EkW2Q8?{hE&5p}EW)ge5L<<|l85ck&nP=5FFdiGg{ zHG%D}9Mc^U2t}R0&oV=WS zj@L3!r98my&d{2F#$TO?^4ece*Ew&j5DbP3#`zweY@cVVW+`2S@GN}!MwUp^o~^SU zHca7J-;>8hS;7gxWCu5KnaBDw1B~RxB7gay(4D|PCV2)Y75@~`yLgYj%P_E!M`=Yo zC4;m`Dt&GBg>}+Hx~MguOQEHT8c=3P5&_K@E~560ya2+tDr+?R%gbebmCR+26Xj*H z8|TG6_l%=*h`*Fl>T!K=+g|CU+yaw>Hv)W1l1gBkZSQl^Tn9T4SJsyx^Ku7A@V6p( zxnYeg5deOwQM?1O#2^$8@5nC5sGOIT(S%wJ>;$A4ABkE?&qc(f81ZMQX~gk|$=_FH zU+BWL&Ga@l2#Z#WtOnJWizb~RxWC_A`O?hTr4(@X(h+r@KC;fjWS#HFWXd*dXc|+P z*GELmVD-Gxw|(LrY@c7LxoJ&*q%cfOoJc7(RyieFlZqCJ@X~9>1GpBMFREnokn{}y zzT?~swG7t#VAv$*p%+Ps6#kbWRM6@pE=^BW-rOhiumXP+aN zq&2p{U%VRTr@xp!ZmKl1`kmFUGMY6I<<=}bOl5{X@p(3D^G7gl)D9+UjqghfO7SvN z=E4!tpRSs{o`WXx6k@8V=T>g?*(doeJ^N}aYpyPW6_GY7ZPZ^&LR^43dJRq6RI}Zg z^#y85H}Dud-JDQhRb^ix`qK{{Co*1uoO7cn`L6OJK2Xs*%KbTIjXHo)_6y5^5O|js zpRI}hSQHDU^|fKzKC>-g9!At}LDXU1b6DaH`~0L+b`b+N59 zFnlInSt!ol7$h4bpj97^eMq_CH>2Fh3n_5Aw5L`}TM(kscdXc;J}ah0Mp88Xk+1Vz z)m>#!Yi?e_P%`WvqU@IHZAkU@hZ3qu_4ZK;_{=Y3XQkEu-+OwO+Ra8 z6c_Y9cB#!Z;mTNZ|m$8$b>61PM!ai?{&(?$~5*rTcIpR|l9B`Ve>&b1 zOn5~_!=VSXh~l?)=!$*oOrl~bg}YAH7KFJJ!d+Kt^Tl2=+*PS9c#xds*YPD`h>ujS z$77Mq>(~tDXW9Mos#UY@D-KJ#NyY?FGp zYZEgaEKnBAe`sFLpCFWD;fnPj& z*)(38Yp@Jx{*V;Y5IL4!ics#3aMySguqYYsx>swKO@X!$j{$SbQaMV2;%x!f>t4j2 zbB`q(rk(Kw!D6&#Q#}zQXz+ya9@tnX@H|Ox-JJt}W6dP*pcYJe7~M{%a{(86H9P#C zjoSP%%ql8?;wdiomCq2(iy_YIBzXQ`^$fr9HF>s%o-D^HXR!!ObAO_WKs&-Q|Gi3c za-S^hpp(dg8u&?*fyji^p1uMWW^zwoBuTZW8M9mrSjrJ0vy3$jB8PgA>U(pl}6{*y`Jt}JctD^x;bCJ8yzR+X=FK76jN z_FU?{B8Qhgc`yGkSnIv~qu?kSs!268iA@!W(#RywCav)$7A`h}r(}EQP}S_PjBk_( z3kBInUy&7ZD3~*$Y06Hi3B3^enoO^@*n184;WwExkJVpX=q>YKa~Kw{ERQJxVkRwY z7=F#dAdVqcLJh7|yexsjkceqoFzt(ADbpzbPDgD|Ik^R`{)nc;MSJUq$U8UM^EV#E z8Aa-LS*zg8YPmt$?P46XSa)T4xr-oe&NjCN%uWnVkHr>}0~?$i?z*RbgwEX_UenK4 zx7F~xHFLL9b|`34=81`wFf0H<7+Z=_sKQLqixwCH6z}8PH{3OKc0su7!PzfxWM&_$ zj!Uq=Ix3-Gr{-7|%d=XWJA_VpO{f)kdrb5eTL)ozqAlxDws=PDF2?&U^l?fV)~It7 z*kn4)&H6kP-E3SO+3n}0NJT`HtegzlEmz=l*@wjlB?SXRq#@VwKrj&qI&^n7Cn_2a zPsUhCs!)20VmjWRXP-x)6uJ60$%{-6(ti?ObCcTW`U|(QGh_fx%;_VgBjSViX5pNE zM~oeKKDzvWtv=6&C1lsDttlq2bsc_d=t+LhTlIdw`L5S&_ZRO(oL@2T4NMQtEPJ_shFT3Y&H@XOkUvW1w!$@H+5d(q^Ar-2)$ zS*!h^&Q+=Gf4v1fUiPut(usPZt>(%hGbB`2YO9mYCcjNp$gTQRXvb>)rZBEi@}jLG z54b>_=ih!%lws!ojK7K2Xzow=#qDzQKkFzHZi6~Y1aD6glu%kDzZ(nQy;&OP-(|k@I*kA98!GDtGJW{lXvj_eOL#277=#7%>%E z<3>_`>waUY;I#%yO+|jsZof8qx7V7^-T0RM#6fP7r5W-$-quQ1qhvYwndciV@+3`! z6NsTC0kk@%vBh8axz}99bx^HUuMBwJpM5tVDd5?IY??Bdno(L(lpZ_+<$)^>vz4{E z50W*fThhVPFnEjgZ?y+`%VuU3VYnriY1z!dwQOLLI$`hXAaP!s`3K$exn_B#F;6EZ zha{BP_;M2Fn%3R@jk_uw;a_}nH*_e&_T$}B8o)`4O!QnrqFzmta4-_V5yS)zM zH7yU#-spWLP?K7ozpyMi?P5sQGHpmro}x8;)_GTHLq@ypX=uiYIkKA&OlA13y@O|m z#H=<&&2{#zT*Lv4F(dQ&iZgaeG4`P&=HTFi(Ozt>WT@I=e_5WS`iFOGco}fD8c#IL zEGtU{CvruVm4)B0XFRTz#uMHqZ&6vbtJPPBf$(cHpO*a%%Uo>=Smw{$bjfZVVu6~Xq9${ouYeY;nQ@;A@ z?@)M{-yBusH-F^DGNo1In~j%J(r=9{TOq7B5GeGgXI~(0sje;YyE=R#vpCLY4uk^; z(->-buuB9{e%EGS7;AC-;Doq=TY3SplrylE;EIa<8aLy+lRW=qpj0}q122W>|89C8 zNmvS|<+5rDV#Q8;P_AbOOzjbU_hh(Zfdax-RVNDmnw9UlEtsL4JoG0o_T!D3@KSrNef}LYSldU_YpX@_7?*<>{Ugp{b?nXhEUlQ< ze2-GHJO|&B<-ZVF$95@mJ>Y(G;#!!*Z)2Y_!P$>^eN$RmAE{@q`}FprFR8oVk^eZx zJWdolE=O(Hl|l27vqenY!q7j_6QgUz`fQQ+(% z6)#;Y0u%IGFkAr+Ze(diK7uMIH@H zGaNT=E+g|8wb?XvQ4*~s&|zOodbyyi%1?meFnbPYk&CGuFbfNjGDNFut4opk9uKr( zg$xtM@BsVG{s#rKjQoei&r3bN;^6`U2Lm+W~wK%}3<+LegA83A}7md<_G4@WB^M9dV?VB=MM9gO}H%+a`i zd@@YlrY}tJ?MujG&#~vvruz<1K%W8$TQC(EOYT@f7555d@TmhkMaMgR9<4tYy7wj$ zOLynNqWm!kol(478}_%t4xSA&d;01m_DGL}H}x-Q8ZW%lGTj6Y`-St`0%=ptu@*(h zLJmv7B(j5*y=jNAYlu$bX~!1P?bEzCto7sIBYd?Rvm>f9&kcd-BxKr?1VP3DzCt|? zDh4FBO~Ruc7cdW217jgrt-w=uE^Ide|C5Ck8$Lkf&R@xDTjx*YYb=V^7?+J2p6w?2 z){V0HW)_xs%jq!4qdL`N7a3M#i>wi#R+aII3lFop!Dr6S^F?o_KR8v1j&O_ePvg5Z zBBq~NKE!E0kV4avnGhv|neRFnlS~~zah$FdP2JmTl||h+`DwTM^m;p+t3+Vyl#$j@ z@cB)m@juc2lDBwOP$#DIN6??;7^i8C%hjTeDV*ZKUeEip%8hai1Fp8RL`EsVdZD3R zE#fpQuuz(v4jXKZ?bQy7qZB!RF?O!vK^k?{Er7rZKwofUd+Lc9-pBX{DPbSq}957N?qrZQRRry@t@G4uz&kJ z7ERUxz(iZIVX6|?u~6*n16*|F?z+DV6kMd9Yq- zmyLj*!DKtb1Lk{vGvP1(c$7JGIA_bA_Q7HNGZ9mYPF(IZjVCFT{lA=rG9%rHzaea| z5^*ZQO;l@`ow9$~x81rTu+^>{F5kbHKgwsx0tX5s4LRbR6OA>`PJHu76XtdJ?Px*sV+FI3VNcJH+jaVs&}B;R%Cl=~ zeoql(f$HtG!5T&6DC(h)X5G!J^tNLdF`Yzfi`uY?Qy;KTacU0@;=h%*iMIGVsRYtN z;OPJUM|0p&-Cl3+AT$VbI6WIgFTPFczp-Hh7;3n?VwPwa4dgOt70(ibI*5T3|5(u+ z7$^Eo*n4>M8@k0ljh^~U*jkupWDCWy3iz=_5;4veQ@J6YN7P#`6)q1bR*a{x;M&8; z);;hs%^%I5N{5qU!=s(#YyFq26rj=KGtngL4p&CYMSG(fy8Bu0}nmfey z+a(unG1SI8f#R>khnDBStncFiK{eSaO>Q}iuOFW|biW-|El(dAtR&!F93D4A>&vNB zPzC}~arbXpWfXrcs&4Z){E!{QN9A*_Lx$^}`2QnlR3?9AIbLS|zHN@we)JK_*Cg~9 zkW1+q?(nsKF^YyQ!PKB)*;G9{Y)WPEiT)PyusTDv7dInoIY8uLo<; zdr4$Hz~ukU@d@Hq-gZJA@56T#(e-EdfEJW;wawnL(Vpq#AYogrB z{{LK)ME;o zwvO+2xod?Njw0N(3G&WQ<~`u#opzAC6O(y2J9)o6L>@8DRo#)~z5KNxMBJa#`(s>U^oNjMej9C-999K} z@k4>rk_C=&3RH#9zT@r^H4$Bv`5E@0zcUfh?3<)h&^Lu{?0YLH zh7ttqC$a}pyoCz%ntkx#z)`?UN>YeQ)9F|gWAsX1nZi{>9gE=bTrtd@&)jNXxm+-o zV7{PACCr+#TC<0$Dcqhsh_!(33T1mKHIKx{OW=BAgDIwIVBq_4&uU1V)JCz*Vm?Eg zhJj=6RskRO>95G0ueb(3Bi@ccO$5enaYm5OHyLx|@5uLqQDUYslcWG9w{md!|K!CP z;t}DD+Z+5KzqlWSJFxn}6pu5AgG+Quz|WQiE&}>DsOq&v1e_+<+!@UBn^(iG8ru*M z(9c0?+cN!lfAKmo{~t1Ma6uC+Dnw9r=0g&lI*2wGh@Ra@bTieL?W$?+ z1WSz)?E19VW%y4P7NH=4%vNTjx6HP5ZET^`k@XVvA#bdqSPM+;?R%-XlV2td@lp8p zE~YK_0zIEQw8Op?FXFP@Pm_5A!~FTr8LpM@;x&&L6oRzimN&_q!sT5NELp`5u@5Ai zsvoGu3>4YNi!>@)4TVO78_6wQYrl`sg1o&duYfK(`upphY=?E+pKQNb&D3#Z#)9Z< zwjY-^rJ3W@Ou%Q6D`PSnr50+@s_xR4$yF~MDUnV|qKE_tI;@&%_~G_Vs(V4hFavw- z88}8ub|ZKxIYsuJPL6aI+SLqn*?$3*qKxWOqd1I?MX!+!64)Dii3GOAQ_1{ycOzYQ z;?Lq}dSd`xRI}Umso4=m4KD0xM)qR)0w!59!t#OWnL1aM*re>RSDeJES-F2+3k@#{Cnu|c_QmWldl!J2l)VW@WEQ3D z$BI(&V9^n2x5pf>fL>&ZY62cXN(bHHqXf?u4oli!!NaN)vjg~w+#?U5)J6hrI56ui z&*x_J+y`!$FX-M1K;h5=+<=0(RB0Y7wRk)&=u#Sm?6lp3WfP{E#PH$b+tfSw>_^}< zxKkj)t)tBbdf8U7P_|OQY;UV*Vz;q9P(_YGELg@9_LCe}ae}IQ+7N!r63ESDm&?9Q zUi&YTo5r+fPMTf=@~jPFH*v5GH%%1e`m@3nODi4Kx(Sg zRt1Vbz*RG_T~=hf7I}s;w0P0ax%nC4aqdG2f2N18;wMR7!5?V)t0Yi1ZvK;#BM!5x z@#oqm%xFZZ)g@fJB4KKvlMWO4t|FLY>;+|%LFizFF1yle{GaL`+8fkGiLxOAiQ~|1 zEMOUjWs1q65=0o`KhH_sJ3m+%ZS%EcMR>(= z5!r?6(uzS4`DGb;!*1Ail_h#ZR{`(J49yF|acc!<=2k;$m4O^_u+hiq7k{K@ z{!=z`<~29T?C-;9;3{EVG(L~}1NIPia9Jj{cBXF%P!k?TW+;0(`kt)t?CBYylcG1L zZm_g;a`~~mj=vlJpgX)iPqy?15Hlg^%PX1RM`_m|)hmRTqVm@wi0`N??i_5vp?d zTL4GxM)&W@gW4IK` z>5X$0@xquOBH&NkuMd&wKsGV6uqY#iwQpwki+F?9+W_Qw0CD!=2Xa6E7vG=S_xpdi zgzt|%^7}>b){pxB=SQ0JS6CM)+1c!`>)FiGn5UkAmLvlsTVF5i-rpzVgpWx-C*T zQRUpg*HGNQ#x47lKVu5nF71#WUtJ8^2=cn&AKcCgzfYd8{~0MAugxLWS)Qq!Oo^Na zSF0FXTJp}yA2*a6I(!(+>v72lA0DVRuOQ{OU^=&pZJ(xqawE=HK;Yz^bqHg+CE{KxMGD zIawzk$AN;w43rx_ysB0L)`xIyjxIT#1aVR?-4Qv@d}rMtMSr?lRupSeS;slA$pZH# zMOnM}ube%FkRRn#4qJX=APd79SCIbl*Q8NdYkWZZ0Mb^G6n(g%34SAy)-mF=vi}CV z${zikI)SGs*#eOIW3ieN-Iil*jsiVSszumao3L(YTdJ65Sb{40H)$6E8gqS1>DwaK ze?gGPKnu!T6?W!ZGLF$XPGB^g-<_g`&yX%b=6FOWAZax8l~1}kmN{*=-(Dn4CBb;L z$On>dl5b^$^)ftfA;O#N9QuvDmXd|q+hmTczzZB&TbZVTN)B{rgUi*YdZU0qjTvqr zhsZ;dJZhy!;T~&Plb;qIhzz+0gaz6Z2&-O_1Ysp_g4SKn;A$#Lx5{Wy9SEFYpGdY5 z4ou@-s-A{^16UDY4jJtd0RvY4)E_X>w-TfZ*pC)c^)!*hnSuV0~7 zSr>&A%YvKRIX7wyohf4AnjBH=5t%{S5J0}KbXSxM=%hXw0gM##@OBXRTt&L+DQOAf zf(w^R0CCt!D3|6iaG`j&*2t9hAPhp=uTONu|Cypyxr?sezJxA)zYB3re{ zN|l!+ReNw4<=Jy5%dT|VWW8IYV0cDFhSvCMvYmW-CMWZGo@LkcbR+x_#$X_=*MKU* zn_EPIl)kUv7uBd7D@wS*860i2sWurX>E)z_?Zp*mBzE`4D|%QrP7Ewac%K=2c>*0# zBD)>o{%wbJ-AS`jvAt*B-&DPx4K(3g7XB^FV8Lt!mYgk9ROpb`YPtvdmDa>@{F zWTp<(7H8`Fvl?p-Ha6e0w%!mpG*9t#Jc#?sr9pRs~#@Nuq%i5EZLK^3DZA& z=X`eTi!`(>L&3wU0{a658_O;h@PJ*l{RU4`@L39yQDjG?uuB-c(W(-Au@v4Y+9lDd zGJBCcp<5s&E9_s&lQ^y6$*|`q8ye>{RBL;rApn8A9%tXfYZ4O^`72J&&j4)SEpvhs&PL! zvQQSS$dnl%bL>oY;fPX!U_(XnB>G4` z5{dk+s??bnck!qd0U&UFZbYw?^{!>{rE`D+v@Aq8H(4v1sdfM?`JVHquAS~g{-d&+ zQ9r@g79CN1{Blp~`#tAP-CudVF+t}B6N194y*dDPdHD8vj>8s)z0_~EGS)?oFHEmC ztl|m&7)|_HI34td-zO$JzfX;Geis?eFOImYwd)h;nsn;n?qV&nxLR15-REnOMUr}@ zgsB1rsTNC@KawK?iWbq=K;f=Sa;+V7$!E5M7!M*ln#m^@he^5QQ_6G`t{k4om6;#OA| zYjyQLR9J(qK-48)>!i0{bKmT1yPR+~v{3E( zN-y3NsC(1Zt$X&v@-NY~(feU=iB?kGXB_|1tvCUmU4~Pk0h;xqbO~E1&l}QEWo9L@ zz{+Z@!rxU}w-wqWtioFqJj9reA>kQeX1l&ZFf6Rrsy&^Cb!q^}qg}thTJs+kY1v** z0Q((Y@c^y4fyVKgtZB_{q!RhQ0{FH{OHjwAuyHAwP=}{#&9g{_6MMAzzb9eTwJEKd z;_b)^OT)A3f#mnVZDL1yWe-k~t5Y@%_okt=iTE>PcePej)xn=pE&RFe1^(Rl6o2X# z^5?FGB==0>r-{N53tFx5G+gIQPIfD$Fvl0Y9L;tP07sKU zZ;piW$-m&I!vGc2m-_1V0(e7r@~$dR&fYk9>6qnXLzqhZAem^~51I(<-K)*}lN{j2 z-|^S5&i?>$r?^%(%+=~73N2Z|nECH6z%hq0H7JI(%D(9s(dGy(V44#7*B>vwM&x3~ zu@vm2v_2di2=Y13h7Sj2e6{o8e!049RU57g7dMgPsXj@&w{w!N z-P`u1_R)U+Ye}jnoqsxgjEUEZ(nP#X=-O)#k8za-^K|6XN~Xh;t{LrSD|By)?iBdg zV-tgAg^xb%*WC?7;+2&0U2zjBp{&x-n1ztFNcc)YjF(&FX#~|Z|Vj6 zEAn_!qs-H>D(I)>`3!By$UH4iAEyneggfb*%ro3ceLBw-5UV-3ml4)mC;Lp;Y9aJT z;Jaa^Rt-ejT{gT-d#qIte=tyctR>Q}H9n_~KudV{xZ&gE&Hj~xlW*2b3uepNPf%j` z6VAJ1lkb-EZdn04mjY+C!o&ZW)Xc-lP^2AU6IX8luB@3mq~W{_+go=y!5k|3neyS? z1;Y!11FL}wKcH_g@?h?TKs#YiIp>4il8huD&>tO%!fvK7p_jl$T~5=t?<~xSKO^&& zq9J5o zYZQ0x@%Bwzh_p~B(Fy7%5(Z6uv#LUFayX26MkZ;qs>1ookkngG)x_CZa>*0k0hY@q zJFi7ZGn>y%_C{w+5ezlk?!*@a=Sprm8o3*#6H#3eS>iY*Jf#?u+^-Cq;WfRj_UOD0-(2CGt=J&V>#eMr*YCo>Gn^%ZPO-WePy(#o=pDPfCw%2^G z8djW@dl+jR#C1sO68R%(>D5F%?Q$iES)p0#(HVhnU}!aatAV2T+w12i z#TMTjCwK9f!pYdmp@7PToXCHED0y{uBL5xra=lq**GYK{o||r^MKqxk`8#+g4&oaZ zOV{Pqt7;5to+hRzCJ95u0rccp6(y4Mq~@UXZJ8@e>Ls%GJ`d4lof?y$)G_YC9n9>G zVHag6xI-OpTQs|c=S2QDxnM7A6Q0)K7{ff(EBF$--YCx=aOSxgq2a@>7)Dm;oM>+M z8DcPlYo#)&QCF5>URMGd-#kq9n*0*-&E7Hvvo*et1A&U~x1Ix~%Y=_Gp!ps{yjRFS zCK@yAFYt4z_L%PWp^GC%pt`Z83)TObst4wEV@>q&qI*vJ9e$UEj=b)}v06cm21+g4l&R@Y*^En+{Wfr@CWaM#zkO zWalB7Ul==?G4_VjM|k6LsVV5?!RHH+RX8#~#Cy6Z20-@-L!HOV)Z-vq`J7fKKm={@ zkV=%Uo-l7pxTQ2>y`amg0E3LbEPr5hq~g$vOdDTs$pA3&wUkkWBLixg9#jemk%#Dv zcn^n(0U~EV%8``KxLEb^CXiR*J4;RrIa>2tm4CM=?s7pdWN5zV1t{@`a1tUk>o3SD zZIR^z;H0o%x|uR)rI&Mk(bMB^Z}2K74A*`M*jM7fi{1tdc0XmAW?-CgYbg~ z^I9Cn!IV>eDeN)X4zK{63A;jzd|!&dNwXhNy>JwCr4erF@~iW-CtDd{c{Pa^5LAU` zDYX@C{uA;gFoE;oRQaOEIP(C66rs03$eY1A96m)anRVJ$8%hTi_+>0WX3D$aGSy&Z zPU`tt^}NnrsBGQf8;L*VQIaVu2byU|1ywYNQ|N%+#Ms-jt$0jq+T z17b`jpU$p~j(HVDz)kjARAq%r_#RjPkynn)WncSfMqmRublOfrN`-Q;8 zkwV4cwrU6EkA^17ccXz8KL+>FP`kiE^F0DWiRb9K`{~TQOuv;sBkMo{4|vCEi(B;l zkw-fIeo6*>ap_2d2g>U%m4NWNgTzbkiUn!pZk1P}zc?XO7(NXC_eV0qhe1~VtP=e~ zx$~+r&#R2!b3l*SZ_`SFK{2uK=QXLys%1b%4pZZFKI8|CQ{{x8onG zbv?pgf)n}MZI~ybDxoY!#csiG%p4Ig5(COET@ccLrWCG$QT-9*2dAY8;yRb3Dj1%Ri-dY@<4 z1Lrq*CIs`f#V&d`w8+@@KAw^Xt;6H+tXikU)LqPT|LUl?x+I2ni?0}cbi2T4?IJ#R zn>JtY69fl#HLAHr3XWCu!ub?1Bk&Y9)vZ4KQ>oLeM}ZJ6S-3ckKk@Hy1)PO)8SPad z9N076Cm{1rqC*8IoSk$fA=C=I=0@a-1tN91P;Jr8dh{6kZ^C=}Zq&eFd0!HtxWbq4 z=5e)k$|EDKQ|5?v;PeZt&9y#UAGE%ITEM#Tpl-T|b~LDiXfVFceT1Oa{<0Qla3}kV zw@C4aV79VJa4*t}2HQgXCu>x;{VxGZboDfCvC&UkJkHhnLCzrj{u!CcM2`ARp>I7f zp9@Xh%VW~P+1%)w*-x@7kZR0%J;_lM#T&6D-Nj+G=E{}{cOBN|dVsuUo8ry=qI6~P z%0&AwI=ihYnO^JROrvg-SIjr;iC@bcIak>}rp{bLOADT+CF2QXcG0Rl0D`}6H&&Wh zT}~}fUadf7?e$W)%Raa**@+NU<|Hy2Ag|{xB5iI8uhF)B>~$r=hfkZiu^OgVVl}Qm zvV5LTW-jvz9Z>pd>3$IF**;*SG&$XA^4V0AXVQ!)^xV+XbaTMTi@5pK(I{K9?PHw} zxjx5$e&);eJ*m1M0XHh6cRvGi23IhtOg2$*+0^CAg`hYUq67188m1tIRcq$5g?lAy zcBU+owm4%FVb~`PYS)(R(3Z3=%VCY{wfsdM|JLEE(zy?N%n?&_pIl`!$c8=2*i zKnz07a-no7Jqi>aid)qY`jb3cS)jRSpb#j`N-HNpVBLjuYN{JfgpzB+GsijkPfA#G z7-#gb7|n+gmcfVYhu=`b5y<2j-0_V*sSzGUFQAEPVMl~=9c-q8 zuL(PwBYPJCY2$HVB@tM`)pB~xQx8sq79Mkj&ddBPn$#l2{B@WX=aKRweomv}^~NuZ z&ch-pZI-=&R)t^t%YKRPCY6*APN7X(5VNQD_aI&v=6!jhfuX{uy(SggTVwsg@AZcv z*?2O~i`>DQMHRs-#Dg|m61TRvf3Q;6C1|f&qe{#Uuz$PaWtmI0u_}%LbPlEwZZqPb z2=#_=21XfiZg&2z6q-mcA&UJ(W;%Gb4gzu*U0}VfqL9^T2w;N=gUJ^5P7ZK7CfYrv z;>Jg<7Yi%61%Yu;Tr?}eSqQiW+VagJ_$p{AL(HSQW33|vvN}%mG{O((WU!~aQC=(% zt`}!oX=Ql}i}2V`lx2=7$`MmHdkHUD<-#ije&BmU%@wKvuDzZwF<052b*?Koa-RQO z{QInF=*Iunm6Wjbxx+KHM~9Pah~3xFo%!IsY=Lw0yofhJifip^0ae>2id<2{%%ZIO zgXhW5y#&P;Ur^!IZk*SW^5Fk}ejR01EzI8wWD|Wae24q6Gs_dzMiM(llYnk(>`&nu z65wT5ViVCUz2??%_k`Ia!rk>+GcwYQ;LLFMJ@qq!7lgYfYt6f4KDsAq)-#-$aBO1m zX7N#fgYr=?a?)@NhaSQgbmUT6lL#KC znh|lIBpL-|vBy`1yQgal{wTTKxT&j<-0qpd--Nqo1$W2Ra@vL4*9i48JXU>Q|=hi_>2T7px6|6;lERh92U(S9QV7~Fu?=i z?pkdDZm-F@MvI(DQPol9dXA1pgrlfh5lff&(jXW9{j*nxyQgXkhO1XWsBtDaR!?Vx ze-3xULw;7i(0z(#ouo==_2Yv-Ri0E(DTt^@zh0*gTH_dMA#GTx!)4H3-Kt|&7Jk2< zPEL4t&Xzr`w#y68Uwd_3_`NL7pSO6ew|HGOSuioxG8D@oL0kVqAHv;3uu4~n z)W?Tv3mzlK()UQ@okyFbtDo~{PE6K9i%gT^GSJUd!lgCtl)eFeey>G#N?v!378yt) zX7J)jUWJkiDf++%Qz$&qR&sCA5{5>QSrt<1at4WZ$SdzFt`M-8U@v3|+$=G0ea6lf zo6`Kt;GvK=88C>J!t+D&6}!o8FQV5{=^HxW(8FDl;%H2!vCxksRU)ZNg<{MU<;M{? z$E3t)V0}%6TqTVz=|oHViW?_aoSYVsA*rIZPBYOO0Q1`5-($<=8|n>cynHHJ1F5q% z_>z5lrExSJ^*$N6JUp3$-FY`;6;k9D4%{x$~W$>KO1h$(RFu#?W$NRxENEGzDIhAQ(KxsYzaJRmr! zijqgM|BtgXfsd*>`+p!AL?up?1f!x3iV{U7iVHEIGmyvx62%2YMUA3}TSb`^P!Mnu zVHifNRcl*qeXCaMQuno06Ho~th`50pxYZk@6|J%f&j0&+&YhVA>D#{leBjQ#&pG$p zvp(lJ&l(~Em+F>0CB&%DUM>En&K(BO1jzonyqW9SlFwPJ^LP< zj+l8Zp65?APcIy+_NVL0(j~n%6qD`sbjh8YbW?crpTsD`ZDF0=6rOHB$P+VP!r}M@ zz`U(rqA!29ck~uQ$33X;Zo^7tWW{@E6YrrQB0bwrG8~6DOv7zxmIKkkb4_wOiaJM~ z@egDz$xDl%^*A+N7sekl!IevE`Y($n8ZB0+cDGP1(MnTKYfzHK@L*&)+HfYilJMGJ z&19^F)H_aGi#m#j8Gzd;|E6h+RC_83pirrrD1ZXi?PIY=_jyVg>6G@FQ2Wi!5ZOC^ zfsROaoS4d7{)z|(H5F`0O%o{&g;|uzZ)vVUdy5r4G1xc(C@W_o=gbjOZE)2$+d--p zOq~ygvUW&hD(3)=C-6r6$NXU9C~ih3Py3z|%fgY#+8;{2g)KjF$|WOKE+_MoId3`% zF8T!z^_>Wof|k6gE8F+`^5Z%otPbiU+niMO%szL{1S84r8^}buSI+ys)xd!zu*I)9 z3ps=KH-&kPrfX9vh5Itk5KXPROZAw^;tXNoi)?kdP*qefmg{bmVXRnD%F7^kE&=hnHU9BjHs-$$jM zNn!;vAEX%L^;C!0+|S{upO?oGU(%X*AM(CwnlQU~O}t6_=Zv=UcA+o=o);(2DEcqU z#NNcrO$^PHQONUUR^`Rso3kV@XpV&zOQPi*sRDz;9%jEvM1b@U*ETTUUi=x>Tsdar(12Gu0z)s{ED6U zX1)}OZ|>)2iJ~QAOoGYv%)ym;4I84fSOt)vvk%e8rC$%eSg>yd=dDeL>p7k-xVlI1 z#e6{;4+J7sQPYXKK_7lM+zE_jK#*6g2kEhOo^I4cBz}Az909`lk&zb~V|qan`(}SS z+>cWPm>2NH_iEm-D&49+3wI#xw~<>h01syRQa-kJtV%{g$P0T18_Ovg42e$Zg4kfl zSlpus5~q4q!rkeHA!N+QVL&Qy^Go1lDODZ}C=}b%`_+C_gBh@MG?AYf3GJRg*r2pM zzx%Fv-iN(*RnuZ$v=vaW=4@u1au-DG?TmF^{+EDvo@{eeo}1KrUeGOO{f&MhuA(FyG|Qe9ef%W4yo|W z_{QUdvy}%IUtKvMcN-tcZ+&(qTk!b)t>YsJqSP9e{KCGZs%-vJ>x8zGm~IhclbD>n^SUZI{y}Y< ztJ(2yeM39G?Gg<+H;?HDNSB*O^YB>2o?MDjUI-ZU3(_iIE5FPnBU!hPbv7lOX~DgZ z{+Am0W>+El%xIOFQ~8MOgnHV9L#rDRULTwM$#09Dux=Q_pWyr+mVreP2mb1CUP}d@ zy_ssK1CQya1A5>rrDz}TMOwb>8i{|h1BdTW>|n0p*giPo1P7gr-hqr#-lTg`SQ(M( zQQBs@VyQ^9eJv9|+WuY+k9M*t(ueTDh{4@Dre=5!EZX)iv54YbRK6aoK&h_s)tLAE zP7I$9JHWx-!dY{}SHRd8@Q$z8ZuQ@ZsA<&_f7&$wxyc|+qp+5WvuTD`BC(g&V3n$y zDs1@`?X7$xhF8(Trf&3m#R#_fawVqmZyOE4I|+f98?t_jWWj~!a7Sl;iB1HV6M=bh z!N8SmVyW;muSPG>qllan)b2p&<jT>yJVy$K9~_MDcnC7!H*# z6qT4VN`yO---%=Jkj5;+-N@UjWcn5M*1FU$3FP$6w9mY@7x;p9<Pz+)ZcqH?*2T+;N?ToLZjIWS_` zJNP@}xDhtk$(&`HwJ7F{v}c8hm)$3Z`%R|+k*GQjvlUulgDWo?8HKVl(B@tc+p|z; zA7eD5sx_K7j8?ICUIP(K*{f#OMv+33caw%OQKlAbi66`73uuYBg4uoF=(A95B3#<> z6bn~owwCs!$-Ewnzrt-YA4`*h_{O5(4e}BY-?%HGA2;q6yy1R(Dh}Qd2NlLQmIRwl z)vB&s6O5zrLja$JN~6Xujcm;ju7pUVXDQr~MS} zCygXh7KCX3g-&YJI{8=?RGT_8jnL)y%5e}mtn4+D6xNQ9tihEMHyc{i2@N~SH&I}4 zpy3kHY+C&pgzvBP_{L!H`h%q1$eZt1CHHb4j4)Y{R3SN={3;#JQJk_<#YrZS_dX2* z;r=y}8un9sa6GT!9`0bJ_l~#8qgb+~Z~ow}vH5K{1FXRxCKSpgB%9^o4Laeq0rn;0VAl%tNSmTo7Ud+a z74m7QSTsy>9az5&+!6`uSguyrN*P? z@NTvWtoMOZ+OnhH^7OmL$vr~bUOI61Y^GQ$aEE?!OVH>Dow#jJNCjTFn`91c!KNUu znSznLdAGpenqERs zlfe;Y+>FoK9w39I9Txj6I&P(R(HEKlypSOPW^0|K0>8b1HcDqJt`eKRjs~l7LoR9s ze)f;Ww0b#}3n6evmuKD_3PGQXd5wyyy^xN{X(4B8$>8p~Q|a6DZ5->xI74;5iC-^Q zM#i9lDy2*EX{613`Gb?Q-);OffaCt}^NY2-xZzN~Yb$gBrn%iX4kS^D-R?|#eJ_8e zEo-|=n~O3nZTl0q9o7`PI{3pyQoNZSG}f<0Qk2QTcH?TvK%ovPYc{Ud!vJjZ{F}I1 zhnWwgVB@3Y%f!|~Cz58Q{zGgn8AULEKiOtJLeYhA`eAHuah#2ziweU=sKyLKcZf}> zp;?CRp?a1p{85xCRVGn8v#0S8O)m3>30J+(6q&oC3~Ph@;4KRWu3|Qw&0{oJ)gro6 zIE$N(8#t3M?bka0c9R1-JMGE_g= zIUaU662YBd!KW%N7gWyA~Ee%wdAt}5LM?cYuD5TYG9kQ3h zv6L;rz~-jr2U)b{XKJm}HpvlsQJ)<>^Vt0nl&j#>Ff47T$}zum1$VpSU{1PKTe8$MtSBo3$KQeK73rigy-pIt*7MLPz z5F-<@mfU>e@T2uSYif6~u7mS?Q3RnxcEyj5c%nJFk81iguTgsm1w*I_y>jDRO;;3L z^m=+Iv&JUB_S?GD$gOt9|~2~?(fT6aB{7UVw8lssYqACEO1DJcaat1M2s$NpUFobSR&`n z!;0FInfA@tAsT$q8m9(ZjW40b(cnu}CujAyI^Z?8jc?|3CACr5v~1|mz9%6-eWT$# zHs$2ddMw`Fm`3Y_Y9FVt+KTWLEV8-NQrS-sqTQwfAGGOwR#IIKsSh&$LA^#Gt;Tv) zV4I!Wh-2DaPpPrnRbs=A0!V+XjZj>uH?qJLLaSGRk#_|>1#u{5|Hb6OhwWT{Gd-4lOB`<0AUOXWm6ggUo6 z*!%PC+9p?74<2iufN{wB3^rcC(@aSj&lFe|!)!&~lADy@o%RNiU^FqyWT`jrX3@K% ziPy>DSvKAWWVD`T?!Q#-@{nJvi_eun?*9*WG~}>G{;obP`*j9)e75b{fhLNY^i?`CMs6FWLn9nvEBOFsNt@DsbIy16}x9t>c-0GLnI4g4_)Mmx^%oKkg zUuLzw_KNfa!Vs2UJHWL7r@p zDF@{>ph_d@E|lfdJhq#fK*rxh$zCP+7dZFc%p8|Asnz@E-I}TWyXbH?jWRpQlO>XJ zyv)J$FRK6#wtI$wT!fkI7Ffy9IxcwtN z{oLNg@LDRc=__l!J9h7{PsFFnDpO2NkX?x8jekXS;ZW$peAn{N2Qk|Xut~#&4y}T$ zME%Hf^Vb9PY1TF>0H558K70CT_a|-oXSL_?2WHwFZTSX$`pwv)1!w=tN_$;_OT6i0 z<^R%AgHwTPfkOx)D?5EqG#}64JB>*6Xs$^&N8|f38kiDc)z-%PrpATEa*2?L79nXV zGmx~hNZB5Wl^YEjx$8puAysm)eu8xiVE2F*Y@Yd>_L-%uIo1`S=n>Ur+hAet8V|Rc zFST=;h9MYDjGLz!&t3yf3FVvT#}eb?u= zu;7k!EzeM~9!#|iQeJB1qDhsUQv?|6omi|EcTY~rA4zjKa@c#ZWnAu^)&vC& zp658kuJ}Aq$*RHMEYziVv+d%Y@`RiJ;BjH*TwpGpq2LC@sK0IbgF2AD;(pzgK?G}Z zebrGO$`__mG0DYf&hRqZe89aPf;)PN>I_sRo4)2;xMPESEpu*uvsRoK&A9d4EqBLP z@2pvj5xp4hbPkZC(hOceM`4Ng>D^>w+!^x~G|x~$+x6Ph98z%O*|Clx>c>H{Mn2yu z;@kAQ9B2?+w?8)#0@|6J9R+EC-tcD~m3iGeUFD?C zrbqJeS(DpKoE#B-;^GpuPqIDJf92l62_)Ve)}~P8_Hs=}s08%2)X>Wv_i&>&LI^O3?x1if`GE55KwK@1Q zgG(d`{E!^{DT7aO@E$q%odz#+aPKR9+{$kT~b|41Suce>ev(H26U-fA1Xphb3z7aF>5ed$yh*8vF*A|AQR-6@#DQ^8Y;t zf7swVx%{{1;I|t5M3;X`4nE!BQd*<_V{-6|48DVd56Z#o436Mg`Ac)~qYOUCmH+*h z+4}Eo@Z%l)wH!QP@KFwaPY(X|V)esu4n8dhf7{^4I{0Zh_zMOva`h?C!S6NrK$pKq z4xTc2)WN^fA;isx27`}q@RxJ&a}2(tEB~GxyxQOa2cMIJA8POlSI&hwc!|NqAf(@_ za`3IKYOiQ5;C*xO&kcT*D`$(2Ij)||3_jGs-^#(CGB}G#mcVbx!J7tAT_N|*oT9Q=nx z>Ia3XA^$x&_=g6Mxct*{@K+3erOQ7y2Y=Y$6C8YS4t}e_bq1pR-Z}VmgYWI&TmF%) z=S2pe>fj&b;B^MCa`kyK2S3W-wGKWn2jAP^V%728%X9F6!SRhMcx?{;^{eWK(XO0B za`3keKHcT-k%PZraCr-+oUbHXa`WU~gYV_wujSw=gZFjthjQ=+gV(t4Hs;{x82lIq zADe?$8yv8{J2(eF)Zo=Fe{l|8V(?)O{?%vMdTxD1?LFPWTXXQw4L;44e}4|X%-}s7 zd`=Gjl);a7Um@io-(*U-+JWW z4FQo!W_KB;8*zd$-%cSP zxxxMY?z1)7`YbcJzrOySgFj{PlU(_?M zAKw<_;13(zr=vdjFk8=C4c_3&e=-N3Zt!9UpO=GQWbn*Bo`csJ+{XihbMT`K?(b7Q za`3$k?(gHDeUPnBz~KHq_+$?Lb+h{6GQU1K_}d2e>6r_2@D~j3(@TSM@OusJ@N*3A?+bV2;ME5A>CadWeyG6@boH;z!AlJ8Hm|L~$?Rsv*il#8cwP=(i(I`ntf=Z{!0j!|`K2Fz{r=H6Qg#H$H=)f5F=0doD0^SeNK-T*VAuE+>~lhwbsn>eu&B)(STD;Cn`8 zbsC_y*Ps8<3E~?e7he`hb8W4WTq$flVUeaT?>j*g zY9g&PA5hLm1N9A?OC1;19H-59VGmc&@d7>PbL(Kh3`B}qJxUBWd^Iy=j#O+p^U*B{ z9DH_ZE14tm+P?KNT%QMi(>(&P7YHHFk(;?bRNI{v|?SC4^xwLV&L7JmPN z)>&B9jpxR^J9>NEt6AWd$%3P0Pzlo(jm_Zv+m2LEPawwG*Hf;oN#QgrexAx`>NTEHEJIyx#?;EY|e?O{I-K&3A_eR8a zXFappK!{)MhKA0&4Vh&fJJOi1T0UO&FCD)B8FShfLK||nHQ)ZvO!?bg=Mk`d@)K4{ zHPW{^U(mtWXgS|88#YO;^?g9zpD)c+0&RW(FidfDJFzPHP~Vx%GmAM!u(IXej^mWk zv(RPBZOo3OGfDTpxj-py995?Hd1AgU^=4t~FMRw8P>Ul*%zC@k+|H z-CmRIHgnMQU{jICE8UFqG#~HRYfIWL1~EQ3IFP^>64^?qEB&uAbRs8~OBLHNRdOmD zDemsSsx>vKy`>NZP9c|f6gIuc%&tEN{GHnSTKzC@K~j>-!j~>n$x^*)^>irHB-o3# zG)-3n(t&IKqVfZi^dtPuF1#TtKgo`V2|2(XzK77Zte(`&VB?)C2x$ixHg=M?@)5B; z8&06k^M6oXmU;hb%ni+6%3N8^j$N)hliSpCml563Ngah1<{z^CldP;j&fcvtOT8|H zoTpJXf-|fvV!CH!h@doD6FNJZt}oB6GwL*Hv+A_T+kcX)Qz}q17Kj3PMOBEzzE^SM zEHJf-mU`{KB`-DocQe`FxU8>JfitgFd9ATfG@0nGeIQjbKFBILU+UE`x-rLdJsnLI z)+xc8>qH+2^9nyW=n$&6!nea*w(u4DdEUA9epB<*zqcjHt9|rT&9b>&a3{Ab?&J_H{qwTj@pM}-t9wJ=xqGCB zy?y`ISjano7o8`V*+22(%pVU$Xr!@5a@^A1tjqg2XZ*_H6vMA3Hyg6zsm4Fnu_#W6=7Rf|8g3+pyxZ`;8x+FVY8J`qeY<(41= zGW|<0?=g*ylX1L6`y_}=6+S?^_xYo_-MA-}iGl`Gh4YoP#FE^WzmeWT#O!dsaO<)$ zCi7@qLxQjqDC%8r#WNHp8OdTn<7J@CN9^wBK^7&<dJLSLR7)eG^|GZX{_INo2Ki z&lTeO_-Ffw!&_Mu;;#6F$f^*dr;r@#Q$A?*rvoRAVdbU*QT@2HN%lLo#4)bGbXsEk z;nW}R2@S-e4^-R(=1k|cza}pVO^2#wsXzfh#Kf8UWMoVnT(oZ{m#_w1+&Jl>HSVJ> zmb&tM&1maR$)CN$Y*ZYI+iYD1ircQQk#NS>NayjdP1J{S4%*lfji~%svu6yAXWi(d z_o--Y35&RaU<)=q>c|UV^NkQn2lhY1`lh#j=$o*1v#97{NZ1Q~ub}3*Oyh9B+jpca zLnv#OsUK#iPX&Q7_CWoe%VxM>|8JiG*2M$I#Z5apOVT7Ovd|v3UHV zwJfJ*1=3}+{`!sLJhLP+bIi41ax)@I)p@cWlC2THkIJHm-}_}v6d!6E`hFJawr(xK zWIXIJ*U2~s>>Kjly+(V_%M&dG3+JlL_&PhUOpKhhHcGs|;+?I~E+n2cg@Lapa z14iHiGrX+kkQ=z~Y=eS50zJmq?HX>+A7{5;aNFw~yTx;B;K9r7b_2J~2wJH`n%mLi z?RE!lkG;xngWLvxVYj<;TX3q~?#u08RN(~Xs`x9q*lq`K`>7<^iNHNTy!|5?#1^|y z1j|zI2NZD74mcfKiqhw`s?sHoKgkxF&c{rIm8K{P-Urv}wXs|Oh`$HufCd;8{Hq&o z^#566AKzhCo7j64xo~cN#2#(b%qw4?A%1>6O9YJsy!%3aZ)+tqG9)NRn}fiEi|lyd z!gBsBW7&3J=ghO6LI(j2HZ@ssg}a}vMfxVwMg-6SWqRza4-`I$(rk)1 z%RNb`wr#iSkIg)`gm^f_QMRavu>YaeHMrd}O`l-nIaYKegpRI9gRrq5Nj+q(AJrj*NCey~LOv;NQ#r*eW#5EEblx?MLR<+9Z4S@f4kPGEthm9^)0?A=p%< z5l#ngJ(q&%$iovbsCWa-GV$QBrbPaeVE%mbH6A)E%JcV?(=mms{t$ z9c+twg6%)nFFvk#O?+f=(fVP34wiAMaGic+ievP#=sBo(2m#DivfmZ%_CNVI zigRC47qrnJ+e3b?Gj8+`es9@x38TXP5^Vad-d*qAb|_6x70wQHVFnO6=ba~t^Qy$f zdk6oW@HNsU1y6}T$~0V;E_s$zoyp7e7F>uqH>g2u)4@L);t<0zOE7dGOjKtr+HK-0 z+smUysXmQY=z&&b;wn!)%8#oI^`6x+!|X_!$LMFSV6dhPFmIIeN9k1_4x> z{W-7x+SO=~c4#K9yiUk-@N3R<@M_ynJNeFnakU!8)m`+WqT#Hob-HYcb6#h!n8E)= z(TX$iZC;_zr4$419UTv_lrLQIg(hS53?J#?_Rq40HwQ+UNWGlES!h$KY_20Q~C8n zLo@M34XjpH>!MH>YLGv z^nIFi&>y7ArqYN{K<|fgw>&h-=4z731_uE}e8DJhHEH5>f&Z_DJ_=#bSmu3CrX&`E zvGbzI9l&u_^5>_;4U)GtJ<>|?^wwZp37G;tUYt`WcEJ_+xV1Hv-v{U2Z9U+}4`KRD z6gHY-b>G&D5FYM$*w$@Vx31T05wiSV#j5*PTKVw6%uAV9ev}%iy(TtrQJ(e# zOv}0_rcmUVQi3;$q)0??SmvL=a}(Mo0;I(kuLWP)HNLqtIA8LehHe(2V`2QuU4l&s z0BmU4vxxB(#MFnl$&Nbf`3>@kor}wB)h<=|yDQng8_rhM#953%7S*FKZGIR_e{RsO zT`gnK-tS@^Fh&+_jwYZQ_*4Shi$tk(dJ|{z;VjFCs>=`Kzr#HipJH>m86LoIUr@hn z*jkh96&=^=owH|VUc|->e81wn((49B$KlAK$IK31_q=Bg%g&G^k_+=c{OyLVyo?FT z^6r)Al}{tdmkhtv=u)TNp?~P;7^tMpHut0}7?HkP|H{s#x zzG~Ifu^rw}-sDSCwzUP*YR}nK!rCxo^dw94dsjz@j!8GyEPlPL=z}c zpUiV)9lpY0zn<^W)BolWM3p(Oyk!Gt21WW3hn2g+ba3`NIa-yEK|fgb3{y4nsp#T6 zs51zOQ&DrU@eXCsDMkPln9;A!@n3XCFgL01d#5p!KH`gFMHG5=2TiE>g0k@ycwJsX zS>_vVxi|7#?HHPSu^tGx62r=Is+bsdq)*9%XtOfx_J4L*huivMsny26IXZ4cDPfqs zk9%d;-l=Zw9ftp+?mt_9uX|spUVQuzqzUPTII6d0hma++>@s5Rj^0?n3EI!Loo{~d zy7)Dv1*WC0Edsl9>)8>Z@$sos&<@|t9&2dWyWXWosG5#~U#7{Q+`)_k*%6AXBuldG zAOu>`rlS6gFPI{FYgSKTjg2-ix7dqr&zZGg9Z%k#T~)4aAX9DIf%}-ODfc!Xp6wR= z^$ZI!1~u_!kjDxY8vdP07lzm2<*5e0mei&e;W>4H)Lrg2r*diq07?c+DnHiHwi4X1 zvqPqnKK)rAvED;9$xUWzW)=|I_s=UA-l*+6;rT(T{mY<4f3K-tl&1rmJYq%@IkHca za1_Bn%lI9Wh?EO6BqGe2|7G{_$4h$)eV^IAH6=aNO_;1A{9~o@YfIrYelbAuR%k3C zKEru#8`$nXkcshDUWFyOgwD?6e^v5=ViRIwt1`=I1lvAw=hCe@`C7F$nyS7b8*guj z8tL}1@)xy>R7_%{e3)AJMkb?l{PFPyM9KtJ%8C47pWK(Zm8hO zku<+5HKJ!ESlxna`y~CgwnuzpL2Ljr>xP2h^Iz@|-`FE|U}SwbTGViWenJg+QH_)) z^A5;c8_e4o*WXLJw|^a95^8^q>^ru<6<<=&{?2Q4;({B!n<|`hFwUC?Qcax)*!Mc7 zZRrovl8!ExJPc(af|)S?qx4nT!uCzu?ISaF2Cr`R4m(w|PKYSj_~c=9yb(9UC)#E$ zyf-`q?Z7D-4?wRDgYg0t+4v{Rco`FFSh|b!-&5JD^+0@_iNMf4XFFMIR2eOZ{7R5P;9i19|Si0o4yExu5 ze0b}ci1#Y<5E~wJ$Z-uDGU9J!bdTLzY=^p!56w{V3_<5v>gESle`$z?*-OZ1HQgB` z$K1*K(zpyh)Fd-B8)g19ICF1V4G|^!xLKYxsGm4b9K3HqFeuKN<2rn*wdN`ayhr+NzLdr;PnoufCX|opT~>9_3c-cJ`|d z@nv*KA{34=D95BZ$52=VE(IPuq!`e62G3QgNnM-PS0}%$lc?ZJyluP^NiL~l)8&mD zuOdfns=l;3*`u$tNCsL7Ef&qoi>8L-8GB=}X&6vEP%FbB+)_5-l3F5fv^8vsZ|Z*a zK6S{7<7bi*o^voUl4{1i8gJQ%yU}RN*WKGcRK&6P%LTQS>1nsCR$C82q@p+a@dnwO z);Ao*E4<4q8$Q~zS&7&8CDEPqIwDbKWRCcXzWHf%=l1pteeAC-NH8dxCEi=tXZNGS zXzO)*X}|1`5Gmj6)>!t5sy$iXIQ3}HZb7zG+y9lJ>G1yxnFVWFu3_D3z#FIh+ju)_ z&fsf|-O|ljt%W_)B@au&&#I0tYB6OJaqoo5K))OOwU#lfx_&I2`2=VngTRa?NEN;( z_~^gd+?+F0-$@5v1;%84i616q_vct`OyI#6@^Y&1FK6*WUwdK7sbu~w&t$%tA2Kg} z)@2U5%smiTcpDy8=~E6Q^A;o#Wd1<{iB!pre&$ccsaie?pzgl@T6P~!72ZNld@6X+ z&08rdcBMJAhxVRvi64aqmA^5H2Cw~+l27wX{^}R{bnJNQ{Vh@w@AA3~1}8XU7@OMaqq7e>y{hOA#Vfa)|ZKYH!5_?ih6m8*`Nc(NQdRsHA#N z`AH|bB#3k+eM$wr-}y-cT@uJ%NzF={;U|@n6cJ-*1}T5=TXlh-_#=d=t4GXFiTWuD zc1Jz@5>HTxhx$pcx+K3I`zmQSKj}f2#GayhYzm{vk44ya$uuyWB#>3AX4!YP#J4H9ZIG0E}0>hbeaiV$^8khA( zs91F~{OqCj-I6}t4&hz=OiEccQ4P_s(Xq8(>qpzPjlQ9q%Ik`Pske2PtQ(~2HLlV_ zYP6$+KsqG|l2^^GE}K)ZyVZJ(=`3o{zRS>=xpT1?S>I(DS%@aDIT-HDIip0j;q{)$ z7o7btpu}+<^)RyM-fhpBIzt(syQau1RUw|yehErI2vzD82(}JbtcvH5_x(vcud+N- z$U_K<s}J?yd=mDaFZm;5|a^O4Zd@TIxb#Bz}GoUjHM#w->E5xd2t9>vq5^MQ?7V z7FV`jS48-s4XaX-G%me1tV=hu!7l9Il5TDPM*DGw@0a5@)G0Q^d*)&P(=B!ROgJ59 zIrri6J{Vtr5H+x2?C4+rDnXxHOGP7K7C4;)Xq#I)|XWh-8aJxuiCElXJnaGKQpCQy(7!iz8`Ps}ZrsFpxs3@)5b%yFD!G zb|WljDVjN@q@1gTMeYFP(^A{61K+P^d2R9<&=vj)U~;VX-us`eSo7-?cO2VNvKrTR z!`UiFcNZ@sxl}ZS_rOw78o|ci+PIR{)Db&>P0tZgdrS<41P3WyKo2krM?MC6K6(!k z4(klH%+@sX*Xjxi^@fagWc|6C%5mvGALm}p`y;RZSekp4NNRZzJK{q{R*TED)Jvb{ z-nNBcZx``444U%iFJxHAQkRV4=sO(pF06D}FAx$>75>ko6n{sD;=kraE7hv?XTM-g z2Uo2{h6hK7^x4|`T`xT6f2<~%w>})58Ekr-O!^x8&730+%F9&3`{G#l@z1H$^QXF+ zc@I1yJg`*VIf;TCKco6zYOzGS-Y;JwUFYIQ^wx0ytr&0V6}i%L>Y!#Gu+)1=#aSPG zN-eT|fFE^6iGH9D>a7~F3xJhIlJB6_Q>5mk9x(E8WO4({ECrh$%t-^E)uaXI{n@n} zH+QdkH=U|xgoC#(a*DB|I`CF}w#s?<{tC9g1i4C_&5(28Cp8Q_8cd9p3Q_M8>}d+)p|io*EKw)AcWN z{zlRz&)p(&3#J&NaA6^>hNzAuk_xal@3?G0-a_NaxTECChMj6Fu{UX)%l=tYxgxd` zjQDV{@i88soxvx?_ZD*pa-bOcBrD~t*??Q;*2%j%Dd*M4a1=@(a4kO|XLXra6|YhV z{?cJ+sc`WyTgmk5uZm#~Z6g!N>?`I@2d3=2+j+(NR}aP|RruLwT4N|74E!~Ycu%4q zQBL@ywREX87kUGhD#ARnH}OIseyvV8g?H%3*QuaS$~&;CGjqml1yY6k^<=|bcCp(= zcX0A4(4Ckf+G9G63Fay~cQzSy6O8_-6K6@TW1@t=#Jy3ZXvVoF0Fax15hx!YNP|A= zuM?258Hd*D&bGOtg^O+mPFB zQ$JB%slrD_(4-U785%$;j|c;k%bBC;+Z>50TuD?5^NWPW6oGo9{TZZ!oitw)U7{&O zRys6)Y@*?LI+>6m( zxJ##mB9(XvE7k|#_ZqJo2D-!M2o19W+bQ1KFNL^PsOFWnOKn#`yB~$Czv_iKCTiTb zCwa}*5xOX&XcF0$_ubzRljN+%`)=JmJAy|p%Il%;bl`m_rij&zp!I)cb?dt!7e~w) zP8q!zxb@8e@RzER=_H)AiKA+h6Bx5G^|cu6P1Gy(a6CuxpR@85OuN9?ck%g(A$znA zK-%V{3?$ew1`pd&YIt-jP#z~6Z0KZ$n!@O z6NhwYQQKdy{1Jl}TN1$DxL+d$92q zOJ{{H^=@@!#+(ZTqA3_~a7QS z_P^28{O{B<3-3N0^qCQu z{C%2`n*pwiGI*dbMe>gz>RNFV|ox5MI_vQ$iDw+I=>eA|6d$N**;)p6n z65hs&qNy`NHEDzu5Sp#tt{0O7N`~&0>iy}=m*weG%9+2x#-S?A`Za7Hvy)f-wrpGN z4NkUSWUIithLC`CG=hAiNy@b?kAde_*k_??h4y5#j>Tr+9cYyK=sVhK3Si1w#(8dA@&-mf>hyEgBkLNz&V+@T+25sv~V6bvxf_MU&E5|z}ZRO>*jJ+Mlh);7xSWC2R-!i?v$lRv#)jD z%$&Lok%V=Ao#I_Qt4$E>8hW5U#V-tZ?KI!x}b(WqO?N-yrm zV4`8wIMZM{LXE07isvB#;?GM(FAw!LOD;L;2M|Zz3=N&n%owAD)KRr31Z<(B`F+$a zhX?Y!H70I$$Y2&ln1Ws;vt4W4iGQkh6Jyu}h)+sn88(AKoQc*Njmb|U66VnfwfKpj zKam=pKY@25(P-kTQ3TFNM5d5soqJ;)3H6W{^5463(h_t=@-4j2+3ln7JS<_t(8s{-BnMR&k?bYh+O5xd}qWslX2Ru(Wl^L*;pb z_qGIK@t08^aWqyZyv|-sNHP%!Z6YTx*-s;o6^kBMMFP8*Og ztNU9WM|5<1DfNZ^#FtwUoWGw^^OtxnA6yMiZ`BwDy=x9=(;^?`@^Rw z*hxM+v*c-Q<>fu7C={{t~y7L{Pd` zL9u>giN9WDnVrY)y$+Pe@1wXvPwZkpZ)%muP+?ztbd=BwAaLPu2qJg>%EqwE;kmHG zbAul4i08C-{uTLb4$rk>z}|-lKkP7l8rV!%cuNW$hTGffcg`Sb6E^K`57XH$nGJjK zV7B;{bcB)wK9(Ct4C;+xJR$uo9?vRJoF7fhCHtzsz$}`W7n30s?c#lRk>xO8L7yxb5b?Y8=|m*tAC~Gx z_fMdIaW|=`JU*HElxPz1>{;&abYD2E&p~ki;59K%Fx5zvTmx4KUOnayh>*p_$4Wyc z8me-y(`=Uxb+*!2_rAkM(8bg^W37>)58mJ?SgIz$TpL=%x}CC*j@{F#a-_5-6-|#w z7Boi_tPpz}b>R4jA`s&Rs4=Md1;SmK2K?)P#bMaFRkP+L83l`hHV?Ex8QLkj!+wIL zO8)hMX5#DKLf?ixbyP(NNF`)s$?h(#CRnw`yPNdt)Rj<5tW9)JYpuv(-D|t_&vMP- zA^c+>N~Mw2(aPmeuc?xel;M3h-0ggtAX6Bz>eO%;r7J|wyg7pS&Ib(;9sVlsiVi=W z9C(>lNz$*66cQ`A2 zUgs5lXNMII0qT}I$0B$0Smx$c^l7rXo4=>MPIvPI>+`CN?&dQ8G5o*iZaNwic16?5 zDbx&p5t^Lvc6gQD7Un;jh4-6%?T8Z%MkN>Wt&H5f)xJN_pSi)tdAz0_r||)9U4=z zxfbNtq>5KWD@I!WC1447Gad3rD@WRX*4%;M>bRd}^ba228S(p$JLU)$$sy?Yopu8L zcFHz{Ip+2!9az7kX$gG84@>yv-{~Yq%*Ya->S8`mayd>*>G)`{PeWM1-HSL<%d{BLv{>~sKMM|-8tVr-ERW%W;54Od$ME4+_) zFl2wN=*}_TWSS_k-Q{$_fSFX_cZX!>>=-SuF&0%=C`9)OPMktwS;ev+dgmtY@In7+ z;)b;zO*g0meX`p7#W$Oc3VdFLC5PqkI$^Z`49pgxF)lly_^P)(+=1VV67sR59h|&%an6h zJr@Jm*2vu5+IFA{ZNKE=ul*=2Hx5_g33lLHhA?AdT}}-VmFLUqx$Lpj1QjcoTdyNy zOqX0ZRg~9Sqkg)pBCMMbrK%;PIuOxNd^y!7?K7#sV+?~>=@!23NWE+ExZv5tUl6{E zLESrbaxCeXsDTHYnBu9D(nmm@FSRqx8N9uPhJ%e=?ft+NrCMcy@%j;3_U5eFis$bv zt(z*`IdyoRH`jLtBGmrLUZ^J)Ha{^S&#N3unP?Uy3tRMfhc{Sp4f0Aou5^#1l7*x6xX?Y0Nfr*# z=t2$RqC~&(RfHIsqy;KJa2F@v(V{F#QJzA?r%?!ZZZ*$kL&IV8z-vNG$tA0J+DTd z+1xJOcjE;uu{dD}&J`xCt(T3#C;HJCkdc_P9gfn0Kfa*-2SOC?e0+xVHm}%|I*ZJ@ zS~q;*<-6S}@)CPKX^{M$+#;q)ZiVFd?U{M&blpQxfhI#j?7P{!?=3M&*D)!ss-Z%a zUc>G>45kVLYIu{hSc%Z)>V@afD3 z#TwrPk<@SuopR{)bV}(HngPRY2JDTBas1OR`R~WquHAW6;=GU(-}zY1=$)E$m)b;4 zY5Uv$c`{XaOp=Lt;6zHvaC!IObQRVdT!q7s=yM#k^|!AUn|Ds%AJfkbSgH;i7V@4U z0}~S^4eudtpBpwbsDyIw4|+3!`f{>xz%mfP)sNdeWrdaLafVAKb#FaR%oH=qyU3-C z@je*luaNbnnqhAik;lFp2J_&J1G)JEqp{I=6m?GY!-?gIuP-Ui5t1r4h%;NpVDcChfI#EM z!?+2)h;>FPO7bh-*8W1+Cgs}hB=tTy0&d;kVHa=zeQgNpg(`MsU#_>4 z1V4r-+BY)a96i1*-GOt8f1#-9$d9WYWL+{X$1uyMBPi8@{TzgN6ndbeK{gE8l1{dA zg6!12uvI*|bY$@AO%On@lgS@XR74 z!YjRF8Gy|Ezf^B?Qp1f`v?!yb@visCrACD|oucGUGs)-8WWAO+ti7A}*xuIT?vU8m zf6aP3)7SM#Q{LUu&$$IbE|)I(cA_GeVleZ3x(jP5*_tjn_X;@|ql2d^p`7)WDj9lH zF^rnQqyRtP=neukGVg2q4pOeL#t1(uIzm;!bCcm#9>2BXAt)`BE?IxMy}f_BWbBp2 zc|(c=u!L`2sFuk!(7@Ncb1;RV_v+2D1MYG%JgEOe><7?NhV4|SMXA=eJ!R(L?o|2Z zz{PEMu0W%H+qKA;hBDqG#Zr}UGm>15oWT2hGi#Z4AG9bhXw8{`Lc+u%WSfaG$ThcP z@!-dVAzMa{FBJe0d5foo5_QtDTR1$^{&)c*_-$< zM)bpqw2J^mcTB5M0XRB~zX!hG{-SsK0NJifG25-j%z5W#jse~tTX5&+CQFR1_{2)1 z?1%Hi2zxhbakYA%9nELcfx}(m!7lM{mblbgMfqCy|{ABaAVTeMHA_WGFXJ=tx);q;4zQEBvs8Cgh}e|FlOpjULW0C!WaM zJeS!&JC6BgQwl7(a6c7<>gO3Kl)m2+#ty{H*Hk~=j;6!z)(%v`mb;i)+l*_bT;$_6 zN0FdK>DfbrR;ZcAtL)0H!KS}kN$8DNoKPCPv8;rSN(b(9E`9FOj}aQIiSy1qNBeyS zXaC>ygn~`IRB~o@opHBV1lwItQeM&7B)NJTYBa^+VAJ=iVLI?B{0-3S2m0CG`cZi% zmwu7t3?5x-^+eLgj+yZ2C=wz!R2B3Jpo>&90cG92G^M)4@pb%EuLbcsIi zs0!krRxX%)Tr_oLouMW={eql9Cjo=l=opGt&tq5f(JoZQ3sF|H zSHSL^;4aoZ8x1Z(s6*zDxoG_H-1-tBohpgR8p8Qx3^vv2)l^}*EG^o5tB%%zFo6Fz zOY}R z*2s>0Q@cesAdpxb8QykwInj{C4|G=9(Ce20B{Eg9PtK46K#FF!GV#!4>Tf7g} zE1yL3U-!E2DP*)Ayd8}%>ek|QYkvrC-pCVwOt-JjtdUgVdDEd=e{oS}Q1Q!0mpq3s zBhL$w^*J*?6Un-pp4i+(nTEUqp6KpW0`w}nb=7@hf^l2!wbhXX(dyM#__XKqs%WN1 zwrle>F`E2)-@8<}VY%+UU242vUUHW2AES3Lo}ipa@cDywu1TE=fx6T?;d`NenAOaq zi|iwfu9Wx^u>FFWgLjq3M}$vJn=I9&pA(&LE1Vt?k`4)|oe?tQ`JVGEHc8o--jFw#N-^_Z9b$FNGXGN z^eGyFzySSNW7#Rz1OMq{gKyvmrjy_P%)TKV%I}~ME6(g2Y`Rbt;sD?G0?l;J-tsJs z&!U-j?&)h9%L1&u-d2JmqC4*;eDfIqH{C8MEPAIn}E5B)`wTs6CHabw_Q z5BHD&!PkD5X-pcL*MR&6k0kzBb;|eVHuI|!{1~79`7LlfjWj7DI}hu3tkrmhhT-J(Vn9#Xt)V!pBH*9- z8HI0y&tDeZq5X5ezfy(67sIDJ@VwkUavUXDBq(pyaCQ#qfeJBrOL!7K@FD~K?O`wb zW)>xEJBRQi)k&kk*vg9M_f?SIO`YDwOR|8d>E4DA;o&5DugkD(pl*DXI3q(GZt3^1 zCK$ao^dxm&$=Uh|RxOc08Gft~i?s{f8JO|U?76Zm894l9FgT96bq-W_#i>GkW7mf6 zqF%109hEJyKIre8%nh$rRcMj3(93iV9F2h~Wpj2%&+GlRI&zC13^e_P5lEH%xhqF# z#7J=P7GR?_r8Za{ox;sTZXlH^q7$g_CGe`E!Rk>H+I|Dsp*bYpR*p88IQUyT z{c!_V8r~NA+J+Zl@No}qO|K8{Qqa(yfv_$PJ{>NUX(tC$K*Fh?`cVyOT_Pt5&z0yk!q4@88(p&Mk|JV0My7#(w`rf(oUDI>l^CQ>J zes&k%qZg}8ZF6h587OPL-<_S;`h$2t(Kv0J@0&Y1=Zoj^RpHAhV%icHGQE&Zh9be2 zy35B;;~G8^Z|fO5l&4r9bKTUxHMXny|Cvu3fzGXO9gh6|SFo*Bp0-p$i&wqi*@&iE9ex)t_L;MtK{se#AzW4ljg z?)!L5{ugfl0+PY`Ul2wHg`I11K^uGfCU53+W7*KzGj=qW*uTM zdFTxCn!{1y%n8gKIypOwW4noTI^a}(I?bJ@t(ql2{;u=f8ICZ6e3?I;m#mvPHo5ZV zcCqsA=7&uFaU<9`U&SGx)mZKf7o}rboHXavX|Yn&C-9kfl?Jd5t1-Q*y==|zv-6wu zwsJrH7n$^zT)G=$O$w!SkX@?W_>fh1!{NbKbt>@9rH5O=3%zAS5o3L=I;8{8)!6Vq z&JX*S=3=VkmD>(7JA{T(YGCVY$jQqO&SRCF;eTA~Ga0z`DmJ|gR?BPam)G`1o3*uL zf7zHNm$Z%jBh+&`P~*Ng)V`NK;Jb6+6CUuHUEi^5)UL+6B`uJGozsIh( z*>#Rxud(apc0JdwqwG4=u1DJSK)aUObtk(PoUPJMKTFr&te1)vm2}U1HbQ z?7G~pE9|<`u5a1(9lNfw>w9+nz^)(Jb*)`LvFm4c{fAvWyMAfcuk89yyRNhAcXs{W zuIuf((XN~Ay2Y+P*){J>)xWD<3+&p>uHEgrlU;k*br-u9*>yL&7TdL#T}$n{r(Jv7 zbsxKi?7E*_r&+%pX!m7yJ=m^?*!3{GmfQ6RyB=xRqwPA#uE*MSuw9R{YuK(s?OJ8m z6YLtb>j=Bn+O?Z~eU#mwV%O8`db(Z5*!3*CjVxZ z!mbnTdbM3+cKxMYr`YuxyH2y~b#|R;*X!-tXxAI;I>)Ya?K;n{N1v{dDzodJcI{!; zpGFJ5&aR)>^)0);YS(A&`hZ>UuooUyr?RueIPq%B-uE*N-5WDVU*CM+vuU&%pv(~1=_ZkKx{o(Ql?8rB1~AaS^pgl&c%z;~;v@nS04)j}2Si_8 z6d1&vh{{EQq5j>o-PN?qnklgGSiQNZpo{jH96VY0$)^yfiQ0lt1_&>?@a+tc7rVfx z_VVCa(5^v-*Rol)5hVZsLnkdE;t?;B2H9iqXE81P~ zO%KnbR4xcQk40s!l3~A+w^5Gwq58}pjOnUWhruXxl^n01MBv?ds^kk?T_vC4PL+h) z6V3Z&QIy|Nc@5nW_C$dic$Z)9MA1k@sgpiJOp!$3H@w%eIrDj@IgD{}7inqh<#xRn zA~#pPSHbV3{RD%u4W(P8E>?0nFPg3?+G5SoM8T4FctnNad349|TeAZwy2AI=om`zR zxr8MdP5x~oA8}DllCN`8O_$UN&L|!s%M`R2T&Nwwo=EMQu0(@=G-}rB{4&m)K4jwi_BQ`$5;X2fTlAAR&l~ z%@o<4iXPGVLn=bInvW8?0`k1$GcuH3Z1)Z z4$CzBOqckOUM%Un*iO$$cgWj`Biy1u9w1E>?`*OX$mL?M*Uswy!n67DR+7{E6^j?Z z@A&ar1h~flC6}-%06&W#?*%lXV1pdwt%W?Nm=Keo!lfUq^xu%aDDZ36l$L$?i1gg0 z-kq>x!;L6upU9f_E>oc#Z3spK6Q2{=C)O5xWhVC$Gi!J11MA<&I4twhZ>9rbitBKk zx8pI|vQhfZf(K^%%3N`U!gIe(272(0B&Rc^o;-@_AK1(q^1h~8;kg^>sX_4}-vH^F z>84NB;?1-wvG*$FL{XBQuX}5#-oTaNxy!vxR#9J0>YoO}s)Ht-lab&}AzUi2B!u-j z{R|tlFy0*Pgxj>TAy`ooqwEtrvqHuNYJ(3PXsP>5@YkEX0-?)0`2)w_18J%3+jd+n|?H^+aB5xw9BT7H{M>H>d zw(hLFyzv!X8vYff^k{y|tU;ryVS<15+|Eqv@fFe1;4OOLqG+<+V}8=@yx1i zX6{jB!4b{vJ9y9W@Tfa)>U$ul2)L#Zgyzc2mPN;aw)E0&-ihvE2d{>k_OCj;?;Qig zJA#W3)cbCnJIx{IJjHCVyeB~`%=z8pKX!qn;u!rpSjYUxYYwrJuvKK^8nwO2)b=$K zK2t~GCmP0Kt#IvJc3llWb=EW*sF36JJM&>+_rx?cN?CfALS;TTpi!kB{=)fl;3J0m^N-bJ9AlCpJELcB-F)7+FhRbuwd;QQbZA~W^xcR*H`2MYrcBy%@wRYfw z+C=qQ{(He9`&|bcux?#&*T9DfHu#^V?OOOY@JyaJ?0(n6)%>b^jRAAcLX*3B^O%`* zt>zLoP%Zux4t!X%Io&WVIxbK&0*+OxWEsz_i=tT-Hlr_i*3IZhX~P+{{TBqEi4;du zCzs-xk6T+nwW%IUAXoa!$@sAl1G32UMWIa zuE92}LM=|y*49$UpI0I5n2<62?TA0EIrO*vwKWGKs&(bUhAXi>Elrn<7{T_hSh|Vo zqIAjkBiUw}qlfFhxz_Gebs_gWM$grd1a(ExmbIb(N8FnL##NR5|C1&ufiz5j27(j_ zq)4zV(Lo6mFw>@R2PPOX`NM)g+R{8c(3cf=XwPMvzIW{}Pvi)hF4 z(#yHc!_31EOW&+0%RFn$p~Be|6~BCqp6NQ`a{lnFdC*+)j{CmfCV zj+^^s>18X9>N=uHFHo6{?CmsnHR?d-%N%qeSMy_ymO zt2{Z>DtkBBU3;jYSyHjyjBZG`RGvDi6VW@#vhG=I-;%^i_2@H<$~Q5lg-|r zU)42tD<_1m_1VB?Y%uOMR!-ylZu|%7k{L}GU;Wt)9b>wt*Oqncj|;4K#)em~corAP z=c6;WMVh};(vCuAIb;q*0)$u-`U44q{Qi56pla{`Hh%{957OgpHJ4E4a=r(;bj@e^ z=AWx>?4Yaaa6X%hcP%bEV&eyM(Uw&C=C0!+r}T|1iL^JIGG*k5Nc&-@ zOw*rtmEXJVHT2)QFB}vAllmWh7yZ%vt1EfEgf}1I%}L#B+YiKN8QrM9icX1KtGi{~ z{XTc+0)&y&c^fFqGcDuSUprPsqBrmY@U> zzJ67Ep2l9fYE7%=V$F-lG2Y?_8T5nOxg%a>rsR%z#Ev)Fakd@5ZpT~f_$@oGx8rSg zyxor9x8oc;u1zSP*8&}1M5gAB$k_Swc7CVb{gxdAW)blXcK1HJ`x86fYR8N0nXz{K zyd5)keXYIKZdY!w^IPqBqaClc^EOtzAFc&KFqDSK4v99skRYqwV>#?3p^3 zj~!h*eA2GZvEv1Hyu^-|+0nOymGeG3{=|;!EzhNPe8i3)v2S(S-IMIfC3e2(G}Wuk z&ga>Ax7|I}&ZpV=d+hwPiZp4mXx8uL<`b~E3@^{y}?fR8gDp$_i?3s3Jz0>U2WXJc|ah4tbY{y1B zo@B?5+wqfjoMy)_+R;5Y{&Q6ajYFbZ^y}YJj0GB+woXC)^WU-U%(muPwWxD8nGneGf+OieS0KQ z-7$ijp`Lp118DApxXRLVkXH&q!KsS-FTOF?b-S*lx^yGAHkY`Or1A+)S>mVK!%Sd8d`fNRVHr}Bbgr(2*J-01VL&KI)JDVZj$56_8T>XY^NWeac13Y<(9e{=6rQy zGW7v{C3Ev4Vw+rT-et8po}&uRU8@nB`l3iZ0Gk_X12247PVVKp23%6?}odtymxPFFp5|2Q<$OoqL*ykf^Z*zxxVi#IsC z&-7faDthuFX}r_g0`@p#ud^vZ*OWHCGi9<4QzDr&W`^M<{DcGJkRSZH<1eg{8NV>v z{dJ97OlKcgFe7oQw^62(ZnQPAGe6Hg*`H;NT9uh;SFah9`Pxqu`ly9&2|Yc^KOHD1 zySxaQmU$)RGI_7NtXuT8%ru_i>F;y0S=4!70AnJrH z1Iga$jNzIeTK!gLHjh-?(^l)xQ!LwJ0m1KH>l*u!e@e}4n=DKY*9?IWhD-}Kpf z_S$wgPY&1J@QoFjDR%Li+RUea9JbSm>gi|b1;VF1dHx|1HnT<@!?l`E*P*t_#H!32*Ku9jOW7`8 z;r3GL;)N9Gip}S^4f)&>HHve7b)4U}==$O)*-xEQ0Q-4w%};3=hJWyLHg)>$O|R#& z+G4%yixrV}q(aSu+#TFNpiUWqI;V8#(zCj>f=v!-o>#H>2IC+5N=?vpT^-w?9IF05 z@soAY-WnSnr`1vX>3am@*9Xzo^+9j9-#ZUk3@u0Tx96Y=~Goot)zwkl`nFcZ#ggoP+WMt$(bjuG%{V{g+tyKc+&wOmeU#shp^wjl5jSc(M4;jm{Odrbf0@26 z|IH$7A+d#+Uuf)2=E%*}d{dKJE5uI5v>*FZdh3Y?-}cG(64tqx=IcFk#6bC1Nz!is z$mKk%#T30YznZJhF3$WaQ=x})HD`s{e1elq%YuEy{P$p@ZkoR@d!`*iy-qy%J2Q@p zw3lbDznbd$x2Q7p+{*eiH&qeGEs(Dm1in6EPHbbH)igWhY$ z)xNom|iPsY3czBNe*;pRwLGQFmKzc{NHS}$%Z+p?Y?B-an))vrlh zJpYXJ=xV_X`cP1MX2s@sX|#P*^!|7$zmXfmOX!ic?kGG{=Xvseb+z1 z(a~d*n&+*tKP7Q1)+WcTZjDZO?9ya<%n>-k_X*dus!x*kH^Ppujo10Jc3f@8+w3^@WL^Iy?Sh_2r{#-gCx!Cm zHVnNJ48$j^cbrFI`En{;61{&P>~s~dTT&x9t#+rSoYuP2GBf1a1Ld4HxT||a?@x>* z$*cYRX$<)JrJi|ML|yKU`wR5q2yserF~{u?O5AN~07d(H}~oKa@a! z__F@&QT+Pyf%wtI)eGxK8LjZ8lz4;^{nS#WRq>qn#ufa3rF=ytLVLFLKVh=~{QTBf zDsBM{T-1G*Ht>&C4yg(JJ)^ehb>hcB+5WZX|nJ+6mPC315#y{8F zmrlfPolM^?%U?2`>a%O-`X1ZCt~EAk zT5D_(e^6t)?WZRd{|p%ES15xu^Mcr##G1Zj%-su8{ziJ1dzP|N7-FU=bNr!nXQVUv zUSEjxYF(Y0q{?K&`XVc0Y;}fEHDm($@J<(e?LE7x3aZz zO%Ox5xW^i?HMTlQLs)&%k5krTg4iD^>nVupWIfe>x;6HRrq!x(oECi(ouN<0Mq_NmD87 zfqc3`+YI;5L!(&IS~;k$s$U#zS<@QhCq~z{#xnX^9caOKl5|>~Dq6oj8N;*uQlfIB zWPT9DHu0kYiP+5=Xszi5t+6dz>iID zPR6E83u4o!2eGNu$=JP`Ly7)@6IAj31xF@RuD|47=^r>Mk$x)Czi32Izdq<+$g0~_ ziAtL7=^(b)RGu}O&CI*UlJ!izbH~;(0D_qBll1mv>{^B&1T#hjmfTNh4iO)5XI zZ4}RA?)2@gyH=#RY0Argoxz%gLF`2a9wYSeK;Pd)SDlh%j5A}}7~M6=*b9mNg;1KM zLFFtbD`GhL7VBppX<=G#dID%f0GJ%%6E+OOX~l?a1~Zd~;c%f5?DuVx?z5{C3pLg>$+>T{Op{;IjsmJ7kyQK?E&Hz~V~c2p1Cz18Xim1KnI&9h z{YskKs-jN*va zC#NLpneeU@Nz!!^{S={rT1fOUpw>&;I@yRUnST&p8Y?-gONst@duhHju>D+6A3pY2 zf(ghI!l6XvlR@lu_i*|TNXSIxnnVoY@`q&oxyVEw>$KX89*aPd2ymZTm#oBF*BV3S z%{x^RF^~&78QUPisz+3-S_X=yTtJ)>v*fiP_6l`l;TTp7VmcDB7lZyqN7+PN$P7d% z^9~X@V1oi$YekYR)?@csIg|A(TVt>AJzY>YCS%Nrl}y$o4>vI2g7hmvQu zFp@sAZ3$+Lox>{zetik10aH?=5ZzW1vXfI`O)VgqtS`e22suiEi~Mc2Iq18Tfv53k zL5+emt0xnb0nx&a6Ml?`K*;1tAV8_-nm#a+EnbTc++9IQ5dZF@}o_Hjs z64~@);xHs{@#CHMqyf-M4N1VNLF-VN*a#a9TVyUZL-#h>OZY64lc7?_BjbP~I%@CM z%Etho*4Q7CjGgJir!8v%k=EE_PN?g0n_&#^IjLVj7kb1`Jm#ry3j1MJ&{YT=Gx|GO zn24yA;9}JGjaJc`FhttaW|DCY^A^&!|CmIjfZ&t_W7u$nVOhUE5qp9uq6=tsPX=2a z3wTPSTqvi@j1az0mCK+UU|}+Sr?n4O74@c#Phd4)SQ^DmphOx$`El`HB(plaQPnVU zWMC+G%_J)a1&fqRm)FX7*2n23Y`bFJvoQ-q0qr-Ya&Sm4RYt{SFQjuCtdH^D$5wZUQi>wq2@2xd|u z(2syWLq8|!wE58%lvHV&mGd=eDIOxbPa?pEr4Z3+K^_#5^*aH@T0l|nP8Blpu3Cu^ z!nj46>Sk7-yZa5A)xJudXOQG^l!914bc zJ`nUXRfLMdWCKOz5DO7eRWl6ams$THSrH6@!#W^P(%A3^dq-?_9?h zPc_m;2_L}aF@kVD{5>c-CD zP&g<&3_r|Fv&n**>DtPJp=kmR3{7|;%9*81Ez`=NjD3kmMs)HS8}D?dW*+!~1g?j< z2`ia+63AR<@`0r~H0gkC$WNRd@X(OZV6S^@CwV)3+zB)WYu-K(5)da2@@6;~ikqQO z=+z#0&Rau6T0Yp`jsTd0!Aw7>EW5E{YN| zP+-zPhG^k3(9e)jzs@XL=wSNxJoGtC)EG4cWI%ZMvysL$lV~vl3>S20*G373pj>~{ zP;MSr|AcB?ZDf(3>XQ%wCT!Y6CqZ13PAm?HUBW1>+~mP^qmU3lG?Wt*Qd0EBMj@Od zjsi#FB=Bb7S#Qc1it_@KgkgWtfC}rZ1ndNdh%#v`f0k5GA%H`}Gw?;Q7!pOnqEn|gotzIzq6fz^h$Gl|rxysgk%%Tt#{LQ!Eay$9D#dk|bWSbqw*%fiW@TrM)_7LgwW3;Utl35FSr|G<@rZm>}s7 zkM@ovS_^6QN)bu)ny(0;llOU^h(>2T5hfn;M4{$To`@_gAfm=73I}_C7#t!(cHoOm z#c=34aR^b|4IdFwe)MWhpHNXKXe2Qthyp`1mkJNjtMrLHB?KCc3SvDDjR;^Q z{L{b?q6Zk}X`!1Z&bDO)y3OdJkc=tpan2!{?5BXFw&zK?QkoR$k9rPjQ-F4gVQK*^ zDL8Wn&|W4Wq)iV343TOf9t!e|8an2#Ny6HtHh+1Taq^DacGYNEBZbk^*T! zC-W0>s3G3qfiYx;>E{4TVPc4sv46;_T1@j63nbNgVvi`Q=<66%uNCt%_K3p1z=)kO zL1U4!0Q!08&@*IJunkWy!Btr?(VoG(BA9fPQ%LEiZo3Q%a77tB3m7?^E*)}#2rt+PS8Q?yRN-8RyQ<@Q~7Alv;>47%;?$DtZWe zlsY1(MtVh_DAr?y5P<~n%)5mRwOs_T1zZ&WaK_Q;LOCH~C|rbiH0d0g)YC}t7Xyov{zfH1Gm0yS z9EOcDk;yF^)Q^B;%+JB1b3PFgCmC z6`-TgjV^36{utt{r-eo(A%A&;sn8GHM1oOV?4}aG(8|2gw1A0=n1oLn5K`F5R78|d zfC#Vj@CP;mmf&F?1i?cosbYnmyg3|u#JLM(1%AX$c@LDkH=$0=1DR)pyE37o{tDv2 zO@!})ka`+a8ug%0X-nWT^yq9A+|dOP%Mkl^0KQwiaN4TzU?$pO)>6-&{Ak&&!L(D; z65QK~!PGep4K!6t$X4h)Y#2re4N$_dNtZW=&co1P8X{J{z=()itfU3*w@Q*89hTq; z-xSVHDnBZ4=W2;lQ&!cdg~QHl_*U(wk`E3p4IM-KsdGMhvWNk}+| z5SyK2j0I{q#Em$IvUzGa1plVIH8&!v{we^Teu@rrC>mxv6G#ya;Gh2$6=8;YC4 z%SPyzET-DT@Z)moi8+o-5SJWNfF9~Q#%)E`sCS60`J)(OLlHw<*NWYmh#D@#y0F_{ zYi>mJPZftMtd_*@9~h0)*F$*WWRHd_hEp17@y#QbA}u0^3b9LOI~8FhR6=h4Qz)5! z7pS#zmC+az;%vX@lzw1GwxEJLPUWJ4jG$M=;Skvh2BLUVEh1>K10tKSGSbK@>D7p0 zTd5I!^-U}CiDJ%C@A21!k{L~L9Kta$ng*5I&1fnQqC>z$Y^z5=bU&<*kJup4@0bEE zsMP!b%u_P2n112hiNG2SB~3xDFN`>DWV9+!zzqfoN_v~IxWd#fT4fi8Q)=IqWMe<7 zUAa~K4jXCZl0^MRLTQq*?Ix5FAJ|5djLSZ1CO()qrV!sCF4-&`*2D=_4CEtpa^477 zA@gtHso30Y{<(f&;vLnRemPkWfxO2z*DJ&&B`TLCsCcEjCLcFm3TC=Ki%TLA`=@XW zwb~rEZCb`c8qJaj6xRj;CN)kw^#XGo%W0yX_yT!sR2f1Zv@tL*H7ULs&kQCThQ}=L za>Ov?Om%9tT4KcXm(j?Ob&p6RVA47;FjL|3#2T7i(NIJwt(lL+l$j6(vqFIp*diOu z*?>;DhUgMJ)NmoFu@quIxY2VG3ZPktr*RRkK_;4}orgFMO zxww}uBCcB`Ot79TL@KC3`uk4R9psJgLb=H2jSzMC93;a=(S|WuXZJ|`LO4RzkRxH3N{cP|pzLjx(V(;V@2B&*0 zkSxKfelDVLNGd^V3E6;Sr6$!Pby`zII8vIa{zIur4T>kLM;y7lCpDr`@DxpeV&U6O z_H3BP0y3d*@H<~S7KbYNJ5UoXNlj{&6A*pC67Yh)1ZCw->QcXs`&c!JSX$JYI&Yc^ zR+p$(Rn=Ajcc*B^=_7qAUNu*y`Yh<0)THTz&QfIQt~5`o$F=H0jMcnBTGB>RUkVa= z(zLCWPWmUY{ik{~*U7In)hozS!8`5Bl2)P*@VHP^#!ISa4p-TMQ=hW$IE954##FBF z82YJknK(?NrCgHKB;P*0Ib*?k{^Wmd&DITsLA64rw-Zkr{HKAm`GDMfJZ;1OfAO@k z&-nrPzYt72-Ds}he`px(bQzc=t{e-IJtZ8Y`7m1K*RI286J4A5$t>alz+6FRaU89| zUp|hONlokp&J&B#6u;AZ)p>+xsx!Oi(B0B`kjykL!xxj;|4l4yu3-Ci96SfclL3{CAv3O4F*9vxrhtd*9Yw*j` zD%m5@QsD*v8^N@W^8)GOx}Z7b0T!1erQ5PCm32^eK8P0KxI+*vKfg{O?VASC;>QLC zMkMN=k`A!*Alj)i_tsVRbv2oQ!#G+bqcPxSA4dyIN86AkdlzxEO>Z}j*0b2R7DJ0bR&Y*UuUi^aI`u=d z#iS`p3Uk)H12Z;V->Fe37*< z1?0^efCZdxo|~~(kbpuee4DQ@B4TGPq$r%)il;^Yszrn1Q7cziQvGI9ion(XI9& zw0zEpE)%850BpfPE`(O2(udHx>Pb6YCOV7MaO$-;1K0UU*vT6j;u@GqWT0L)6PgO?j@TdXy7iMmQlP|dSp}LksI}WNVUvV3>x(PYt<3vAC<6SKB4Oo zFFM>sDs${kV`$OHh6WBv%0g+q8MxL$WLAgl@?42uKZTupR1M)R!H5?|k;TwX6&8Bm zXuzk<5{zPLzEO1U&^HS946y{;+T5YOQ5Y{`!$dzDN)7Xkj)BzEFw*>Jb`vr*0Z@IX zwc&08YD0tZ?M{M7uN4S7Zk>747+O_ZfF#!EvH%+MK2y)zZ&lk!pS;I7u{f{@u`>^A zz?sF^4Hxs1-Z{3Ds}N;5JfLYljMnOf@(oX(9y(De>=2&(=3%s;s63yd?(&Q>sb$56hq4}EQ+CpMhuOiW%}LcxeFSLl3n6D|AIF!Z1@pu-GY(NQ zLB2wR3IVhhTAP%^{b^rz#P6<6z|25%mI8r%ihv>f7~<)nWg-ltC5|)^RFi)7z0A;D2hPx|UwZ?^+gk|tO(w2sBSK?oOQ{EuR?lrRm`>fMpNUi!}NJwp` znn?>v+LirF`3PDT=;b|M29EIcB?JR0$Osb$Yb-$z4Idy=wjwI7IjbQG57tCe&zd7f zqPJRL$p>8ctkTTB<|NiEodh~m>>3GW?}d*MZs8-5b`d4iILy+^hXI?R5GV=aql6p; zn)$8RA-W?55+=loO@Q1Fkzr8CM(C%>$Kk=VZc1s_?O`w| zYB(fPNETrbp4s7Cp@>#tplBf_)7OS$AkFJA(6CPhKztxViDNTB!`zQQQKKXrmI5}+ z*RsE9suJjfB~t;01kctl!^BT}0$}Xbcr~N2 zg~mLo@F9!-0p@(@56BO$0g4tnO9ZX+Yob^^9#o#ow6NtMOi5xE?(~Yqf)LaMi_RI` zCQw6nq6}LcN`}BC078V@e4D0VTOYFnZiXz<2iwk}u!f%?mSLhCo8o^gy#$8!7b}NB z$5c-|X*ryxCVp5`!mtaMof!N*VybG0dsv}gELuboO2(}PTZ&&KnFlT87_&;j9mqWI zKMk=8FfuH3kwV`4C>XRQmGj2U@@(CVF&MC2%lh^tv}SiH<~C_{9Jc&_aA&MNE?@myP8 zsd+8Ipm3p~iz~qjLY9dW!UI}S#0=3l#SD!!`qhV;13T&vSZKhfkT3}@X6{0d7SJ5hv+LP||hvBP>+_pg^J5JHhA zZkvuVQz`n_Fpk*C8zC@;9MRdcm>R=qqRd^eMBEm;A&C{k18AE=k_d$u&Jppb6+@!B zcNj0+9V*`LI#*LzOGq*zh&#Zd;7ICg#$a)lQ+^E=X&=X(fjRL%d4IfT2*5Oy63a7A zXj&K2(XGD>?Ffd+d2sZgX>9Qlu|YhmhI&_stq9@5xLWYjP;)+-@Do047Vs3H0-%oN zF|FM)%g|l}P8vCs5x^mx9IeLsU|}wT7Nm7Na-(3>1yh`k&XbE04z4vWI z(e9~I8$c?GmW3r+41!XdUs#gIU_($BPb5R67MQ3Q(xpNuR-#U1QOwcEB8IoTA=RQP zEP}Rq7i&qpFIkmP%jXx8Xv{KTCBS74EdU?7ZfH@3HA*GZT98pJm0%-~`TKf`*vWg8 zO3fw2^SB5tFplVCHG?G7ELd-3OIPsR%1gtfV~FLMA`=;s$cSyya8=fReMys{C$eZ2 zASrSOjt*syXx~NjQ3W?C@BFe3Bc-5gd5O{eqO~QYJx8o?6w_9f)OxaL(!`@9+dmm; z+znYon>KGfbW7T+=YHaRy3k-OQght_$}TA6WQ(SiCNGNBv{nA!#GQ=kn6!a!PS zSb|LPMi!gwWIF;aCh@wcSy}y@hcAjZ4qtg0#@z`UJzwlIz6kakR{9Vzh3zur3@*(G zziVWa;?J{;2*((k-wIh26#oZIQ3|bO34@((gzmmIrg$R*PWWd+y9g7*jR!ngR0M_~ z&~}{JmEBaWC_F_ppz{V($q?g->=QuI+l*Fvgf(PT42P(rMb8@Sc?cB4 z^wY2?c2>|xr00yu#^gxMd%^VUAg3`ny!b8zotil@qaAli#QBL zWwpbAmbhqpAfji*P>G&hSSlW=9eCW91Gcb4C6WbzlW#9}Ann^QzL5JeHGB53HDBnW9V z(P-aJc%nfd*cW?IQyIZ!meY_d<~QPTW>Q$<5F4o*+{}w`7oNu5utf7A8j^YkqH#T7 z&n%$E6U|o`VxWauI(ZfbX#;~Ak{aLQcT{W$F?8NU8}-_Yz>nQE3*(QVDs~RriKjpi zLC^mL4JAw7uHAHZ`|lJ8;+w-@s94(SN-Vl&Sf67f-2!IKgSbmD#CIrJTVylU2ApOv z4UwX-6_00#utQDHfR~DQGCTTeAYT|}DjFqCseZo|-u8WKoZPNjhlbq*GGAIQ(ECxmFWVV&$wL-9=bC!z|T zIUl5eRHjr1wjtG&CDrlBw{1RU%!PObbfHqnrsf$On=us3s3GS}uOCj^#4Z6aldaCL zs1`Njs)!U+(+As_W%YQJ3A~ctnz{xHL*Bs%*OOyW3ME_NDUON1(}7f@QJ7Z!jD;3C zKn>aD)*bK?nDLwPFx(tcnr-xGZ9d10Zw?hJ`42(MJRTB3JKTKAmN$Y(IhaHWF_}UW z!6sXMDLDl=0jinFIqv_GSjt;RI3GF?6$m(7K8>(Kw>Ed-SU;hnPwW zNNDqH2x0W3Q1Z`U(CIZrq;ROQRICme5`-`)>*$*!p(Ex7hVuUH+GGkNL{)baSB;_J zGt6p=2C-hs1EZoSu7psp7pYHDTLVA$mM88AAyGfS!aluB5!gQe5~Mz{lySv$Rs z>VVLZy!)JQXt$fuDVTrLq9q~uBL8_5MP4>E7m`mRwDV*|u0)x(!P#i@w z)JU4Q0Gfr=+f(My81Tk`F@T80h33Ito6#6IWX3B%Q<8kN;o?rHAkx5XEIV5CNU-?rm{Ga~m?$9XFIIPfClCy0Ew&_J+9)WhvDrbo2Iw8=A3{u>ss* zF2pFR0IRhjOH}I!YP330!PR|5tN*R7Ofs2=5aB6bD%(SXgn6Ot7-F~?U5NWy>A_rN z@nr~Fw);RI&F-zF#jH?FP};lj3|pxJV1P!MMk%%Ip|f}peKFaEjZT- z{twt-==2jC^blGca9Y1v6w^r&oFn&nUdHMW2%k#AUyMO!L2L^hiyqg+0+U#MXxlk_ z&!Z*#v4WPHLa!kmTavCrjiz}j2>bzivYPUoB%^^PAM8`MSW;QNHbo>8@RH|i^iRt=(Al-$&RT`88hw10ac53OrWXTpiUujZ^^AOSQccZ7it`)e=`PHqm}3gt zwW=HnJeoEP5vRP9VAI zu{UNgUC7+UYTphB*AELcg(vPFAYE9^a6jVCqf9*?^sdBEa2Yr{N0A|+l+{jabMe9* zVrq856N^aV|293enJeLD>#>N1#^}qUDD6@1c4fuMx7xx_-IlC{JzpV*p;Z+K*junS zxfmYbiM@13qUhpG-;v2Q&k{pyB*bgCz!(&arD0fHo&xTQC>9X1k8Y*mw7USn$hkdYCqXoX<^Ygz$G>KF+oX&0hPw@!l_b3;h=n>n^5!(K@pncS*=v9cP^+`)w?`3jB3m}(4a z$6a_Bg}cB8C)7LiYRGA1VfV083+KX^YX$7ja?H<7)ik^LgVSYeJ$dqu>U~8xyVO$^d>6& zM#V7F=f(*l+Qijl!??np<=#o?MkNt9xIWFMiqP})5Q@1o8>#^t-A^Hh8&JK`)ZBt< z8r1cTpqp4^9som&YG6R(kyVDzdz>JkM?#yb7^2`4w&Ma*MGiqSVVGeVFjf?uN*;MW z7&x7P*TS$!x)(YDvQ0+C!wFxL9bwTCowdH;Dk(Z z_=*c3IHg4wJMcw*ea2!^W_o7>~on}3W)Df8|r=EjB8 zI3aAtQ-(r;J-X2`1TYKXH7@SdSyAWkHE%^_7!8d%W!1wlLn=%CEG9E-gyLWuaXJ?P zLxt4XF0^I{LVBNKCwC1UkpMozrcal4q+e`r){Ie=Y=uR|f z#Dc1x2sdseE6U^;BgGsZdCHoMU53{T2|h)@_=pw_Ztc4v?;*Rkh6*bIr>aClxJ8{T z#i(pWJGRm;CxpI1J!oq%B)BwVVeaH7ElZlI{EoIV!=a})v(m`00|RSlYh5mWh>exl(oQSB;Lk#GP%ROuion6HYVhg(kIvp;*oj`n{G!BF*}0>oUwQD4~I& zwN1-1FtiGDF=-is3LnGmUhyU>C{@9xwuQNn5=>JWWok9MslldMTnVRf~ZFA_-Vz**jUTH(lBasRW zvH*y*mPbQ|Qc=+9&U}iRn}&wQhv$s+1} zhmY|#xz4cw-5vT6si>gq}fl0 zGeuJ(hAzbj-i}kzET>*WDGoE;IaAcvRK|)O{ED62G2^Lj4!4|!RBbp(w5U>H;({X` z_?-!1|DqrCFz2Fe zSd)i9jn1itn{qIEo2mmtsg;a?)kSOb6@u!iR{;@aJ*6NR>I$w!o5gOOVzWiqNZ>#% zLxl6-=eeUZrwS~6bc|MFu&@)Cqg!yH*iivsej$Z<5CE3JDPa!ZFqMW+D~SgevYD_gD@u(DR5_>@sw#pqM+vw|GjW-+p{#tdkj@%rUd3 z81gByCUiW4w{kcVShGa{=-rKGFx7%b;9Kfy$Se!Ave-^Kj3Y`q>%#_pAqy-HI`!yg zp`6%a{8-sd=qZd)8NvvO?Qt}a74i5D<;d9CZ$IWSaHqD^-4etC9->c%?nMnJWSW0* zS4LHTJ0DdOnpTUpu)#4XxPtZxSPcdNPjptifO1%(>~>O5{V*1GQ~Z#XhDp$n#hQEg zee*G=0#YAsqc~Njm3)O_gU);^1Pnn`Meifu(ErHTdxznt%EdFr-K|b6*iUcqT+#gq zWbIBuPeb-z_z_6vm;zD#7B=z%PSr0#*2;cOEH{{sjXYZ z4_yS&2nm&Hwro{?FoAZdhQs!36?fF{@K#INtG6YJ4Sv(sX6@LT{#Ph%fJ<$}$jm?k zyT`lhi#Ba-GBdty+S=f~jC{_mR@}Ll(QB>V%V-b?h4j?Wk;v8<)6wwpZ_-Yst!qY3 zduu!~vBPGq@}BTZE|Qg@=~OZkr4QBEt>N&_SN)0 z4Q8y&6XC9}iL^xxn|*{p&aiM=m+GgW+Yq)>eP`xUY^e;kN&?h({fmzbG~q@%o2*Ah z``v1^ljl|eAO)Rfc2hQ;xzCRZTk~ZK9v~<8pn%dq+ctPLeY~)RtKYg6++_*=6)0fX zQ>TQHH`c|{A|<84sH*!Z}nN<3dMFYwas-fDZrZiM@=hvxFu`j-=xP*m(GJn+1BZS7N$ z5EJav3e8agwQH->Nf^$IY)$hR3?Z~**>0`sEZePBW5jLO$_VI_1-a3-ZAC+7^Eka7 z?6_U4KC1l!;YSn~0gOk88QCO}W6S1?w`_If3*qE_>soa)3R< z3Ek4Btzf3x?^OdvlLKw#6nz~s{E~tKkdke-g)8a>S8ab+ZKQ?8FyHqh#jR7azIgMW zK4ROh?ri&3Mzc0w#k}TGk+0Rt%E6d#j8lRKh&gm2A-v?%paU4~zvN z0?MHNR(Ee@168+sYi&Y%&RVlI^Y)Y>ySG+w1(n`5fVG-TFW$YiwQ?!DrgqY{Y|YAz zqCHuy;VZGfQBB{@!?t#niPY`piWaS0wTbL*Hg47SuJvqL^dIissy$rimQm#S;cl+W zLGpM*kYk|48|-Q>(NuKT?pGII2nOQSIsQw}>)%>2Gk)OA55KErX8fR*nTav>*t|%j zkU3|uzT&r+FMqT9L9RS|ZbKyKE&m&T2Fh2TeIx}g6q)-=-2HiW|6cAB&5*BBkV-Js z_RN1YNS7qjarzQvsF@iwfxB`3oxwl;zfb-_UuvEY(jVpyTGBqW3TM1BpikI0icakf zJdm72I6(^t?bJU#K-PaGkNMj zyy2%`+jhx7{OCJB^y;Gn@oUEv^{?gk>1X%+uN1|y?0SCr>4(Ygs+X@kne0w_t0ZD{>`N7 zg1Kts_5VB$=OVLxuG;$3?~XA9wHThT1xbG%XO~G8XeATg|{zR%dn5zyrIQXB_ zNd;hFibk>aDwHXhTe0Mkm(?MzJk9y?jQ{D3)S ztde;Vz5l}_xK>KKavllYv~wM}&wQ#5azS3`F-+Pd-@+P_o=lY@{GC#K-HVIm$fL_| zKT`7QBL0wHuKawLK08b&TzW#7KGCJ$7pAv;$mHEi{IU15F8#MK{e(-ewRE~ay{132 zcWHnB^9S~4N0rX&>aQv-n*S6eaqIzwL1U((j|N@;tV_pR@cN`b++Nz3icik5YAHT7 zmb)x3dY~-kQW&2SkF>CD8|3mX1hu*>HWJ zY-y_NK5pw`S*puMEvF+>U3coG)WcFkQxA9B@pe0oIv^4m=$ga%2>uOp&GcufFJVwX z=M1_Q)Ll5Ak~Fly%ITJPf3{-M%u$h?t}sq?Y367p!_J`-RA0(B5TCXu`7ti0aOH%L zP~ud4>Oj1`oU28T>-iV~g zNrxN-sr+W?xw+hs0uN6oOX9&9y=5Ryyjn9-P*n_Kg)g}g`gYU9@n(4aZN8+NnKQ1A z8voyMaFVD?>KndhVr1aKPV9sMQx!clwC>DHF|%pl#?V{O){0J z=C4x>Tz2fAG4y`XtM&xgD>E`H>5zx7`S4Sha&@fj8I-grrC=@Kcv=@Dn7MlC)o)v~z4)hsz~UeG)0!=S`N61dqB z7v*w(sM(*FqSfVX&+MOXz;wLqh)87PR|ep(JRdnG5@{}l%#PwgF3o4YZ3|3Z+)y)` zCN6*ZOP0Fi{{57C!KMDlBd!XxXY+Z2GmP{%wl-_(d?NeU1r#EGIrG}&T<*r!CU@_F z{Jlom_0uJ3<{-9EOlNh;-m0h0&gGKnNz>Bj(YCEqGDq|7Y~F1A#C+vwZ^V|&XaYz2 zqPO&?`?;RzYAER#i3=jv);KBFm+h+Ap40FqIXn9eCA!9yM0>t%mnYJQ%k0iqNiWZ= z`!pZOj=MmwRDB;z&#j)FeeV42xycx#gPhSVWfwmA24qm6sqBZ+OW@o49p`P4z*CuV8=sG4XV)%Ct z)<-h0tyXD&^KBmKdbmQ;tK;4JV&~k~b3J|6>=|?|&Sl5nsT?Lwr{Ma`s%(Q@Sd|&s zxHoT)Aw|=#TeLmb+B+@CCUlbKq?wZ-{og_MB2Jn&4>U)=*}r*SbM%(J?#0pWPjm6i z-qDA!mLPM?%4p=2PQD(!zKzTJ=zrTGP!z zwvUtO{Ut$e-evJrNo#LnM9`ZkNsM28RW^Gl_u^fzmPLDhNd0>L)V{BZ(mqm|5AMY= z7%Wr%$=*?SQ^9>GVf#qF!%cl{uuPvyl&&h=>*~|Ju0HPR>u2_kX^O2)l>SM3?2qeD zbZvMoS=yf%zxe9IF~!9J*S#jD%5F~N<|Qb`wJ-9?vP4&ZHBVf{Pa*1^VEnRV^z?bH zJ$=#c&n*n=;;K>>R^|EZx!j6(Z5t8oSw~yBO0D4R9aid$-ci@=rdDN##@4p>j%iM$ z=LZyV&DKCQ>m40Wj9;p%&6^N?pe#<+W+ZZbiLR}#Y89?(ORxHKt7{JKt;r;cDtOZZ zD)@jpt5Cra>Z|9oS97Zi6L%!q^Lxa+tLp|=SBCO4ujg{Rt?N;R>J00^H?3=H?`Uc| zuTax~ng-N#90Myp6S5K?5uYhW6EEYhn2d%{1?Qzyxr|4zdYlHs49^(wm0p_f)$h#D z_v%ay&=PvpSNb|`QBwwJ8TF%Asp%7M)~ma%>4Sx4*kP=e9ZF3*eNFqfj!>sk)fq#p zsw%3gs-CJkimIaW@2sj_>^0nfQq(>{%qiga#x|3=y><Y2^n%{`Md z74f-Wp)&^$Q^$6Yf>cBX_fs1fq2NNUI?@tt>Ely9e~RApIo?$GLhqO>gK;Z@-jjcs z>>ayja@@1Y-lKbYH_}@AY;xR-t)(wAXi7RN(c<1WA$tF)ronwQUpn@PM;{n9X0U8R zdem|8@r$Eh{pG8Ss`R|BOiBCRU0X}q%Tm$7QJ1AE2lohgb>=9Hj`M=9fii%DUVQA@ zyR!f6lgK?S$o^&}uy-$P8~J|p>g~CnCGGo6qFY7=y{Acd_MT?K^RyrszdG9e3{Qik z=b|CxYOds%OkIf=;>yPCQtl|i0a3s9&)Y!8z5u64bkh3l7gucu^ygDyf$wHg>4|mS zeb*dzS6zGcT@us16YWbA?MoBgm#*YFzV!U*`cfHR+B~tYIhp!QL$v1{WtjR*bM_2Q zHuu*d(EE3iO-t(Nx!Dg}HWPzvi@o&j%)$$;swdlZ%#JcmV$|CU-HtOXkON31RIMZb zD9s=}v4M*X*}t#1(i}}`66w{d$JOh&KZAC!j(q-I6g0K}I3Ty?`dfkABR0LJ=Iq_f zL@*O@JiRgd$San`r`&U2*K@CLwC676IdaII=G2qzJeWCzV$RN<$(>2DXM$YSt4|#p z$+m2@2Y$1|v2H&sidomo)$sR&}=~3Uv?(g&6`HQEOX)K}-woOW}$Znx5g&azJ4%_VNEqa$Yam?$NsFprzeqOcLsDE}o&t&$>?h~Oqzewr2awAmRvNN;KST5=8Q~c#iwTaRd*(W$JJfXs+ z%hK7$b@jU1NJn(wv|0@=J-UR8441B|(GgA3n%``zr%$WCQ8_M>`OW`q&kf#G$mlmd zqn|0Gd;uQtSAWG{a!mG~1y_qS~7w+L~Cczz{1>x%N%bJ@E&5U-R?f}i{rne^93Hf_tLx2kqMOYQ2i%)uWQy}-FA z_g7oCRxfpZHd4}29i&&l3JUj#g~A9KtM#ZMpKY^bPwL^$wgBa ze%*b3K3{Sze5cMr()Mk;d>qaAExUZW^}QPS2GWTx-RaR;`t%B+hVFFOlfH|7sD$<0 zQ+z3;QoZHx|B;LjHT$2`5XsK7J0jIfErTa`he>=g_2tj|`IE4r!53C!{%`{#_vhzp z^lXejB94@uHS~$!@Pxe5_gWiNy?nA@sp^!5$fVfjNxheqWIxXHG>)jw-s@lG^rp#- zZ`w!mr(V4@aD%SsKUem>xtO_td}n7%IYrKAZ=3ac?xEU|Hfmq%jZzTljJay8_D!( zwaGN=Myj@t92aTr$#v{YGe#o}+jsw3<@>ze?yWiE-()!2u6&FuiQFWO2O5xG@7N== zKP4EfAap*nG3A>#or(4|=+X2fHMI3atujkjZQxUxXhh>V+C9o$yOwL@m^uDe`s$Xn zUM!4(jifESmpV5F;#R-RYiYh?9JtpO|?#>1^K*RFU_W z9d=wK+jZybx%ifDi(Ii8_Fg@HxjlZ(A(_|Sc#S@JA=z90?u!~COm5;xG#Rs_eyAx^ zUd`23;u$sd6l0=$tv#EgJuT$Ri$!ld$yd3Ot@^Pluq^Y7TQnW}Tu=TNk7vH-K9+rk zL^3_CEu4Bmdg^4Ga?_?LI%J@^&Bo6_vv-p;Pq8$UH9tdbZn9{JokdyLw>8sH=4a)@ zd|jpJjI6H8Ve8CZ_M)(TM7_Hx{Tba3L{pni;4Psr@Cf4pMnKY6>&?Gd#_^Nj=)N zs5Uu%LnQO3zi(r3oN7f`mig2-irR9`9NKc?>#uSDY1-Viq@pzb^Je_( z2nm3D#?GO^8SeTyQ6~#r&qq_U`F8fx8eb-v&eU1hwx^Ovn5pIzo#k6>cJ>&%qgFrK z?i5D*7}7}Lylgy+{EO3j+Ve{?_dUN&Q>drj(kn96*w~l~hn0?tFvb#iura({xJ3p& z3+|a9oSvmAr&*1{ns5D9l7jt{H3LDTgp`bED~{cHf9+Y=I>HHQ8W!7BfY%y zLI=Z*~cT<4+)TF-zz2~hX zd082%IgweDo+I%;Yk4j;>0g{)gg(USmdrNG`n+`yNX*a_WLU8s?5(YUc!9#2vfMPPgMLVTwthC+y|0~2iuPo=mo7gAe@kh9s{H-@&A!GZV#5#_ z+j0-8n7Nw2etSRqWj^2d=skz?jm4QG;}sFBQLg4>Zi;kx5oce`?q?rBiMuKM>@ z%4km~&lAern7zX?`;;=fh11l*n}5+5A!M*tAHCjgPNVqQFWBiMJ$Hqjet^@GgOApQ zk8z=NJKJnj>!nt^y@zg0;FQMr)z4^*y*{GGz`v=)>*tY(r&kV+AfPUNK<2RK3fgn@ zk9a&?e(yR3xS*+JZ*cFQu2+`ol|(w4S@ZpExlH#o=#<3%`drQQZ)%_|LnuFVhsO6} zhTJ83<$+TxL}z}-Xlib1N>_C)KQ{Gj3V* zfzr!TWtEB2KVQZZo0x*w8<-ILessSGzgXYf?XvEz*~E*vngJ@Lte#@*{OANx;B~p0 zhd4oMjaOOHe+f>!t~z?t2_$|`p?KmfjOU}C$ZY)xua^EL82`!YYoF)w8a;j@8|XxP z_S5ObZ5Q&dp80{@3ok))!h(1t$9iNRpu-CZ79aYf>&cKXRekE7NE$&$oL?=C; zed3O7h^t&p^cIS{_TdOsrt~f8Wi7oE%5pU`x$LL)3*XQa+|hlz`5A7~QMsD6+~UUI zKK{{pq~i}NFK0Q3t>v9u&3K-ljf|$OM;#LF*+YeP27hoDakg1^dR~b39A$S{0;w5z zCCYgBv0TYKc3ELyT*xPYgbnkZAhLn+-Mi?T@1M-TSbJj41xt^ObR25Mi}5T4U=ZER z6O5p>da#2BZH%<`JQMA{pKoWs#UWk3@iJk3)vtMI-27DeUzNNyks39Sy+Z{=(?02h z3Nmza{X1MsUR?e#PfZ$^iKkcKD;U7VlbNwn2tQk|^t{k9g{nk*6jZF%{=wI+M7f%P zqN!<`_>0tjZ_A0tod2`NNJj$&xZ?Mq*SefOxmZJHkIb>Jyp|iR3gk<|_tGrykqY0_ zVjm%Y6Eb}5U_jx(0Oq4Wx0ci~mo7oDb)Qrb$&6Rgu}$wMSX)aXz1~#udRNY9_Xji) zdTU<(o=UhPbHbN3`mL%xvl)%Kn%8G*9B?n)nCV9^r)WX%DPQ~P;StT*45MmmuBPH< z8yYr;@8i5RE&IUrJfzAXof?wqRjl`^%e+XbXrOl3ZPi7MG;_0WO-<+TA;4VbDk%rq_>U7P%e2Ln0e9BV)B*n*MNyuz1!6?|* z@hO5&#!h)KvN005tiJ!jNHc%O_jjCO!(>#xoO`))CaM32R6OPV2GuqfayG$dAKZ(! z;LVxnwYi!Lcyll<&lldAZfkU^p%y-#*J1n%zqc*d($o--PFk6&T0ek<8sv%ww*G2- z>`g~v*Q4rj8j(Kw76W9$F&a6(MZU+Y%TZ7U zN6no|0SC+HenfpXKXvdym!Q)gKqt4Hctj=V?H_=X)*MK-F0T__!IXE=i4~E-gVU>` zkN$~%{u=jsYfj}x3s8?po5=0C7m{IiB~3s^^DZW%7Y6xpwDNUp5bV9>|CGX%D*pjD zvOjSTeNPW9_L<)0GA$v~!Mm4tHUa$4@EG4&dX7^hp8v2@wN`LBuHAmgPk|70BN{Lr z@rhX~Gx~6PJ^EUQ_{SF}=4vjxiN0?-yraBpd#*j!^QVr(V||B}->G7y%CA{uf4=Dc ze2G8VuaiF=^sz^)kx5^&GE`mlOB&&n4>>UVg%XWQEXTU02~+jZ*7vAM{@#c9So=fs z|Kay-n2(O|+h6Syk!HAooEXjj9vocGEZc)S-|=_$qwxijzxX8iu0P9tq)&-uKJl0m zkNU*3O8nX<_Pmh9ojx&EiEsPF2}<1P6K5##WuN$j64QKQsuCCb#Fv!#h)>+4M8YTT zR^nuzctnZgd}5Unhx^3el&JBESCpvmiHa#Cwzs;<)hqF$Pn@d6Uwz_yCH~+O?Me*z z#MhK~$R~cL#4mhep%Qa^V!aaI@QFbsZt#gWl(@zx4*V2}D}3T;B`)-d4=QoCPn@m9 zB%ioci6)=uRAQV@d{>D>eBzf%?Bf&tN|gD;AC%aVbZzjQ63_d@t4ciW6IBlGZ7^SnXMN(&N<85co0M3t z1lm-IkR%!q-_aMOO0xT)fiHJT+?`U!(`^un#b#aYLhEBD9rSJ9zR72GtP(SPBB4aP zPh6qIr+s4JTO=+}V!1h}OVCU4OkLkf&=x{<+)^Bfr9ppo1fHTq^zi?(0g`SJo@wgB+`E{JC8fOJ_3@eFqiSGTcfArNEz=x!!_Oql(^d^$~WD1WF&E7b4B}p z5B)c>G(3CUW-#E-h?qfEj4jSI9*)&c6eMo?cGZTL-ve%xAM#3t6XK)~8ozFX5r(j%A&6r`kUx zp|i8^v2^*jmw^Q7U@F6DS~A@{okH9*7Oi9a;`SqD#5r8i@r0?A2DuURV|!^L7s>o= z)2lg${a0EpRX=#i+UkN;^v&y!%TjZWyD`n(xSShFTo=E%9Vf_jEj_;#gO7H9f`>qF zX-~^Czxag;n4!1YKkkbBG0TH68DLIMgfo@yt+|EF2KlXrg2if`dc#>&1}|~W0T#l^ zFv;WZ=W(#=*-h_>WIjdN&?!)^u-kONOTs*4HQ?fLb}=;1pch8FZ&cpKQ#K z|C`i_4W}Ei${uLT^(%Hu?ha2W##!h|zc8(ONqm_pH z_l;64R%NCp%*}*%?omCI)wj)EvofArmtIdX_V>32Zn%X9#1gY#(L=p8t8b^T-i`G* zIj%2ye+B;T(UEaW(bh}n_pI%BfdN*_I=0@LKAxkKX8fD!iK)5gHW?49E;>T`FNE+K zPKfv-&*ee%(Z1pJn!ydibduxOMQ44AbDi{FVI??!WH7J@hc4c3(uk)n3_N|>K?b-e^3ppjbddru- zZ~w^VvYC5ye6BbC*vTcIpW3m|1^3 z<@Y2zo(R(4Q1`}|AZy#JDB&~pa)-RZ(M(%a&&=E}@(@9Mk<8a;P!+%_)ulHG4;x4i zWG~jY2PQQ{d4i(6Nb}=H>D;~-u0eH0Zs5j4yO~h;lE~i5!4a9??v=fT1oNY6zbz(3 zo?^nbI#=hHadDB?F+WvNt70!Qg@5y$9Nq1enfG!sI~&z4rf0|cf^Zuovx4jKA3yO= zFx|t+3yr>Ouy=VTeuu*7rro9NKU`r#W{UgPS2tT(Ca*-Ija!5CH<=`n5$1tAGckU1 zbk;0h$o|8mt4N%4(*wN_KeRox%O7#?db8&+-sXxXgDfh)>4ijAar^pV`^< zq}48;ak<{Nf?V$)*V)<6QDUS_&99d+y~HFJbHbA)Jej$cN1#Mf#3hvS=F+-o&&POg zaP{(smeNNEsW1KwZ2R?HfMpEKO+Eq?F!wPfS2h2TJKuOjCff4j-Sze;AK3a&DwtlK znfguZ7`2?FUFtQ8HhQAdTTCy}=Y!lujmy1-^!L|Gn24o4y`5((j`rr!%tsF7OLs4T zLP}2MYWC*A<;z=|utklz8;GmA`#~Yp>dZeX_Kl>*b}9svL)dY2iOxI^m%;6o_MeFc!SE>S4P_tuYbqo@d^Ph)s8vnrx8(z7%|T0Vq+21+FoBe}__FQNkKp zX@373HHeU8%o(ZN#bkru&YMA$vyzAUedaw6K`ey`VwhY}{sIYSKNcUTJswk?glA;= znjr9g^TNlNrd&QITBVzBvKHm$WRwn7d?rC)*P zjH+|i3S)kqEIBp*8nL%XP65Xvl9WjK79*{BsH}jh2O{ z?Ts)oGRO7c<;CT|>;5HT^{y2SA{1udQ&94D&B{DC8k=b)9A}{hN24+<)FcblI~vu| zLQS<$9ima1g_>ibxG4qVjuQ1NFnU%;1-&*Drf*^eIz)Y@TFlv72{?MZQ~al#C|DAN5SaKi0)1ACJ8onBa*I0>Wl;K zxC6R>LZVs^Ow{}Z?N{%B31y*Qg5N@37}o!lzScF0irHvmq9m(GfsF@K-&Jii4=J_3zV^2Z$OhkMAlq2 zc+nP0sqwN=Yqnm-(Svww3tA2?IyNz$bUD~3pzOY0D)E_~ae`*O`oTYS-=DGC>fwl< z?kl)3L@T_K6rn108Gi$gn{?D@EtU$(VfPStK!B)*$O2{c)?^eEB=;SMy!HN5qQ(#z zv3l!oEEDcmhyH}w~|>#tuwv15RSC?JPU>ZnOv!7_J+jh zJC&&8CU((J>NemkoxyBU;o26+Sk2#iE5zqv_=6FXk_l5>IrT1kmz*7I+H*I11%Gv4 z_x3=>sA<56o_qrW_K5xKLTkj{-JB!#aYc&J|`0epF zN8dbi4^-?`Oy1Nft!Q3?lJMAy7f&H|IWTs76U3LOI}l-xxC)vr8j3(w7$}WdDbjU|AM5UPlFaUgkh9S-{t=J%Xn9kVSdWN=5+xhd*gqE-na zvI*S<7%l6#>!h^K4;?`H`A)P>)J*4~ibH`-&)a121X*yI_%`@)v{lS!j1Qy?ywR5O zh9Hp7k6+;xq2XwT49p3uq<`jv8TZbUeZ^kprxR57Ij;DCx1yzBQGyV(KB>0Z3?7o= z@;%K=LF!;%CR}GFth5rIKO9atwgm;tF#XqlOJ{f|vSS_Bf}CfR@x@lWDaG*1C3+y` z<6XGUK4U(y{*MsVC0gNIf_A)xROT1QEyL}9Fb?(upfyKjOJjT94nBuj9e-TU`bZ0u zZfD~Rj`8BPLun#409ha5Q4&!v5M^L);CBnQ7+f}^H!)DlT!HcDoZ6VZssm6g>50#z zH>P$+Z%o)>P3!eGZl{I2lejBw+zA`E&cdA}uDy+GSIQF6*0woAVG$r!fCTUB)^W1! zz(Y`5j>Ky&oF%7Pky_!;Bnri-Q}|ugc*XB4G~b;FnicQyt=XLTr>x1 zjW=Btuy64+bo%3;2sXv*kN6vc@j1mq@%4inVSl`A2AY-pLikLKce?>@V5<9XJf^0A zVGaaz9D?%~n9lpO7+_t7>GYj%pglmD0HL^o*7%DDL7eVj!qln@Qu;15Sk`4L6=Trj zZ8Dp;*RVHe#iO_+BWGkO`R&g)zCjhp$veRJL#(FaRC zK*IW^m?VLTr$MIafsydek^>z>&L++kXr$?Q1&*B%z(;YYs}2B-0G5>;jR9y~bCxrZ zjsSX{Gi>MYtg?3ss!G+4cRO1f)n)m@y>{;y7y+RSr>S_xwSM%IN+Z8kt{ygUn#h=2 zCzHsQYX2^?2Tg0V)mV-H#iA6iwJa7J5mGPXPc>gr4Lq|m&f7&dcDl2U&udW|vjYEc z1??-v)1cD1r>V=!+Tn4WiCf{dr{COtdIrvX(D*^qvd3&ch{fNjR-rJMxBL`2^mwr_ zpyi}*hnYlwOA=X#C*7j#j#4{^&wMobDEv+;lrr_G92i3>>mgX6{SvY_%?(nkeO(yw zw>rcE967Lmgb~XuMEk(Pg_!qklBjNkDM4QZvR758zaj%z&57tDLW~~pP>9(VN*R4S z39nmQi-FXlr{*g+Nttnr-4gAYDQC5p&@FIw=3=TXZ!-?=YDo(czlve%Q>mG0pbPI z$LSCEnJ!Nla@BM zC}1Zt7S=Lj({R=1`@E5}aCw@imGjKVGon`8XI=PYx;BH1&R z@5vINUJo|oL$U;IQ(~}zkr;3uf!T8?Wt~BC` z&`oGHupG_qdLb+f9&0yeT<(6vMn<>{Ogf3covuF|ZE`K{pBpf{cc3_N5W z`S3yrOMdQIDn=w*m*yE@j85Y6j|W{N5>XPo*G}^^#6z;;V5{l)(WxRI4IRvgG*|JZc;5=% ztSD;Ph_&_SvKTA$v-CyZ*);8bzV5>XONHk1AtZUuM4oV(zzKmo zk$G}B;{<jMA0jPqcx z72b;?F`ua%C|#L93y8;x#dsi4km$r`u8o>sUWwE-FLnvee0L{0x1=FyPS)pI(GLhn z^WJ7RY<_gZW=g~6MzPk(`Zc_6B=70Jyb^qtNWMRb8=Z*l>H{;T3p5>%{+GUB+k2Kt zYdf>b7R+Ny&%5jYhxWzoD)b7a4T1^u8aRhWSs8goVYd~iKfiT=F2mb>7p%7MobXQU zac}WCN$jjNtF3fnKHoYO+{*6F_>HYj6ID+dn|`#F8lx^SbPW!E1w-7taNm#C!5UoG zD>_lQC*MRIn+_+l(P>coNz)kz&GODz1!L!>K^~feV-+O4Ds$;VzKvLTt2!vhu>;(M z-nd>ip(0bFu#oOIpOh#%2DqU1Gdhsc`vB~=z#bDUkn(*EMP&fqz5Mj~y2Ic;Q6IxdS)hw6YTS zeRoWt@H(QOiYM&@Up9j(#K(6(ss)$$sLQ4afb)#z5TeF_1NdzRKeutj4E`et+m9U7 z5ZnI~$>k%ox4Ca)-E|F~HStKUh9pora5S~3c5O#l)(MrG$7Tq{saDb)k;B#?fw5@G zn~f5s3w)3*a3lR>PyjI`?l9w8JjZ86ixE+c6}RU{JTg8i@^s`d{}5ovMSp5VEy|Fo zJmC66Xd*XMl-{lTcC1c0$enlYZr^gczX-auoY|@B8q`^_t-VKlO;X8vdFUCSDC1WRc+E*!+L z2|(Kmef;3;6`@Ink#eJ@`6U@o4+@O zO{7_iA7rgI5FN-5nfHwphbaWJKGb|E$jmi3Q7epNuCPYRDw}&+g@CR$U)h5m@OM@- zfif@jx6Z9trBXH?z!1k&>$F$8;wYNgU{oMw>37g&9D9og{*g!pPc3Uo(2!c;ZGhAi z<`I~<$?OBA6Nl}}oro}Q+@x|5*vbbBI3|zdOO{&0)>Zx0Vmx{`A`8G6jkO%aSPjJ{ zxJ2y`9yV}{0JRKg>hN%P`l>^4fWn-@Q6;JqZY600QuH?jR8K;v&^xsbRE)Peut3h^ z&b4Ff5SEH|%Li`3qKT2$(p8*>mU0bF^E3hrr~!|=2KPVk6oF$GRLO{6sb0M} zzITNk-vt4lb|IL- zp2KSwNgk=~D!^N3p&KwZF0H~a_}DMcyO*#Wi_+l|zzvapL^fZ$H`DRjy;-q8|D@{6 z;$Z&olT!F*qZC)66g0KIQ&5q*2Lv9Gq-Tyu)dG2de9KPa@$_(ng70GGGtWMZ^82c+ z+r(fKzIWMYeu+qoV*Qt3Czmlc-m>6z`aVZL3;xe1&V{meYOY_9r3qHf&D5o%s8rGo z`I(0!#{?FSf+!EtcPzki&V6;O6sXb+%t33N4S7y6Z$0zoL~lao%}JgW7^*F|UkIsx zl3y6r1t@QaGb7_0dRxPsn-@^lj(GDu8lH(@X~9{`zW{!b@Yqnc%3L5&z@lBq4rf~z z%jo+ZDU<%~khm>7?eTv3jgsAK5c~i_%~lf7A;d zjw9Bhx%WrVctIl#l~PF&;~w-s#z5>mJQ&}@pM^Ob5U$L5>E1>zxI;(`w(u=UhaV0O zWt_Ayj*DIXMo!<^Ufu*}#?fG71k=57&bXs_vGc%f^x&dH%inQl>~Ux8*L_R+#VnnT zh*@I-@s07x0pN8r=X)MvO|A&beM=H!Xf@r`H!U$nkL{05$kLcu^4<~iiAEsy$LX=& z7&cdUYU{qN7?0ECpO>in=fS($h*a4D-sTJlq-;WShy}$uQbEO>o$lkIpwQnL^o#B7>=Cm3uYw!whSaXrgWh9tjsU zWoCNqr@DW3B6~(F&IEVq8PsHSHfIA2$6|wRE-F2yG7eF3D7wE5dqlC;u(iGw?yl8PlzQdhIE_><=_1T#lPp>v0EQ z|FyicGoT+B9fVwAWYoO2t@!`T~ z#pPi3e=d+JL8^fBfbVQ$?fyb5jLd?I{?DB1`h%6S`eP7FWQf zhYM}9bKC(JTE3k#;QqrIXy(U%G<*^pe$h&GmfLC|<;82e#;8x>xd_e*F&yF44Q*BY z19#y6Yul^MvQt-?<97XlVZzC+6*j_Q;G$NC@3{bqjfr?yg-pbayDovaxs&eV9QRsL z?;?s8V2|DNXGpDub~tOl_j4R4b@dpMA}~&^wgT6xA_U5<&qOTL1BKoE=z6t*kukUE zapmfO1Tz>sj3A6FbMZ>U>&!uDXbxnRE0OO2E8mBuDCOqi2Y4pYiaQ}|IDCLW?ZP{f zJQu>_;B+KgJpxW>ybRFG8Z%(GtT8*wA!4_F`CLeS1>V zXAmVKTSLq#^ZqdITQ+(K;4_O(6_vVLYINcm3e13m*?|;JG>GU)>^!F>;|vTXX6yIF#7Pw0tY-{*6B`e{ zW=gHNs1sy2FUHZp=1MB6^7H3nHGxwC&vM+$ zAEWUI#y3a??vd?$&N$szI7v4qP1XJSIQ)m#OMNQNR;IR>0~Sx0c>c$E**vtO1sy|p zlIWhp+r*87EM0S4gCiWwqthayU_NvoEiBg>pbEblr$(g3zcnF*Z%$bF1ekV4yxQJ? zA9WIIGmkT;ff{&51%(2&`cX|~69@X-cM~k7mmwT|65P)g4fN^FVPZ<_+WP)e0z}5h zR{}?*wf3?-MesKfW+l@i_lp0y_O1S1XJXbJwslzBOnyDH;)nO(F{IpCC%g{x)!(tlSVqW~)5aYy>TsUfEhLUt zAS+<(Tw8)`)k_hWhk$+Oy?F2y>OfOHy$J9kiZb}}IGkIFY9G!ls-9a>`!JnTRwwd7szD35t|>L*!vzQm9EK(dc; zRszF|G`B4`vI*fFCK{wd7RucEAxj3^0<4oq&2un&;Nhw_bAeCRdd0krDT=KWBv%j8 zu9K9f>t%Zau&m~elx^+uOGv7oTTJUa<4u<>`-_dZlx&z0CeyKm@V!@1U(cWofklGD`FoR%-BCfW=wbx z0DSiZ-vDA(S0X;Q5Yqu*EL?}5;KM+6>Q3Y?3)vO`kWKI-hehJkiGSY410WthY65mC z;QJ0CzR<$=0)RrQD=pmIUOi*HccP5$Tiex+%J^ydF%hF|zBkcLeNICz( z#bfje;LRDst$DKQB6V0^R5E|3s%?pd`s{W4$3_9ZzPV-u&`s}(L46yaeQ=y9eb;E zU%;{MP0ZoX7D6$Wei5BKPU3?o!!hW6VZ5&i7>~0Vzs>Rm9PX`%%WFjkG5Zl?E^=D6 z{Q-dLaE$f0WBL(jaJQ@#=?J65P{iNUoJltlHiy}ir$~AHE}{IwqKve0+vCVrTE7EB zQ7b|-z%HXHTHx(YqDeo$i#FXA=Izrh{p>6dnAHyG-+nTh(k5>bB6z`a32z&BLBt77 zNW|{j$(+&AKJ9?nWndQUKwrz=J*o#;xGk*r6<`l`l&l`Iv$}8_M7)P7*N0`%e5PoM z%5X~ZP|NvU0NPbDEQoGsMIV+Z&=Fr0bm-*v_xGZaAbRZgk`9>+Ul|Q2>kU< zTR~d3Q@Z@`sGfNvu1Qhi512aOn9boexdprJGsO7*fG?OlENHk~rt7Dqc4!d#`liyv za5%w7Zi_{DZR3;kLtzKdgJV0cg8@eol9-9Y@d{ZP!@UiXEfV1vU=_y)O02WyW4EH2 zKhFzfLjgWAz5YwFP^tA&Oe^XxsXM;+5JUxE_qXwb3mC+ig ze%J%VK+l=A*VEX1;VQO}X9}uwXbZ%GTc9uoJlZ_@CcEk=s_=3wjIbucQ;jV;U1lrm zUjGa=L_U_9K3p$|wf+Z@lXWGrcY%!bhY$gIfyPlYKW4w#vwaGHi}%$kqFH#_#@e3G z#zXKx`3A6ji*Vb)xqrw?S!K?IQcdo;i$1}u9D_fYdx_@0VOG!YMa0%F)@#^jxf&es zSZ`K~fiTzER6RchRcniC38`MTsoDYok$WB6EAw_J{j(ThxD(Ag?WDaWVk`##5p$9q z*P85_S?n$)yD2uiL?BS#z2@qX)LZg;ek!8W0Ey3hiY9X2j=am+Jw>i9JL58YA*Tx` zm+H+HhhTNBZ1CXvhuLhgZUTdJhMe-4567|UtNdk_KLOo;5 zBCJRDOzdg*X93#|rvl?R96g~x(TBMY0khc;<2TQkp6-;-mgpgD%kX4TW3Eo-R)1Nn z%Q~@z#j6|`@fN?r-7b)_vlXAt@tc}i)8XN^oH+ziUPG*&nWYtN1WfV=_evIH(ts=> zlE+5%u|(eeZ~3yv%D=Oqg(8Z)YB3`$rL*i6LS>l3`f~U zStnLa#uUE%?-W^|lOexNo;X|m)N!&Ua282tNMC71bL@V4^&rKv8Gy_(Tw+RpH#>p; zen<$a%vZv(XAq(8!yoQ-*IW6vI|XIs`)ir+T%2|7$?(aGG8wvqMzkltZj(Z$AQ}>t zdHqzZ9+T0_A0WaU_#4+G?E{EJTxsL5!>=mqgRP@=sfw@mB4xLEf>I9dk!m*DZ033yS& zPFJE{kchBzz!LSmz!3*`&jGI9x)6R!&>a7K3C%Hnj_o6L4^YlCW$~UIjMJX2x?vB+ zevWVz!WaaFoV~_P=uK$J9rFPJw*WYEJ|g9CvCo_lPpP@~W$&fpg5vg;)ZMiQY2v#LRFcG9cy? z!D#*~0dva_C&iR`8r31gUxTL93jLq*EIiDq{uEX@hw-wRa>-?Y;a}RUws;j%m<^1M zH^)WF`bMOztFDl;zChM6xC+aK(V4p%FVm$t^1972S3xv`(1^lBN>`#j{2Z3R@faND zsq}D*XoXZ9MRH1$oU~#JZJ{`R4v|skz9t04-AvdCe>RB$6$7um+4IOv;Z)1rVYb@G74_Y(5G-Qw#w#dd?(fKeH4P1&7JsMCsdr1uD;3N`?^e5N;F zNKv?AIBMp^(g{HoXv}sJEG0So?9xJ1N(f+c3k%SSjsxrV<0~`9VIB9G4<2cT)CJ7E zZZcRMyIkVJMZp_oz}BREr6;E^Wnir+Q;H4k;@;pkxVY12@-#MEH?D!v+Ni1UOYNEB z_HB{v#xovk=lyS>M{#v{(O9?VE}`USOTo>TLhQgAKSe(4Mf2YA*I=0P=P85cPSIB?XB1Mtm24>C~|=5vGMQO z%Pnpfpvdj1`W~VNIs>(2e}tEFYLgd9vT#g^Iw-|}V4;`+EtX=lyjbw0;dtl|FELEK z8#Lj?bmH?Eaq+WSVAHErgNd+x3J)bBcn4NlaEcxcu~&Jw244s3R5}VM8iO>FFp>wJ zcOkMG9}*g!q+NGry4H8Uw(2WHX+@vmFTX@ozN9q_2&Rr`6*FDC>__dsa>TQSxIKpK z9&7~D@mDVG8M6hdnV4W4V$D~7;EJ?f=nnHSRGQiLp=L4QFYj!B(Po2H-*T-5uCo_+ z^tRX1E1A)al2I)lM>3=N@x}#sOk@#o`e4BpxArEJ?sB24vFR2xfJ!8|1-JuY#FSsrpA~@yM+g}XR98V1AnYojWK{|P>lmqkE@>Pjkhe-1$QOSOZAno%W>?fzE!Y=@;&hSD{AJui2 z*-2Vqn#A!m@dz0mPGFWz5g9E`

-ZL!$wk#gfq&2A4^29)oiw_yB^uP>IfI(a%yO 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�Tv;?fxtBsFW^t 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 z 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

rAAM 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

jm0s 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∾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

XTw4@yNJH{9`M;ln|+x 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 Dt;7DQ{?( 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

~7n2hB0%^hbL)ieZG4x<_<^6_ER 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%0DXLE{4v1}*YN5Cz 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

yQ=^D$fPP~wj3Z)HVt_JVKxu0Z+E=t4 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 L|Nr|PPvHLnPG>=r literal 0 HcmV?d00001 diff --git a/Scripts/pythonw.exe b/Scripts/pythonw.exe new file mode 100644 index 0000000000000000000000000000000000000000..2933d4771ab0408e62774d3ab51104e9468a6008 GIT binary patch literal 92160 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

5OuYaR!#qKFe$`co2N81NMT9^HA=L#w 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


3HZ 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 RlJH_0t;`s>vFfR!{XhG&7tH_w literal 0 HcmV?d00001 diff --git a/Scripts/vccorlib140.dll b/Scripts/vccorlib140.dll new file mode 100644 index 0000000000000000000000000000000000000000..f5c486d13a9d6a0c9321d05b5fc0d9e538db02e7 GIT binary patch literal 366872 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 Dc!80) literal 0 HcmV?d00001 diff --git a/Scripts/vcomp140.dll b/Scripts/vcomp140.dll new file mode 100644 index 0000000000000000000000000000000000000000..6a74c96fbf74203717c24b2a86ff6191a0e24e23 GIT binary patch literal 154392 zcmeFa4R}*U_CKC92~8>G1|?brB}&0+5d%d{4QOtg$c;^<3Mj6qXrbczhL8vdlwum~ z?HKjD>h8MhuCDI-b>BpHU3pO+Z1YmRYX3k-J>C-R1I6n(Vss?wPYj z=j8OyGeDp9#^8Rl-n(yV>i=y%HuYw_Z}Z7h?fkcP>TLX8{L0cPck$n1d z%F}K-+m)R$P%vGJ1}l2%D>L!y;Lp`a)t@s=rha(rkN@eH|C@tE5ceOiWSBBcGmup; zl=?aLT~FD!+iZFv$7HH)Gn>W}AYX>bK}B5|rY{HK_w)=?u87|m8K#eICeusJW|If6 zC;Hcp?62sfB}UKDGx9c~t)`QZul<;OzR`2%&8@&EP7|Mz zF9W}6|9n*M+*xd`lK@-^3rQ^cv_HR83>vd?PKdMSQK zo=;*nWhTFTM_xW9xI*lpxYh(p zhvYj=BHI!uYzY)5B(_y^K7N_m#M)zth*OH^ocfB{w8lp@$z`TM-9Ob#iItheSIoW| zEgY6&yTcbs(Jh*!HC6hHMlFhT;Hj`hvUE!E!53-HX@DiME(y?bCAL9xUd9v3Oq%mT zJhfc`_DU>Z3dL;~qNWhrAj$qbm&D$Y*cK%N>JGn}GmDqn(&nV>@fc}7;O#(jbAh-N zr=J9sbW3bIULCxlXcmX2Ig{uTtV?f_?Y+O7O=~lGlLC%F-8ZU5Tw&InZy=8ppXv&- z%|KUTJ4E4$H#O&rNRD=yg~t=r*h^~?;Y%bo)e(x9*+E=CYeN1I$m-IZj3BV7XiS;i z&l-6uzG}|7_|Qf@E>N>Sa*pP_kHhRI#Hh!H7_dMiP_VE?bFT3rZ(eu$euCm564Qg* z&$jTU6}GNw`-X_XD?T0YSi7{kUE}`*DSo*ic^l_jBvvm)_q8i8UqG}CIHZDofRI+$ zBgLoZ`8a4fOrkNJ8nS)@vZE0kJX!*x@^-AIbZ`qW=#!_gm6znGaI|;<%~^+hz{kL% zzqGO&F+wI!N5=F6k(qD;WX?x=07BRw0_o749iU~P=41W}>G~I5@xdb%Zc;4ENNQ$D z;!Wa>;tk^Tn{K@RhK7wBsj+qm&30TXML%<|`VzzoLRQ&9&G{&RulkgW-wx&0D&kUe zlRqz?l0qPeyqJV^dtr-G`L(7=3`CSzI8TzI>)baHY_?980KD80l6|=$S#nKA9WE(8 z&7tH196DNvH7E;Flk(>Agbqyb&a8T zU`59cwjnU2MeN)rMnA|?9=nr-sGSt6Ek4bxzQt}>0Yy4LI%|uG<-B|lB#;A;fWTV( z?geo>@%sftsu9``kI>JyU*pkVyQE3JVS``3^I!4}kRp6&3XpOH(JC(CSp~xAl<1}A z@E||y2Nl^w$o>h)s@af`cv+J|_7@($P=?+HC5N{2CZAh9;UzOsDwo=RG7;CVd_Im4 z?~>&CAT9wq?QSH1QZ^}itH&fQTSwB+r>p9Hm1KVgI|6ZywMP0$OqA4&!UP0950y_r zhs2}XM1QBDiGHX}Cg!u8-yfi6`1ABmi%#!r^yihMeXNM2yd;-Rc0sBfN+Bv{IT2(B zrWog@^Hx)1!FLZ(z;JTtIqs zWAE{reTIAsLTt%`Q2ehnbh9OMSiPV9p&HMDSc2`6rzS+<=|*|#x`L!%F5Bp5t#aAQ zC*`u&#m+9j9B3BV0Y597?PojXzC}W#Kq|pLw9osIl4a!w$4H~nc z7aNeZ>g@o!UAD+tlzz~AY{^@`jwTC4X((V~4F4beuy;a2Ac5gyC75ePF7+RVzH!%y zAoR|T9nhpM!eU5^A9Rm?;PbN*do($movc*A8dt|f7Y#On{Jw~zdXdW%wrcfihPGZt zio{Bw=1M&%;RZ(}KENx#yASw61bk8)Y09r4z~~sO&;$)qFou`dDRmZeGVdUNePdEeg#z4r8$2}zd6b`_*-J7oWVnn7Hp2SEN$1E zXHv~g(XN?u-z`kE3op;JMhd7`q02;0A-1@Dwc$LM@;q84$t4bqEU?+4>ov{!>kFxS zO$Rf9WI54|hR}^G(Q*?WR?-9wzZg>`c^U@Q*}!^Et|TvT!5Su87z7Qm#d$N>VV3ji ze%Jx*K#0xEn=LYh?Gjmg^spw>{0dMs=Od^q1oIfmyoMXlOmamRTFv3A0JPkoSjW=L z=mxD&Q|~I+%No={vHeRkUn5yn)y_SvsQ_bQ=U31PiOzehVv%FXfVgB9h2{46P%|hh2?vM<(n;gEr-=J+1`RZv5u-t?_S~Qgqpc92M zUna^!^9)Pkjub7>s%gYE-Vvua`~Vt2vY`Jz>mfprDX?O2*Eaay!JLRkv-V%%4qQV&J`DRu6VSd&!HAXNmdg{@^3CW(k6X$h(G zK*(FaWS|7{1cl|z64B=r8qUuOGQ3UGBucfcmn=K+vy+k^7$=-cyLJ<})N2mN^q%HoT1LlC<;W$_BM zIRTB3GfySzwLy*jKJQU99S>cQB6bAw#EIC3M9t|hU^Iy6hK#Wb`-XPs4OXV9w=<}vjl$<;|t8OR#EVG6}GY_zp#9h*m=nB zZC#R~B}BO&6gJgL0uRyLAY+6`;-OxQUqRB_VrdZN%z{lR%q++epGZ=iR40hhZ_JU) z3R}H;M|65^`=ge0i8C50vxcq9!bVlK@-u)ZwXoecBAQq+=CzaSc#T zx@sD!f!WA6}@Z&tp}0-K`i zrjc&xtCI~i;>HjQCi~ezKkVv~QN-7-5G!{{Y+Am^uCRvKWJej8cr`|+IexYYLsEW# zHHz$AsCJjKB%4Y=>5*mD5)q&YC8$D&@OZMO1)S#{3pNzX#bj7%IL~ZaO(Fm@NZSrW zGM~DC4-IBOsG#a5&s)03lN9bjb^v`H6MMq_!GaUwK9ww+IU%-5 zBJ9gJ_B1lNl#%da{c!ZH{~r1$q`ibL#}2ZbFaJd&-6wpO*d?(A`BH^D#4>|ynv19w zKNnUj+YG!V_BMG3wnK+PX-smHb>#vt zv=#_ys>~^Vq=`Had&f@`E#(yy3c>^N%DFJf6Mfmz&5G}BOFnPQ=_hJSGXFSj840|6 z)Rt3%ye%Q#7TvITNk}#35;R5vw~VAM{`aYO~Z5-De+rU14bBKat_26w7kwv-1*`h$^>zac3Ch(Vpnpm zjAf@PQ!$*Y=Sn2~7{rlvT~F425pzx*Fa~qPd$i0h}LXwRHE{9^5wkvm3XS z=l=lQCihg>2e&1Cam(+?+6T8!ei&{S05{Ef7DubSn_3IGI5Qzdt>j2T8zM~9Iy=NB zy30V_$x=l>DVl&?J=hmyzI-O-iRRE&s|wE(rX@P{9_T6BFLD-&`lx8GUNi$mtEnhz zb_Y=w1n*1EzPy&$JushbqyHBu$!0#yB7KG73LdQ7QPiAW1!Oif8V2h+yrDqk4^+T{ ziGVqLF8*={!b?17%7O4Jys0^>b$e@rGVBZTArNQDO+k2Z4)^xQxPXrv;O~9@c=*%; zqUOAU*OJ0#9NtjipT9p2J}#a!g-?IH0iOk2^=?oe`TV=^>DIGkW^y0tVZR5X=Hm&> zA_`l?_*HNoE}**QiFS03$P~>v2(Nt&_z_4W&E(1KQ+9k>*&a)NGqh`uCBMetUmr{U z?ftOiIoF)}tA# zT$H86r<5N8DIiB@NYNP%Qxji?X!1ei;iB@{O-;UBeY_$!?NNB$x}c0PGd}82UZj$2 z`cWACyTcgox#b`3r#b(DESmFa{O$25$-G!M=hOPOF+J*TNOYkOOdaeK9)27+@Fs1u z3$X|BLbH26^KTn~>286PR}|WAjm#}f6qUHEZkOVVr1+c+pXcI8KY!6gdpHL+X|yTV zTjE}FrK<4ej{_2onP#ojC$XiDXtUNXBs1aajpRKz-|B6ToS_2y`Gje7slyaL1YPTB zoM;EP4?=Bo5Qq7L(X)){)$#a&{y4rG`1&Mp#39sBTQuk2dFc{LJnArb^1n#y#S=++ z{lJgliA!_N>oXI6yzd&+J;Eg?Ux6Yf{;7vJaOsHt0!(dE)I%9qfOgLjC zFvfKP#_S<<`!eP_-Uf*FjPAxj&lrs9Jr~Fg%8SzGj}r6e&BkN^mPR;lMlgOm#;pYT z2XbcZHJi%dkrV=d$*V@=LYNKcZel(cIEp0A>7n{)PWc&LN!^DkQgZ>C9fT@iHGZtm z1{Q8_R<(y-8>9kCkviezlgyNo4ARViCb|4E7@uPfvJFzKH7NMoIfP*6p^&hAO9=A= z*ba%Hj4>H=AxzX-B-tKh^>~6m9H|ChS5A5{((6z_~6s0d_MLUK20dx?Pt4S=|?{j;ACT){P7AiCT`ZqXg@n+ z;rnLH!ai*GvkQ;VG&&m|v3gNh{b?r6i_h`1t>Uuv&w#1w5I=i`PeH_vdRI6HpO@Mx zqdmaBM3OH&6mw-OJE{)EbgQscEJ$>ICC0~Nj<``%b9=re=vz|%*7<%6PBAsWj$qFC z0sdD2@r$fj3m%V%Q5BQR_fhvMK9$2;@ga zi6#wz#zCWsULY3&BpM+s{~Umy0$>1TO(M-z<+~POlIoXVB#=B!gq-rZYO}EX$_1ij zlYHf3)gm#Howoat3&JH;z)3J5C?!A05IdS&kqf0|NoumP{4-q{{sjI?Pakw>(a>n) zTR=!HL?N0LD)$+MMtpan;STD%J0Q9tS``bj>#@>uJAUU$LH1F%FO<(8xi9L3awZ*D z(4;<+ChXQFEmU#gqo4MYw6eaE7V0Hw_-sg8nIUPz$Sq@&AZtR9WGz?#7tB{d2wRYZ zZD{&uh+D8AX?&JC-^WxV#3c@z=>z<)OB_;rL=Mp==o65(J6F9x1U*;n5xE^mfINh{ zMGoF%h#X�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®_28S$o0zKSU=d?o3=k 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 bkq-MdSgc*PIy&cL_Sr$x?wnx3L&X0B-a`;2 literal 0 HcmV?d00001 diff --git a/Scripts/vcruntime140.dll b/Scripts/vcruntime140.dll new file mode 100644 index 0000000000000000000000000000000000000000..34a0e72504776f90526966db1e3e9d382674d613 GIT binary patch literal 85784 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

cDDm>71s1l`e^41!%H^I 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

Mr>Zl&P<( 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

XH{xnSLi*SWtAl{*2 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 z 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

wmYuVrOOd)~`QdZ`lJe<-9zm>~k^YU25kzvpxXr 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 z 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μZXUp5Q>O`-w2HCsp2()}A$D$@aK!5K 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 Date: Tue, 23 Jun 2020 20:02:15 -0700 Subject: [PATCH 2/3] added virtualenv --- Lib/site-packages/_virtualenv.pth | 1 + Lib/site-packages/_virtualenv.py | 115 + Lib/site-packages/easy_install.py | 5 + .../pip-20.0.2.dist-info/INSTALLER | 1 + .../pip-20.0.2.dist-info/LICENSE.txt | 20 + .../pip-20.0.2.dist-info/METADATA | 84 + Lib/site-packages/pip-20.0.2.dist-info/RECORD | 752 ++ Lib/site-packages/pip-20.0.2.dist-info/WHEEL | 6 + .../pip-20.0.2.dist-info/entry_points.txt | 5 + .../pip-20.0.2.dist-info/top_level.txt | 1 + Lib/site-packages/pip-20.0.2.virtualenv | 0 Lib/site-packages/pip/__init__.py | 18 + Lib/site-packages/pip/__main__.py | 19 + Lib/site-packages/pip/_internal/__init__.py | 18 + Lib/site-packages/pip/_internal/build_env.py | 221 + Lib/site-packages/pip/_internal/cache.py | 329 + .../pip/_internal/cli/__init__.py | 4 + .../pip/_internal/cli/autocompletion.py | 164 + .../pip/_internal/cli/base_command.py | 226 + .../pip/_internal/cli/cmdoptions.py | 957 ++ .../pip/_internal/cli/command_context.py | 36 + Lib/site-packages/pip/_internal/cli/main.py | 75 + .../pip/_internal/cli/main_parser.py | 99 + Lib/site-packages/pip/_internal/cli/parser.py | 265 + .../pip/_internal/cli/req_command.py | 333 + .../pip/_internal/cli/status_codes.py | 8 + .../pip/_internal/commands/__init__.py | 114 + .../pip/_internal/commands/check.py | 45 + .../pip/_internal/commands/completion.py | 96 + .../pip/_internal/commands/configuration.py | 233 + .../pip/_internal/commands/debug.py | 142 + .../pip/_internal/commands/download.py | 147 + .../pip/_internal/commands/freeze.py | 103 + .../pip/_internal/commands/hash.py | 58 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/install.py | 701 ++ .../pip/_internal/commands/list.py | 313 + .../pip/_internal/commands/search.py | 145 + .../pip/_internal/commands/show.py | 180 + .../pip/_internal/commands/uninstall.py | 82 + .../pip/_internal/commands/wheel.py | 197 + .../pip/_internal/configuration.py | 422 + .../pip/_internal/distributions/__init__.py | 24 + .../pip/_internal/distributions/base.py | 45 + .../pip/_internal/distributions/installed.py | 24 + .../pip/_internal/distributions/sdist.py | 104 + .../pip/_internal/distributions/wheel.py | 36 + Lib/site-packages/pip/_internal/exceptions.py | 308 + .../pip/_internal/index/__init__.py | 2 + .../pip/_internal/index/collector.py | 544 ++ .../pip/_internal/index/package_finder.py | 1013 ++ .../pip/_internal/legacy_resolve.py | 430 + Lib/site-packages/pip/_internal/locations.py | 194 + Lib/site-packages/pip/_internal/main.py | 16 + .../pip/_internal/models/__init__.py | 2 + .../pip/_internal/models/candidate.py | 36 + .../pip/_internal/models/format_control.py | 84 + .../pip/_internal/models/index.py | 31 + .../pip/_internal/models/link.py | 227 + .../pip/_internal/models/scheme.py | 25 + .../pip/_internal/models/search_scope.py | 114 + .../pip/_internal/models/selection_prefs.py | 47 + .../pip/_internal/models/target_python.py | 107 + .../pip/_internal/models/wheel.py | 78 + .../pip/_internal/network/__init__.py | 2 + .../pip/_internal/network/auth.py | 298 + .../pip/_internal/network/cache.py | 81 + .../pip/_internal/network/download.py | 200 + .../pip/_internal/network/session.py | 405 + .../pip/_internal/network/utils.py | 48 + .../pip/_internal/network/xmlrpc.py | 44 + .../pip/_internal/operations/__init__.py | 0 .../_internal/operations/build/__init__.py | 0 .../_internal/operations/build/metadata.py | 40 + .../operations/build/metadata_legacy.py | 122 + .../pip/_internal/operations/build/wheel.py | 46 + .../operations/build/wheel_legacy.py | 115 + .../pip/_internal/operations/check.py | 163 + .../pip/_internal/operations/freeze.py | 265 + .../_internal/operations/install/__init__.py | 2 + .../operations/install/editable_legacy.py | 52 + .../_internal/operations/install/legacy.py | 129 + .../pip/_internal/operations/install/wheel.py | 615 ++ .../pip/_internal/operations/prepare.py | 591 ++ Lib/site-packages/pip/_internal/pep425tags.py | 167 + Lib/site-packages/pip/_internal/pyproject.py | 196 + .../pip/_internal/req/__init__.py | 92 + .../pip/_internal/req/constructors.py | 436 + .../pip/_internal/req/req_file.py | 546 ++ .../pip/_internal/req/req_install.py | 830 ++ .../pip/_internal/req/req_set.py | 209 + .../pip/_internal/req/req_tracker.py | 150 + .../pip/_internal/req/req_uninstall.py | 644 ++ .../pip/_internal/self_outdated_check.py | 242 + .../pip/_internal/utils/__init__.py | 0 .../pip/_internal/utils/appdirs.py | 41 + .../pip/_internal/utils/compat.py | 269 + .../pip/_internal/utils/deprecation.py | 104 + .../pip/_internal/utils/distutils_args.py | 48 + .../pip/_internal/utils/encoding.py | 42 + .../pip/_internal/utils/entrypoints.py | 31 + .../pip/_internal/utils/filesystem.py | 171 + .../pip/_internal/utils/filetypes.py | 16 + .../pip/_internal/utils/glibc.py | 98 + .../pip/_internal/utils/hashes.py | 131 + .../_internal/utils/inject_securetransport.py | 36 + .../pip/_internal/utils/logging.py | 398 + .../pip/_internal/utils/marker_files.py | 25 + Lib/site-packages/pip/_internal/utils/misc.py | 886 ++ .../pip/_internal/utils/models.py | 42 + .../pip/_internal/utils/packaging.py | 94 + .../pip/_internal/utils/pkg_resources.py | 44 + .../pip/_internal/utils/setuptools_build.py | 181 + .../pip/_internal/utils/subprocess.py | 278 + .../pip/_internal/utils/temp_dir.py | 250 + .../pip/_internal/utils/typing.py | 38 + Lib/site-packages/pip/_internal/utils/ui.py | 428 + .../pip/_internal/utils/unpacking.py | 272 + Lib/site-packages/pip/_internal/utils/urls.py | 54 + .../pip/_internal/utils/virtualenv.py | 115 + .../pip/_internal/utils/wheel.py | 225 + .../pip/_internal/vcs/__init__.py | 15 + Lib/site-packages/pip/_internal/vcs/bazaar.py | 120 + Lib/site-packages/pip/_internal/vcs/git.py | 389 + .../pip/_internal/vcs/mercurial.py | 155 + .../pip/_internal/vcs/subversion.py | 333 + .../pip/_internal/vcs/versioncontrol.py | 700 ++ .../pip/_internal/wheel_builder.py | 305 + Lib/site-packages/pip/_vendor/__init__.py | 109 + Lib/site-packages/pip/_vendor/appdirs.py | 639 ++ .../pip/_vendor/cachecontrol/__init__.py | 11 + .../pip/_vendor/cachecontrol/_cmd.py | 57 + .../pip/_vendor/cachecontrol/adapter.py | 133 + .../pip/_vendor/cachecontrol/cache.py | 39 + .../_vendor/cachecontrol/caches/__init__.py | 2 + .../_vendor/cachecontrol/caches/file_cache.py | 146 + .../cachecontrol/caches/redis_cache.py | 33 + .../pip/_vendor/cachecontrol/compat.py | 29 + .../pip/_vendor/cachecontrol/controller.py | 376 + .../pip/_vendor/cachecontrol/filewrapper.py | 80 + .../pip/_vendor/cachecontrol/heuristics.py | 135 + .../pip/_vendor/cachecontrol/serialize.py | 188 + .../pip/_vendor/cachecontrol/wrapper.py | 29 + .../pip/_vendor/certifi/__init__.py | 3 + .../pip/_vendor/certifi/__main__.py | 2 + .../pip/_vendor/certifi/cacert.pem | 4602 +++++++++ Lib/site-packages/pip/_vendor/certifi/core.py | 15 + .../pip/_vendor/chardet/__init__.py | 39 + .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 233 + .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../pip/_vendor/chardet/charsetprober.py | 145 + .../pip/_vendor/chardet/cli/__init__.py | 1 + .../pip/_vendor/chardet/cli/chardetect.py | 85 + .../pip/_vendor/chardet/codingstatemachine.py | 88 + .../pip/_vendor/chardet/compat.py | 34 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 76 + .../pip/_vendor/chardet/escprober.py | 101 + .../pip/_vendor/chardet/escsm.py | 246 + .../pip/_vendor/chardet/eucjpprober.py | 92 + .../pip/_vendor/chardet/euckrfreq.py | 195 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 387 + .../pip/_vendor/chardet/euctwprober.py | 46 + .../pip/_vendor/chardet/gb2312freq.py | 283 + .../pip/_vendor/chardet/gb2312prober.py | 46 + .../pip/_vendor/chardet/hebrewprober.py | 292 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/jpcntx.py | 233 + .../pip/_vendor/chardet/langbulgarianmodel.py | 228 + .../pip/_vendor/chardet/langcyrillicmodel.py | 333 + .../pip/_vendor/chardet/langgreekmodel.py | 225 + .../pip/_vendor/chardet/langhebrewmodel.py | 200 + .../pip/_vendor/chardet/langhungarianmodel.py | 225 + .../pip/_vendor/chardet/langthaimodel.py | 199 + .../pip/_vendor/chardet/langturkishmodel.py | 193 + .../pip/_vendor/chardet/latin1prober.py | 145 + .../pip/_vendor/chardet/mbcharsetprober.py | 91 + .../pip/_vendor/chardet/mbcsgroupprober.py | 54 + .../pip/_vendor/chardet/mbcssm.py | 572 ++ .../pip/_vendor/chardet/sbcharsetprober.py | 132 + .../pip/_vendor/chardet/sbcsgroupprober.py | 73 + .../pip/_vendor/chardet/sjisprober.py | 92 + .../pip/_vendor/chardet/universaldetector.py | 286 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 6 + .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 257 + .../pip/_vendor/colorama/initialise.py | 80 + .../pip/_vendor/colorama/win32.py | 152 + .../pip/_vendor/colorama/winterm.py | 169 + Lib/site-packages/pip/_vendor/contextlib2.py | 518 ++ .../pip/_vendor/distlib/__init__.py | 23 + .../pip/_vendor/distlib/_backport/__init__.py | 6 + .../pip/_vendor/distlib/_backport/misc.py | 41 + .../pip/_vendor/distlib/_backport/shutil.py | 761 ++ .../_vendor/distlib/_backport/sysconfig.cfg | 84 + .../_vendor/distlib/_backport/sysconfig.py | 786 ++ .../pip/_vendor/distlib/_backport/tarfile.py | 2607 ++++++ .../pip/_vendor/distlib/compat.py | 1120 +++ .../pip/_vendor/distlib/database.py | 1339 +++ .../pip/_vendor/distlib/index.py | 516 ++ .../pip/_vendor/distlib/locators.py | 1302 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 131 + .../pip/_vendor/distlib/metadata.py | 1096 +++ .../pip/_vendor/distlib/resources.py | 355 + .../pip/_vendor/distlib/scripts.py | 416 + Lib/site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 96768 bytes Lib/site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 105984 bytes Lib/site-packages/pip/_vendor/distlib/util.py | 1761 ++++ .../pip/_vendor/distlib/version.py | 736 ++ Lib/site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 90112 bytes Lib/site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 99840 bytes .../pip/_vendor/distlib/wheel.py | 1004 ++ Lib/site-packages/pip/_vendor/distro.py | 1216 +++ .../pip/_vendor/html5lib/__init__.py | 35 + .../pip/_vendor/html5lib/_ihatexml.py | 288 + .../pip/_vendor/html5lib/_inputstream.py | 923 ++ .../pip/_vendor/html5lib/_tokenizer.py | 1721 ++++ .../pip/_vendor/html5lib/_trie/__init__.py | 14 + .../pip/_vendor/html5lib/_trie/_base.py | 40 + .../pip/_vendor/html5lib/_trie/datrie.py | 44 + .../pip/_vendor/html5lib/_trie/py.py | 67 + .../pip/_vendor/html5lib/_utils.py | 124 + .../pip/_vendor/html5lib/constants.py | 2947 ++++++ .../pip/_vendor/html5lib/filters/__init__.py | 0 .../filters/alphabeticalattributes.py | 29 + .../pip/_vendor/html5lib/filters/base.py | 12 + .../html5lib/filters/inject_meta_charset.py | 73 + .../pip/_vendor/html5lib/filters/lint.py | 93 + .../_vendor/html5lib/filters/optionaltags.py | 207 + .../pip/_vendor/html5lib/filters/sanitizer.py | 896 ++ .../_vendor/html5lib/filters/whitespace.py | 38 + .../pip/_vendor/html5lib/html5parser.py | 2791 ++++++ .../pip/_vendor/html5lib/serializer.py | 409 + .../_vendor/html5lib/treeadapters/__init__.py | 30 + .../_vendor/html5lib/treeadapters/genshi.py | 54 + .../pip/_vendor/html5lib/treeadapters/sax.py | 50 + .../_vendor/html5lib/treebuilders/__init__.py | 88 + .../pip/_vendor/html5lib/treebuilders/base.py | 417 + .../pip/_vendor/html5lib/treebuilders/dom.py | 239 + .../_vendor/html5lib/treebuilders/etree.py | 340 + .../html5lib/treebuilders/etree_lxml.py | 366 + .../_vendor/html5lib/treewalkers/__init__.py | 154 + .../pip/_vendor/html5lib/treewalkers/base.py | 252 + .../pip/_vendor/html5lib/treewalkers/dom.py | 43 + .../pip/_vendor/html5lib/treewalkers/etree.py | 130 + .../html5lib/treewalkers/etree_lxml.py | 213 + .../_vendor/html5lib/treewalkers/genshi.py | 69 + .../pip/_vendor/idna/__init__.py | 2 + Lib/site-packages/pip/_vendor/idna/codec.py | 118 + Lib/site-packages/pip/_vendor/idna/compat.py | 12 + Lib/site-packages/pip/_vendor/idna/core.py | 396 + .../pip/_vendor/idna/idnadata.py | 1979 ++++ .../pip/_vendor/idna/intranges.py | 53 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8205 +++++++++++++++++ Lib/site-packages/pip/_vendor/ipaddress.py | 2420 +++++ .../pip/_vendor/msgpack/__init__.py | 65 + .../pip/_vendor/msgpack/_version.py | 1 + .../pip/_vendor/msgpack/exceptions.py | 48 + .../pip/_vendor/msgpack/fallback.py | 1027 +++ .../pip/_vendor/packaging/__about__.py | 27 + .../pip/_vendor/packaging/__init__.py | 26 + .../pip/_vendor/packaging/_compat.py | 38 + .../pip/_vendor/packaging/_structures.py | 86 + .../pip/_vendor/packaging/_typing.py | 39 + .../pip/_vendor/packaging/markers.py | 328 + .../pip/_vendor/packaging/requirements.py | 145 + .../pip/_vendor/packaging/specifiers.py | 849 ++ .../pip/_vendor/packaging/tags.py | 730 ++ .../pip/_vendor/packaging/utils.py | 62 + .../pip/_vendor/packaging/version.py | 535 ++ .../pip/_vendor/pep517/__init__.py | 4 + .../pip/_vendor/pep517/_in_process.py | 257 + Lib/site-packages/pip/_vendor/pep517/build.py | 124 + Lib/site-packages/pip/_vendor/pep517/check.py | 203 + .../pip/_vendor/pep517/colorlog.py | 115 + .../pip/_vendor/pep517/compat.py | 34 + .../pip/_vendor/pep517/dirtools.py | 44 + .../pip/_vendor/pep517/envbuild.py | 167 + Lib/site-packages/pip/_vendor/pep517/meta.py | 92 + .../pip/_vendor/pep517/wrappers.py | 298 + .../pip/_vendor/pkg_resources/__init__.py | 3296 +++++++ .../pip/_vendor/pkg_resources/py31compat.py | 23 + .../pip/_vendor/progress/__init__.py | 177 + Lib/site-packages/pip/_vendor/progress/bar.py | 91 + .../pip/_vendor/progress/counter.py | 41 + .../pip/_vendor/progress/spinner.py | 43 + Lib/site-packages/pip/_vendor/pyparsing.py | 7090 ++++++++++++++ .../pip/_vendor/pytoml/__init__.py | 4 + Lib/site-packages/pip/_vendor/pytoml/core.py | 13 + .../pip/_vendor/pytoml/parser.py | 342 + Lib/site-packages/pip/_vendor/pytoml/test.py | 30 + Lib/site-packages/pip/_vendor/pytoml/utils.py | 67 + .../pip/_vendor/pytoml/writer.py | 114 + .../pip/_vendor/requests/__init__.py | 133 + .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 42 + .../pip/_vendor/requests/adapters.py | 533 ++ Lib/site-packages/pip/_vendor/requests/api.py | 158 + .../pip/_vendor/requests/auth.py | 305 + .../pip/_vendor/requests/certs.py | 18 + .../pip/_vendor/requests/compat.py | 74 + .../pip/_vendor/requests/cookies.py | 549 ++ .../pip/_vendor/requests/exceptions.py | 126 + .../pip/_vendor/requests/help.py | 119 + .../pip/_vendor/requests/hooks.py | 34 + .../pip/_vendor/requests/models.py | 953 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 770 ++ .../pip/_vendor/requests/status_codes.py | 120 + .../pip/_vendor/requests/structures.py | 103 + .../pip/_vendor/requests/utils.py | 977 ++ Lib/site-packages/pip/_vendor/retrying.py | 267 + Lib/site-packages/pip/_vendor/six.py | 980 ++ .../pip/_vendor/urllib3/__init__.py | 86 + .../pip/_vendor/urllib3/_collections.py | 336 + .../pip/_vendor/urllib3/connection.py | 448 + .../pip/_vendor/urllib3/connectionpool.py | 1051 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../contrib/_securetransport/bindings.py | 493 + .../contrib/_securetransport/low_level.py | 328 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 121 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 498 + .../urllib3/contrib/securetransport.py | 859 ++ .../pip/_vendor/urllib3/contrib/socks.py | 210 + .../pip/_vendor/urllib3/exceptions.py | 255 + .../pip/_vendor/urllib3/fields.py | 273 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 5 + .../urllib3/packages/backports/__init__.py | 0 .../urllib3/packages/backports/makefile.py | 52 + .../pip/_vendor/urllib3/packages/six.py | 1021 ++ .../packages/ssl_match_hostname/__init__.py | 19 + .../ssl_match_hostname/_implementation.py | 160 + .../pip/_vendor/urllib3/poolmanager.py | 470 + .../pip/_vendor/urllib3/request.py | 171 + .../pip/_vendor/urllib3/response.py | 809 ++ .../pip/_vendor/urllib3/util/__init__.py | 46 + .../pip/_vendor/urllib3/util/connection.py | 138 + .../pip/_vendor/urllib3/util/queue.py | 21 + .../pip/_vendor/urllib3/util/request.py | 135 + .../pip/_vendor/urllib3/util/response.py | 86 + .../pip/_vendor/urllib3/util/retry.py | 450 + .../pip/_vendor/urllib3/util/ssl_.py | 407 + .../pip/_vendor/urllib3/util/timeout.py | 258 + .../pip/_vendor/urllib3/util/url.py | 436 + .../pip/_vendor/urllib3/util/wait.py | 153 + .../pip/_vendor/webencodings/__init__.py | 342 + .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + Lib/site-packages/pkg_resources/__init__.py | 3304 +++++++ .../pkg_resources/_vendor/__init__.py | 0 .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 21 + .../_vendor/packaging/__init__.py | 14 + .../_vendor/packaging/_compat.py | 30 + .../_vendor/packaging/_structures.py | 68 + .../_vendor/packaging/markers.py | 301 + .../_vendor/packaging/requirements.py | 127 + .../_vendor/packaging/specifiers.py | 774 ++ .../pkg_resources/_vendor/packaging/utils.py | 14 + .../_vendor/packaging/version.py | 393 + .../pkg_resources/_vendor/pyparsing.py | 5742 ++++++++++++ .../pkg_resources/_vendor/six.py | 868 ++ .../pkg_resources/extern/__init__.py | 66 + Lib/site-packages/pkg_resources/py2_warn.py | 21 + Lib/site-packages/pkg_resources/py31compat.py | 23 + .../setuptools-46.1.3.dist-info/INSTALLER | 1 + .../setuptools-46.1.3.dist-info/LICENSE | 19 + .../setuptools-46.1.3.dist-info/METADATA | 108 + .../setuptools-46.1.3.dist-info/RECORD | 208 + .../setuptools-46.1.3.dist-info/WHEEL | 5 + .../dependency_links.txt | 2 + .../entry_points.txt | 68 + .../setuptools-46.1.3.dist-info/top_level.txt | 3 + .../setuptools-46.1.3.dist-info/zip-safe | 1 + .../setuptools-46.1.3.virtualenv | 0 Lib/site-packages/setuptools/__init__.py | 232 + .../setuptools/_deprecation_warning.py | 7 + Lib/site-packages/setuptools/_imp.py | 82 + .../setuptools/_vendor/__init__.py | 0 .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 27 + .../setuptools/_vendor/packaging/__init__.py | 26 + .../setuptools/_vendor/packaging/_compat.py | 31 + .../_vendor/packaging/_structures.py | 68 + .../setuptools/_vendor/packaging/markers.py | 296 + .../_vendor/packaging/requirements.py | 138 + .../_vendor/packaging/specifiers.py | 749 ++ .../setuptools/_vendor/packaging/tags.py | 404 + .../setuptools/_vendor/packaging/utils.py | 57 + .../setuptools/_vendor/packaging/version.py | 420 + .../setuptools/_vendor/pyparsing.py | 5742 ++++++++++++ Lib/site-packages/setuptools/_vendor/six.py | 868 ++ Lib/site-packages/setuptools/archive_util.py | 175 + Lib/site-packages/setuptools/build_meta.py | 272 + Lib/site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes Lib/site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes Lib/site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 17 + Lib/site-packages/setuptools/command/alias.py | 80 + .../setuptools/command/bdist_egg.py | 509 + .../setuptools/command/bdist_rpm.py | 43 + .../setuptools/command/bdist_wininst.py | 21 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 330 + .../setuptools/command/build_py.py | 276 + .../setuptools/command/develop.py | 221 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2355 +++++ .../setuptools/command/egg_info.py | 721 ++ .../setuptools/command/install.py | 125 + .../setuptools/command/install_egg_info.py | 62 + .../setuptools/command/install_lib.py | 122 + .../setuptools/command/install_scripts.py | 68 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 136 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 66 + .../setuptools/command/saveopts.py | 22 + Lib/site-packages/setuptools/command/sdist.py | 252 + .../setuptools/command/setopt.py | 149 + Lib/site-packages/setuptools/command/test.py | 280 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 206 + Lib/site-packages/setuptools/config.py | 659 ++ Lib/site-packages/setuptools/dep_util.py | 25 + Lib/site-packages/setuptools/depends.py | 176 + Lib/site-packages/setuptools/dist.py | 1031 +++ Lib/site-packages/setuptools/errors.py | 16 + Lib/site-packages/setuptools/extension.py | 57 + .../setuptools/extern/__init__.py | 66 + Lib/site-packages/setuptools/glob.py | 174 + Lib/site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes Lib/site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes Lib/site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes Lib/site-packages/setuptools/installer.py | 150 + Lib/site-packages/setuptools/launch.py | 35 + Lib/site-packages/setuptools/lib2to3_ex.py | 62 + Lib/site-packages/setuptools/monkey.py | 179 + Lib/site-packages/setuptools/msvc.py | 1825 ++++ Lib/site-packages/setuptools/namespaces.py | 111 + Lib/site-packages/setuptools/package_index.py | 1140 +++ Lib/site-packages/setuptools/py27compat.py | 60 + Lib/site-packages/setuptools/py31compat.py | 32 + Lib/site-packages/setuptools/py33compat.py | 59 + Lib/site-packages/setuptools/py34compat.py | 13 + Lib/site-packages/setuptools/sandbox.py | 492 + .../setuptools/script (dev).tmpl | 6 + Lib/site-packages/setuptools/script.tmpl | 3 + Lib/site-packages/setuptools/site-patch.py | 76 + Lib/site-packages/setuptools/ssl_support.py | 265 + Lib/site-packages/setuptools/unicode_utils.py | 44 + Lib/site-packages/setuptools/version.py | 6 + Lib/site-packages/setuptools/wheel.py | 221 + .../setuptools/windows_support.py | 29 + .../wheel-0.34.2.dist-info/INSTALLER | 1 + .../wheel-0.34.2.dist-info/LICENSE.txt | 22 + .../wheel-0.34.2.dist-info/METADATA | 66 + .../wheel-0.34.2.dist-info/RECORD | 44 + .../wheel-0.34.2.dist-info/WHEEL | 6 + .../wheel-0.34.2.dist-info/entry_points.txt | 6 + .../wheel-0.34.2.dist-info/top_level.txt | 1 + Lib/site-packages/wheel-0.34.2.virtualenv | 0 Lib/site-packages/wheel/__init__.py | 1 + Lib/site-packages/wheel/__main__.py | 19 + Lib/site-packages/wheel/_version.py | 4 + Lib/site-packages/wheel/bdist_wheel.py | 403 + Lib/site-packages/wheel/cli/__init__.py | 88 + Lib/site-packages/wheel/cli/convert.py | 269 + Lib/site-packages/wheel/cli/install.py | 0 Lib/site-packages/wheel/cli/pack.py | 79 + Lib/site-packages/wheel/cli/unpack.py | 25 + Lib/site-packages/wheel/macosx_libfile.py | 341 + Lib/site-packages/wheel/metadata.py | 138 + Lib/site-packages/wheel/pep425tags.py | 261 + Lib/site-packages/wheel/pkginfo.py | 43 + Lib/site-packages/wheel/util.py | 46 + Lib/site-packages/wheel/wheelfile.py | 169 + Scripts/_asyncio.pyd | Bin 0 -> 53248 bytes Scripts/_bz2.pyd | Bin 0 -> 84992 bytes Scripts/_ctypes.pyd | Bin 0 -> 123904 bytes Scripts/_ctypes_test.pyd | Bin 0 -> 25088 bytes Scripts/_decimal.pyd | Bin 0 -> 263168 bytes Scripts/_distutils_findvs.pyd | Bin 0 -> 17920 bytes Scripts/_elementtree.pyd | Bin 0 -> 162816 bytes Scripts/_hashlib.pyd | Bin 0 -> 1657856 bytes Scripts/_lzma.pyd | Bin 0 -> 247808 bytes Scripts/_msi.pyd | Bin 0 -> 32256 bytes Scripts/_multiprocessing.pyd | Bin 0 -> 22528 bytes Scripts/_overlapped.pyd | Bin 0 -> 35840 bytes Scripts/_socket.pyd | Bin 0 -> 67072 bytes Scripts/_sqlite3.pyd | Bin 0 -> 78848 bytes Scripts/_ssl.pyd | Bin 0 -> 2053120 bytes Scripts/_testbuffer.pyd | Bin 0 -> 45056 bytes Scripts/_testcapi.pyd | Bin 0 -> 87040 bytes Scripts/_testconsole.pyd | Bin 0 -> 16896 bytes Scripts/_testimportmultiple.pyd | Bin 0 -> 15872 bytes Scripts/_testmultiphase.pyd | Bin 0 -> 24064 bytes Scripts/_tkinter.pyd | Bin 0 -> 62976 bytes Scripts/activate | 84 + Scripts/activate.bat | 40 + Scripts/activate.fish | 100 + Scripts/activate.ps1 | 60 + Scripts/activate.xsh | 46 + Scripts/activate_this.py | 32 + Scripts/deactivate.bat | 19 + Scripts/easy_install-3.6.exe | Bin 0 -> 106420 bytes Scripts/easy_install.exe | Bin 0 -> 106420 bytes Scripts/easy_install3.exe | Bin 0 -> 106420 bytes Scripts/pip-3.6.exe | Bin 0 -> 106411 bytes Scripts/pip.exe | Bin 0 -> 106411 bytes Scripts/pip3.6.exe | Bin 0 -> 106411 bytes Scripts/pip3.exe | Bin 0 -> 106411 bytes Scripts/pydoc.bat | 1 + Scripts/pyexpat.pyd | Bin 0 -> 190464 bytes Scripts/select.pyd | Bin 0 -> 19968 bytes Scripts/sqlite3.dll | Bin 0 -> 1150976 bytes Scripts/tcl86t.dll | Bin 0 -> 1667072 bytes Scripts/tk86t.dll | Bin 0 -> 1967104 bytes Scripts/unicodedata.pyd | Bin 0 -> 899072 bytes Scripts/wheel-3.6.exe | Bin 0 -> 106398 bytes Scripts/wheel.exe | Bin 0 -> 106398 bytes Scripts/wheel3.exe | Bin 0 -> 106398 bytes Scripts/winsound.pyd | Bin 0 -> 20992 bytes 536 files changed, 152909 insertions(+) create mode 100644 Lib/site-packages/_virtualenv.pth create mode 100644 Lib/site-packages/_virtualenv.py create mode 100644 Lib/site-packages/easy_install.py create mode 100644 Lib/site-packages/pip-20.0.2.dist-info/INSTALLER create mode 100644 Lib/site-packages/pip-20.0.2.dist-info/LICENSE.txt create mode 100644 Lib/site-packages/pip-20.0.2.dist-info/METADATA create mode 100644 Lib/site-packages/pip-20.0.2.dist-info/RECORD create mode 100644 Lib/site-packages/pip-20.0.2.dist-info/WHEEL create mode 100644 Lib/site-packages/pip-20.0.2.dist-info/entry_points.txt create mode 100644 Lib/site-packages/pip-20.0.2.dist-info/top_level.txt create mode 100644 Lib/site-packages/pip-20.0.2.virtualenv create mode 100644 Lib/site-packages/pip/__init__.py create mode 100644 Lib/site-packages/pip/__main__.py create mode 100644 Lib/site-packages/pip/_internal/__init__.py create mode 100644 Lib/site-packages/pip/_internal/build_env.py create mode 100644 Lib/site-packages/pip/_internal/cache.py create mode 100644 Lib/site-packages/pip/_internal/cli/__init__.py create mode 100644 Lib/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 Lib/site-packages/pip/_internal/cli/base_command.py create mode 100644 Lib/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 Lib/site-packages/pip/_internal/cli/command_context.py create mode 100644 Lib/site-packages/pip/_internal/cli/main.py create mode 100644 Lib/site-packages/pip/_internal/cli/main_parser.py create mode 100644 Lib/site-packages/pip/_internal/cli/parser.py create mode 100644 Lib/site-packages/pip/_internal/cli/req_command.py create mode 100644 Lib/site-packages/pip/_internal/cli/status_codes.py create mode 100644 Lib/site-packages/pip/_internal/commands/__init__.py create mode 100644 Lib/site-packages/pip/_internal/commands/check.py create mode 100644 Lib/site-packages/pip/_internal/commands/completion.py create mode 100644 Lib/site-packages/pip/_internal/commands/configuration.py create mode 100644 Lib/site-packages/pip/_internal/commands/debug.py create mode 100644 Lib/site-packages/pip/_internal/commands/download.py create mode 100644 Lib/site-packages/pip/_internal/commands/freeze.py create mode 100644 Lib/site-packages/pip/_internal/commands/hash.py create mode 100644 Lib/site-packages/pip/_internal/commands/help.py create mode 100644 Lib/site-packages/pip/_internal/commands/install.py create mode 100644 Lib/site-packages/pip/_internal/commands/list.py create mode 100644 Lib/site-packages/pip/_internal/commands/search.py create mode 100644 Lib/site-packages/pip/_internal/commands/show.py create mode 100644 Lib/site-packages/pip/_internal/commands/uninstall.py create mode 100644 Lib/site-packages/pip/_internal/commands/wheel.py create mode 100644 Lib/site-packages/pip/_internal/configuration.py create mode 100644 Lib/site-packages/pip/_internal/distributions/__init__.py create mode 100644 Lib/site-packages/pip/_internal/distributions/base.py create mode 100644 Lib/site-packages/pip/_internal/distributions/installed.py create mode 100644 Lib/site-packages/pip/_internal/distributions/sdist.py create mode 100644 Lib/site-packages/pip/_internal/distributions/wheel.py create mode 100644 Lib/site-packages/pip/_internal/exceptions.py create mode 100644 Lib/site-packages/pip/_internal/index/__init__.py create mode 100644 Lib/site-packages/pip/_internal/index/collector.py create mode 100644 Lib/site-packages/pip/_internal/index/package_finder.py create mode 100644 Lib/site-packages/pip/_internal/legacy_resolve.py create mode 100644 Lib/site-packages/pip/_internal/locations.py create mode 100644 Lib/site-packages/pip/_internal/main.py create mode 100644 Lib/site-packages/pip/_internal/models/__init__.py create mode 100644 Lib/site-packages/pip/_internal/models/candidate.py create mode 100644 Lib/site-packages/pip/_internal/models/format_control.py create mode 100644 Lib/site-packages/pip/_internal/models/index.py create mode 100644 Lib/site-packages/pip/_internal/models/link.py create mode 100644 Lib/site-packages/pip/_internal/models/scheme.py create mode 100644 Lib/site-packages/pip/_internal/models/search_scope.py create mode 100644 Lib/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 Lib/site-packages/pip/_internal/models/target_python.py create mode 100644 Lib/site-packages/pip/_internal/models/wheel.py create mode 100644 Lib/site-packages/pip/_internal/network/__init__.py create mode 100644 Lib/site-packages/pip/_internal/network/auth.py create mode 100644 Lib/site-packages/pip/_internal/network/cache.py create mode 100644 Lib/site-packages/pip/_internal/network/download.py create mode 100644 Lib/site-packages/pip/_internal/network/session.py create mode 100644 Lib/site-packages/pip/_internal/network/utils.py create mode 100644 Lib/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 Lib/site-packages/pip/_internal/operations/__init__.py create mode 100644 Lib/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 Lib/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 Lib/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 Lib/site-packages/pip/_internal/operations/check.py create mode 100644 Lib/site-packages/pip/_internal/operations/freeze.py create mode 100644 Lib/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 Lib/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 Lib/site-packages/pip/_internal/operations/install/legacy.py create mode 100644 Lib/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 Lib/site-packages/pip/_internal/operations/prepare.py create mode 100644 Lib/site-packages/pip/_internal/pep425tags.py create mode 100644 Lib/site-packages/pip/_internal/pyproject.py create mode 100644 Lib/site-packages/pip/_internal/req/__init__.py create mode 100644 Lib/site-packages/pip/_internal/req/constructors.py create mode 100644 Lib/site-packages/pip/_internal/req/req_file.py create mode 100644 Lib/site-packages/pip/_internal/req/req_install.py create mode 100644 Lib/site-packages/pip/_internal/req/req_set.py create mode 100644 Lib/site-packages/pip/_internal/req/req_tracker.py create mode 100644 Lib/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 Lib/site-packages/pip/_internal/self_outdated_check.py create mode 100644 Lib/site-packages/pip/_internal/utils/__init__.py create mode 100644 Lib/site-packages/pip/_internal/utils/appdirs.py create mode 100644 Lib/site-packages/pip/_internal/utils/compat.py create mode 100644 Lib/site-packages/pip/_internal/utils/deprecation.py create mode 100644 Lib/site-packages/pip/_internal/utils/distutils_args.py create mode 100644 Lib/site-packages/pip/_internal/utils/encoding.py create mode 100644 Lib/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 Lib/site-packages/pip/_internal/utils/filesystem.py create mode 100644 Lib/site-packages/pip/_internal/utils/filetypes.py create mode 100644 Lib/site-packages/pip/_internal/utils/glibc.py create mode 100644 Lib/site-packages/pip/_internal/utils/hashes.py create mode 100644 Lib/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 Lib/site-packages/pip/_internal/utils/logging.py create mode 100644 Lib/site-packages/pip/_internal/utils/marker_files.py create mode 100644 Lib/site-packages/pip/_internal/utils/misc.py create mode 100644 Lib/site-packages/pip/_internal/utils/models.py create mode 100644 Lib/site-packages/pip/_internal/utils/packaging.py create mode 100644 Lib/site-packages/pip/_internal/utils/pkg_resources.py create mode 100644 Lib/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 Lib/site-packages/pip/_internal/utils/subprocess.py create mode 100644 Lib/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 Lib/site-packages/pip/_internal/utils/typing.py create mode 100644 Lib/site-packages/pip/_internal/utils/ui.py create mode 100644 Lib/site-packages/pip/_internal/utils/unpacking.py create mode 100644 Lib/site-packages/pip/_internal/utils/urls.py create mode 100644 Lib/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 Lib/site-packages/pip/_internal/utils/wheel.py create mode 100644 Lib/site-packages/pip/_internal/vcs/__init__.py create mode 100644 Lib/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 Lib/site-packages/pip/_internal/vcs/git.py create mode 100644 Lib/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 Lib/site-packages/pip/_internal/vcs/subversion.py create mode 100644 Lib/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 Lib/site-packages/pip/_internal/wheel_builder.py create mode 100644 Lib/site-packages/pip/_vendor/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/appdirs.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 Lib/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 Lib/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 Lib/site-packages/pip/_vendor/certifi/core.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/compat.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/enums.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 Lib/site-packages/pip/_vendor/chardet/version.py create mode 100644 Lib/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 Lib/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 Lib/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 Lib/site-packages/pip/_vendor/colorama/win32.py create mode 100644 Lib/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 Lib/site-packages/pip/_vendor/contextlib2.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/_backport/misc.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg create mode 100644 Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/compat.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/database.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/index.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/locators.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/markers.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/resources.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 Lib/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 Lib/site-packages/pip/_vendor/distlib/util.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/version.py create mode 100644 Lib/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 Lib/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 Lib/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 Lib/site-packages/pip/_vendor/distro.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/_inputstream.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/_trie/py.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/_utils.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/constants.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/filters/base.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/filters/lint.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/html5parser.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/serializer.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py create mode 100644 Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py create mode 100644 Lib/site-packages/pip/_vendor/idna/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/idna/codec.py create mode 100644 Lib/site-packages/pip/_vendor/idna/compat.py create mode 100644 Lib/site-packages/pip/_vendor/idna/core.py create mode 100644 Lib/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 Lib/site-packages/pip/_vendor/idna/intranges.py create mode 100644 Lib/site-packages/pip/_vendor/idna/package_data.py create mode 100644 Lib/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 Lib/site-packages/pip/_vendor/ipaddress.py create mode 100644 Lib/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/msgpack/_version.py create mode 100644 Lib/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 Lib/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/_compat.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/_typing.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/markers.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/tags.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/utils.py create mode 100644 Lib/site-packages/pip/_vendor/packaging/version.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/_in_process.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/build.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/check.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/colorlog.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/compat.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/dirtools.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/envbuild.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/meta.py create mode 100644 Lib/site-packages/pip/_vendor/pep517/wrappers.py create mode 100644 Lib/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py create mode 100644 Lib/site-packages/pip/_vendor/progress/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/progress/bar.py create mode 100644 Lib/site-packages/pip/_vendor/progress/counter.py create mode 100644 Lib/site-packages/pip/_vendor/progress/spinner.py create mode 100644 Lib/site-packages/pip/_vendor/pyparsing.py create mode 100644 Lib/site-packages/pip/_vendor/pytoml/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/pytoml/core.py create mode 100644 Lib/site-packages/pip/_vendor/pytoml/parser.py create mode 100644 Lib/site-packages/pip/_vendor/pytoml/test.py create mode 100644 Lib/site-packages/pip/_vendor/pytoml/utils.py create mode 100644 Lib/site-packages/pip/_vendor/pytoml/writer.py create mode 100644 Lib/site-packages/pip/_vendor/requests/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/requests/__version__.py create mode 100644 Lib/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 Lib/site-packages/pip/_vendor/requests/adapters.py create mode 100644 Lib/site-packages/pip/_vendor/requests/api.py create mode 100644 Lib/site-packages/pip/_vendor/requests/auth.py create mode 100644 Lib/site-packages/pip/_vendor/requests/certs.py create mode 100644 Lib/site-packages/pip/_vendor/requests/compat.py create mode 100644 Lib/site-packages/pip/_vendor/requests/cookies.py create mode 100644 Lib/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 Lib/site-packages/pip/_vendor/requests/help.py create mode 100644 Lib/site-packages/pip/_vendor/requests/hooks.py create mode 100644 Lib/site-packages/pip/_vendor/requests/models.py create mode 100644 Lib/site-packages/pip/_vendor/requests/packages.py create mode 100644 Lib/site-packages/pip/_vendor/requests/sessions.py create mode 100644 Lib/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 Lib/site-packages/pip/_vendor/requests/structures.py create mode 100644 Lib/site-packages/pip/_vendor/requests/utils.py create mode 100644 Lib/site-packages/pip/_vendor/retrying.py create mode 100644 Lib/site-packages/pip/_vendor/six.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/request.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/response.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 Lib/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 Lib/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 Lib/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 Lib/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 Lib/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 Lib/site-packages/pkg_resources/__init__.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 Lib/site-packages/pkg_resources/_vendor/six.py create mode 100644 Lib/site-packages/pkg_resources/extern/__init__.py create mode 100644 Lib/site-packages/pkg_resources/py2_warn.py create mode 100644 Lib/site-packages/pkg_resources/py31compat.py create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/INSTALLER create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/LICENSE create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/METADATA create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/RECORD create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/WHEEL create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/dependency_links.txt create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/entry_points.txt create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/top_level.txt create mode 100644 Lib/site-packages/setuptools-46.1.3.dist-info/zip-safe create mode 100644 Lib/site-packages/setuptools-46.1.3.virtualenv create mode 100644 Lib/site-packages/setuptools/__init__.py create mode 100644 Lib/site-packages/setuptools/_deprecation_warning.py create mode 100644 Lib/site-packages/setuptools/_imp.py create mode 100644 Lib/site-packages/setuptools/_vendor/__init__.py create mode 100644 Lib/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/_compat.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 Lib/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 Lib/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 Lib/site-packages/setuptools/_vendor/six.py create mode 100644 Lib/site-packages/setuptools/archive_util.py create mode 100644 Lib/site-packages/setuptools/build_meta.py create mode 100644 Lib/site-packages/setuptools/cli-32.exe create mode 100644 Lib/site-packages/setuptools/cli-64.exe create mode 100644 Lib/site-packages/setuptools/cli.exe create mode 100644 Lib/site-packages/setuptools/command/__init__.py create mode 100644 Lib/site-packages/setuptools/command/alias.py create mode 100644 Lib/site-packages/setuptools/command/bdist_egg.py create mode 100644 Lib/site-packages/setuptools/command/bdist_rpm.py create mode 100644 Lib/site-packages/setuptools/command/bdist_wininst.py create mode 100644 Lib/site-packages/setuptools/command/build_clib.py create mode 100644 Lib/site-packages/setuptools/command/build_ext.py create mode 100644 Lib/site-packages/setuptools/command/build_py.py create mode 100644 Lib/site-packages/setuptools/command/develop.py create mode 100644 Lib/site-packages/setuptools/command/dist_info.py create mode 100644 Lib/site-packages/setuptools/command/easy_install.py create mode 100644 Lib/site-packages/setuptools/command/egg_info.py create mode 100644 Lib/site-packages/setuptools/command/install.py create mode 100644 Lib/site-packages/setuptools/command/install_egg_info.py create mode 100644 Lib/site-packages/setuptools/command/install_lib.py create mode 100644 Lib/site-packages/setuptools/command/install_scripts.py create mode 100644 Lib/site-packages/setuptools/command/launcher manifest.xml create mode 100644 Lib/site-packages/setuptools/command/py36compat.py create mode 100644 Lib/site-packages/setuptools/command/register.py create mode 100644 Lib/site-packages/setuptools/command/rotate.py create mode 100644 Lib/site-packages/setuptools/command/saveopts.py create mode 100644 Lib/site-packages/setuptools/command/sdist.py create mode 100644 Lib/site-packages/setuptools/command/setopt.py create mode 100644 Lib/site-packages/setuptools/command/test.py create mode 100644 Lib/site-packages/setuptools/command/upload.py create mode 100644 Lib/site-packages/setuptools/command/upload_docs.py create mode 100644 Lib/site-packages/setuptools/config.py create mode 100644 Lib/site-packages/setuptools/dep_util.py create mode 100644 Lib/site-packages/setuptools/depends.py create mode 100644 Lib/site-packages/setuptools/dist.py create mode 100644 Lib/site-packages/setuptools/errors.py create mode 100644 Lib/site-packages/setuptools/extension.py create mode 100644 Lib/site-packages/setuptools/extern/__init__.py create mode 100644 Lib/site-packages/setuptools/glob.py create mode 100644 Lib/site-packages/setuptools/gui-32.exe create mode 100644 Lib/site-packages/setuptools/gui-64.exe create mode 100644 Lib/site-packages/setuptools/gui.exe create mode 100644 Lib/site-packages/setuptools/installer.py create mode 100644 Lib/site-packages/setuptools/launch.py create mode 100644 Lib/site-packages/setuptools/lib2to3_ex.py create mode 100644 Lib/site-packages/setuptools/monkey.py create mode 100644 Lib/site-packages/setuptools/msvc.py create mode 100644 Lib/site-packages/setuptools/namespaces.py create mode 100644 Lib/site-packages/setuptools/package_index.py create mode 100644 Lib/site-packages/setuptools/py27compat.py create mode 100644 Lib/site-packages/setuptools/py31compat.py create mode 100644 Lib/site-packages/setuptools/py33compat.py create mode 100644 Lib/site-packages/setuptools/py34compat.py create mode 100644 Lib/site-packages/setuptools/sandbox.py create mode 100644 Lib/site-packages/setuptools/script (dev).tmpl create mode 100644 Lib/site-packages/setuptools/script.tmpl create mode 100644 Lib/site-packages/setuptools/site-patch.py create mode 100644 Lib/site-packages/setuptools/ssl_support.py create mode 100644 Lib/site-packages/setuptools/unicode_utils.py create mode 100644 Lib/site-packages/setuptools/version.py create mode 100644 Lib/site-packages/setuptools/wheel.py create mode 100644 Lib/site-packages/setuptools/windows_support.py create mode 100644 Lib/site-packages/wheel-0.34.2.dist-info/INSTALLER create mode 100644 Lib/site-packages/wheel-0.34.2.dist-info/LICENSE.txt create mode 100644 Lib/site-packages/wheel-0.34.2.dist-info/METADATA create mode 100644 Lib/site-packages/wheel-0.34.2.dist-info/RECORD create mode 100644 Lib/site-packages/wheel-0.34.2.dist-info/WHEEL create mode 100644 Lib/site-packages/wheel-0.34.2.dist-info/entry_points.txt create mode 100644 Lib/site-packages/wheel-0.34.2.dist-info/top_level.txt create mode 100644 Lib/site-packages/wheel-0.34.2.virtualenv create mode 100644 Lib/site-packages/wheel/__init__.py create mode 100644 Lib/site-packages/wheel/__main__.py create mode 100644 Lib/site-packages/wheel/_version.py create mode 100644 Lib/site-packages/wheel/bdist_wheel.py create mode 100644 Lib/site-packages/wheel/cli/__init__.py create mode 100644 Lib/site-packages/wheel/cli/convert.py create mode 100644 Lib/site-packages/wheel/cli/install.py create mode 100644 Lib/site-packages/wheel/cli/pack.py create mode 100644 Lib/site-packages/wheel/cli/unpack.py create mode 100644 Lib/site-packages/wheel/macosx_libfile.py create mode 100644 Lib/site-packages/wheel/metadata.py create mode 100644 Lib/site-packages/wheel/pep425tags.py create mode 100644 Lib/site-packages/wheel/pkginfo.py create mode 100644 Lib/site-packages/wheel/util.py create mode 100644 Lib/site-packages/wheel/wheelfile.py create mode 100644 Scripts/_asyncio.pyd create mode 100644 Scripts/_bz2.pyd create mode 100644 Scripts/_ctypes.pyd create mode 100644 Scripts/_ctypes_test.pyd create mode 100644 Scripts/_decimal.pyd create mode 100644 Scripts/_distutils_findvs.pyd create mode 100644 Scripts/_elementtree.pyd create mode 100644 Scripts/_hashlib.pyd create mode 100644 Scripts/_lzma.pyd create mode 100644 Scripts/_msi.pyd create mode 100644 Scripts/_multiprocessing.pyd create mode 100644 Scripts/_overlapped.pyd create mode 100644 Scripts/_socket.pyd create mode 100644 Scripts/_sqlite3.pyd create mode 100644 Scripts/_ssl.pyd create mode 100644 Scripts/_testbuffer.pyd create mode 100644 Scripts/_testcapi.pyd create mode 100644 Scripts/_testconsole.pyd create mode 100644 Scripts/_testimportmultiple.pyd create mode 100644 Scripts/_testmultiphase.pyd create mode 100644 Scripts/_tkinter.pyd create mode 100644 Scripts/activate create mode 100644 Scripts/activate.bat create mode 100644 Scripts/activate.fish create mode 100644 Scripts/activate.ps1 create mode 100644 Scripts/activate.xsh create mode 100644 Scripts/activate_this.py create mode 100644 Scripts/deactivate.bat create mode 100644 Scripts/easy_install-3.6.exe create mode 100644 Scripts/easy_install.exe create mode 100644 Scripts/easy_install3.exe create mode 100644 Scripts/pip-3.6.exe create mode 100644 Scripts/pip.exe create mode 100644 Scripts/pip3.6.exe create mode 100644 Scripts/pip3.exe create mode 100644 Scripts/pydoc.bat create mode 100644 Scripts/pyexpat.pyd create mode 100644 Scripts/select.pyd create mode 100644 Scripts/sqlite3.dll create mode 100644 Scripts/tcl86t.dll create mode 100644 Scripts/tk86t.dll create mode 100644 Scripts/unicodedata.pyd create mode 100644 Scripts/wheel-3.6.exe create mode 100644 Scripts/wheel.exe create mode 100644 Scripts/wheel3.exe create mode 100644 Scripts/winsound.pyd diff --git a/Lib/site-packages/_virtualenv.pth b/Lib/site-packages/_virtualenv.pth new file mode 100644 index 0000000..1c3ff99 --- /dev/null +++ b/Lib/site-packages/_virtualenv.pth @@ -0,0 +1 @@ +import _virtualenv \ No newline at end of file diff --git a/Lib/site-packages/_virtualenv.py b/Lib/site-packages/_virtualenv.py new file mode 100644 index 0000000..b399da4 --- /dev/null +++ b/Lib/site-packages/_virtualenv.py @@ -0,0 +1,115 @@ +"""Patches that are applied at runtime to the virtual environment""" +# -*- coding: utf-8 -*- + +import os +import sys + +VIRTUALENV_PATCH_FILE = os.path.join(__file__) + + +def patch_dist(dist): + """ + Distutils allows user to configure some arguments via a configuration file: + https://docs.python.org/3/install/index.html#distutils-configuration-files + + Some of this arguments though don't make sense in context of the virtual environment files, let's fix them up. + """ + # we cannot allow some install config as that would get packages installed outside of the virtual environment + old_parse_config_files = dist.Distribution.parse_config_files + + def parse_config_files(self, *args, **kwargs): + result = old_parse_config_files(self, *args, **kwargs) + install = self.get_option_dict("install") + + if "prefix" in install: # the prefix governs where to install the libraries + install["prefix"] = VIRTUALENV_PATCH_FILE, os.path.abspath(sys.prefix) + for base in ("purelib", "platlib", "headers", "scripts", "data"): + key = "install_{}".format(base) + if key in install: # do not allow global configs to hijack venv paths + install.pop(key, None) + return result + + dist.Distribution.parse_config_files = parse_config_files + + +# Import hook that patches some modules to ignore configuration values that break package installation in case +# of virtual environments. +_DISTUTILS_PATCH = "distutils.dist", "setuptools.dist" +if sys.version_info > (3, 4): + # https://docs.python.org/3/library/importlib.html#setting-up-an-importer + from importlib.abc import MetaPathFinder + from importlib.util import find_spec + from threading import Lock + from functools import partial + + class _Finder(MetaPathFinder): + """A meta path finder that allows patching the imported distutils modules""" + + fullname = None + lock = Lock() + + def find_spec(self, fullname, path, target=None): + if fullname in _DISTUTILS_PATCH and self.fullname is None: + with self.lock: + self.fullname = fullname + try: + spec = find_spec(fullname, path) + if spec is not None: + # https://www.python.org/dev/peps/pep-0451/#how-loading-will-work + is_new_api = hasattr(spec.loader, "exec_module") + func_name = "exec_module" if is_new_api else "load_module" + old = getattr(spec.loader, func_name) + func = self.exec_module if is_new_api else self.load_module + if old is not func: + try: + setattr(spec.loader, func_name, partial(func, old)) + except AttributeError: + pass # C-Extension loaders are r/o such as zipimporter with =2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.* + +pip - The Python Package Installer +================================== + +.. image:: https://img.shields.io/pypi/v/pip.svg + :target: https://pypi.org/project/pip/ + +.. image:: https://readthedocs.org/projects/pip/badge/?version=latest + :target: https://pip.pypa.io/en/latest + +pip is the `package installer`_ for Python. You can use pip to install packages from the `Python Package Index`_ and other indexes. + +Please take a look at our documentation for how to install and use pip: + +* `Installation`_ +* `Usage`_ + +Updates are released regularly, with a new version every 3 months. More details can be found in our documentation: + +* `Release notes`_ +* `Release process`_ + +If you find bugs, need help, or want to talk to the developers please use our mailing lists or chat rooms: + +* `Issue tracking`_ +* `Discourse channel`_ +* `User IRC`_ + +If you want to get involved head over to GitHub to get the source code, look at our development documentation and feel free to jump on the developer mailing lists and chat rooms: + +* `GitHub page`_ +* `Dev documentation`_ +* `Dev mailing list`_ +* `Dev IRC`_ + +Code of Conduct +--------------- + +Everyone interacting in the pip project's codebases, issue trackers, chat +rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_. + +.. _package installer: https://packaging.python.org/guides/tool-recommendations/ +.. _Python Package Index: https://pypi.org +.. _Installation: https://pip.pypa.io/en/stable/installing.html +.. _Usage: https://pip.pypa.io/en/stable/ +.. _Release notes: https://pip.pypa.io/en/stable/news.html +.. _Release process: https://pip.pypa.io/en/latest/development/release-process/ +.. _GitHub page: https://github.com/pypa/pip +.. _Dev documentation: https://pip.pypa.io/en/latest/development +.. _Issue tracking: https://github.com/pypa/pip/issues +.. _Discourse channel: https://discuss.python.org/c/packaging +.. _Dev mailing list: https://groups.google.com/forum/#!forum/pypa-dev +.. _User IRC: https://webchat.freenode.net/?channels=%23pypa +.. _Dev IRC: https://webchat.freenode.net/?channels=%23pypa-dev +.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ + + diff --git a/Lib/site-packages/pip-20.0.2.dist-info/RECORD b/Lib/site-packages/pip-20.0.2.dist-info/RECORD new file mode 100644 index 0000000..20e96a3 --- /dev/null +++ b/Lib/site-packages/pip-20.0.2.dist-info/RECORD @@ -0,0 +1,752 @@ +pip/__init__.py,sha256=U1AM82iShMaw90K6Yq0Q2-AZ1EsOcqQLQRB-rxwFtII,455 +pip/__main__.py,sha256=NM95x7KuQr-lwPoTjAC0d_QzLJsJjpmAoxZg0mP8s98,632 +pip/_internal/__init__.py,sha256=j5fiII6yCeZjpW7_7wAVRMM4DwE-gyARGVU4yAADDeE,517 +pip/_internal/build_env.py,sha256=--aNgzIdYrCOclHMwoAdpclCpfdFE_jooRuCy5gczwg,7532 +pip/_internal/cache.py,sha256=16GrnDRLBQNlfKWIuIF6Sa-EFS78kez_w1WEjT3ykTI,11605 +pip/_internal/configuration.py,sha256=MgKrLFBJBkF3t2VJM4tvlnEspfSuS4scp_LhHWh53nY,14222 +pip/_internal/exceptions.py,sha256=6YRuwXAK6F1iyUWKIkCIpWWN2khkAn1sZOgrFA9S8Ro,10247 +pip/_internal/legacy_resolve.py,sha256=L7R72I7CjVgJlPTggmA1j4b-H8NmxNu_dKVhrpGXGps,16277 +pip/_internal/locations.py,sha256=VifFEqhc7FWFV8QGoEM3CpECRY8Doq7kTytytxsEgx0,6734 +pip/_internal/main.py,sha256=IVBnUQ-FG7DK6617uEXRB5_QJqspAsBFmTmTesYkbdQ,437 +pip/_internal/pep425tags.py,sha256=SlIQokevkoKnXhoK3PZvXiDoj8hFKoJ7thDifDtga3k,5490 +pip/_internal/pyproject.py,sha256=kB966ZCSxiZQRa3W2RXN9as5pRuKW6Elnb4xdqDxASg,7404 +pip/_internal/self_outdated_check.py,sha256=3KO1pTJUuYaiV9X0t87I9PimkGL82HbhLWbocqKZpBU,8009 +pip/_internal/wheel_builder.py,sha256=gr9jE14W5ZuYblpldo-tpRuyG0e0AVmHLttImuAvXlE,9441 +pip/_internal/cli/__init__.py,sha256=FkHBgpxxb-_gd6r1FjnNhfMOzAUYyXoXKJ6abijfcFU,132 +pip/_internal/cli/autocompletion.py,sha256=ekGNtcDI0p7rFVc-7s4T9Tbss4Jgb7vsB649XJIblRg,6547 +pip/_internal/cli/base_command.py,sha256=v6yl5XNRqye8BT9ep8wvpMu6lylP_Hu6D95r_HqbpbQ,7948 +pip/_internal/cli/cmdoptions.py,sha256=pppqSTy3R7YLFqSRLdVmwwO6ZIvQ1MmWYHPaXr4wvuI,28115 +pip/_internal/cli/command_context.py,sha256=ygMVoTy2jpNilKT-6416gFSQpaBtrKRBbVbi2fy__EU,975 +pip/_internal/cli/main.py,sha256=8iq3bHe5lxJTB2EvKOqZ38NS0MmoS79_S1kgj4QuH8A,2610 +pip/_internal/cli/main_parser.py,sha256=W9OWeryh7ZkqELohaFh0Ko9sB98ZkSeDmnYbOZ1imBc,2819 +pip/_internal/cli/parser.py,sha256=O9djTuYQuSfObiY-NU6p4MJCfWsRUnDpE2YGA_fwols,9487 +pip/_internal/cli/req_command.py,sha256=pAUAglpTn0mUA6lRs7KN71yOm1KDabD0ySVTQTqWTSA,12463 +pip/_internal/cli/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156 +pip/_internal/commands/__init__.py,sha256=uTSj58QlrSKeXqCUSdL-eAf_APzx5BHy1ABxb0j5ZNE,3714 +pip/_internal/commands/check.py,sha256=mgLNYT3bd6Kmynwh4zzcBmVlFZ-urMo40jTgk6U405E,1505 +pip/_internal/commands/completion.py,sha256=UFQvq0Q4_B96z1bvnQyMOq82aPSu05RejbLmqeTZjC0,2975 +pip/_internal/commands/configuration.py,sha256=6riioZjMhsNSEct7dE-X8SobGodk3WERKJvuyjBje4Q,7226 +pip/_internal/commands/debug.py,sha256=a8llax2hRkxgK-tvwdJgaCaZCYPIx0fDvrlMDoYr8bQ,4209 +pip/_internal/commands/download.py,sha256=zX_0-IeFb4C8dxSmGHxk-6H5kehtyTSsdWpjNpAhSww,5007 +pip/_internal/commands/freeze.py,sha256=G9I_yoBHlpWLX1qItsWNOmmqc8ET7pekFybdbV333d4,3464 +pip/_internal/commands/hash.py,sha256=47teimfAPhpkaVbSDaafck51BT3XXYuL83lAqc5lOcE,1735 +pip/_internal/commands/help.py,sha256=Nhecq--ydFn80Gm1Zvbf9943EcRJfO0TnXUhsF0RO7s,1181 +pip/_internal/commands/install.py,sha256=WYv_h_pIcO7i-Iur2Y84GfzOEB5UJmQ-xY74ZJwA8dw,26252 +pip/_internal/commands/list.py,sha256=RqjYu3-Bo_mdh5BYbq1zBU_WTz2C8H8S2Z0_1EG7GXA,10563 +pip/_internal/commands/search.py,sha256=7Il8nKZ9mM7qF5jlnBoPvSIFY9f-0-5IbYoX3miTuZY,5148 +pip/_internal/commands/show.py,sha256=Vzsj2oX0JBl94MPyF3LV8YoMcigl8B2UsMM8zp0pH2s,6792 +pip/_internal/commands/uninstall.py,sha256=8mldFbrQecSoWDZRqxBgJkrlvx6Y9Iy7cs-2BIgtXt4,2983 +pip/_internal/commands/wheel.py,sha256=TMU5ZhjLo7BIZQApGPsYfoCsbGTnvP-N9jkgPJXhj1Y,7170 +pip/_internal/distributions/__init__.py,sha256=ECBUW5Gtu9TjJwyFLvim-i6kUMYVuikNh9I5asL6tbA,959 +pip/_internal/distributions/base.py,sha256=ruprpM_L2T2HNi3KLUHlbHimZ1sWVw-3Q0Lb8O7TDAI,1425 +pip/_internal/distributions/installed.py,sha256=YqlkBKr6TVP1MAYS6SG8ojud21wVOYLMZ8jMLJe9MSU,760 +pip/_internal/distributions/sdist.py,sha256=D4XTMlCwgPlK69l62GLYkNSVTVe99fR5iAcVt2EbGok,4086 +pip/_internal/distributions/wheel.py,sha256=95uD-TfaYoq3KiKBdzk9YMN4RRqJ28LNoSTS2K46gek,1294 +pip/_internal/index/__init__.py,sha256=vpt-JeTZefh8a-FC22ZeBSXFVbuBcXSGiILhQZJaNpQ,30 +pip/_internal/index/collector.py,sha256=YS7Ix4oylU7ZbPTPFugh-244GSRqMvdHsGUG6nmz2gE,17892 +pip/_internal/index/package_finder.py,sha256=2Rg75AOpLj8BN1jyL8EI-Iw-Hv6ibJkrYVARCht3bX8,37542 +pip/_internal/models/__init__.py,sha256=3DHUd_qxpPozfzouoqa9g9ts1Czr5qaHfFxbnxriepM,63 +pip/_internal/models/candidate.py,sha256=Y58Bcm6oXUj0iS-yhmerlGo5CQJI2p0Ww9h6hR9zQDw,1150 +pip/_internal/models/format_control.py,sha256=ICzVjjGwfZYdX-eLLKHjMHLutEJlAGpfj09OG_eMqac,2673 +pip/_internal/models/index.py,sha256=K59A8-hVhBM20Xkahr4dTwP7OjkJyEqXH11UwHFVgqM,1060 +pip/_internal/models/link.py,sha256=y0H2ZOk0P6d1lfGUL2Pl09xFgZcRt5HwN2LElMifOpI,6827 +pip/_internal/models/scheme.py,sha256=vvhBrrno7eVDXcdKHiZWwxhPHf4VG5uSCEkC0QDR2RU,679 +pip/_internal/models/search_scope.py,sha256=2LXbU4wV8LwqdtXQXNXFYKv-IxiDI_QwSz9ZgbwtAfk,3898 +pip/_internal/models/selection_prefs.py,sha256=rPeif2KKjhTPXeMoQYffjqh10oWpXhdkxRDaPT1HO8k,1908 +pip/_internal/models/target_python.py,sha256=c-cFi6zCuo5HYbXNS3rVVpKRaHVh5yQlYEjEW23SidQ,3799 +pip/_internal/models/wheel.py,sha256=6KLuLKH5b0C5goWQXGSISRaq2UZtkHUEAU1y1Zsrwms,2766 +pip/_internal/network/__init__.py,sha256=jf6Tt5nV_7zkARBrKojIXItgejvoegVJVKUbhAa5Ioc,50 +pip/_internal/network/auth.py,sha256=K3G1ukKb3PiH8w_UnpXTz8qQsTULO-qdbfOE9zTo1fE,11119 +pip/_internal/network/cache.py,sha256=51CExcRkXWrgMZ7WsrZ6cmijKfViD5tVgKbBvJHO1IE,2394 +pip/_internal/network/download.py,sha256=3D9vdJmVwmCUMxzC-TaVI_GvVOpQna3BLEYNPCSx3Fc,6260 +pip/_internal/network/session.py,sha256=u1IXQfv21R1xv86ulyiB58-be4sYm90eFB0Wp8fVMYw,14702 +pip/_internal/network/utils.py,sha256=iiixo1OeaQ3niUWiBjg59PN6f1w7vvTww1vFriTD_IU,1959 +pip/_internal/network/xmlrpc.py,sha256=AL115M3vFJ8xiHVJneb8Hi0ZFeRvdPhblC89w25OG5s,1597 +pip/_internal/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/check.py,sha256=a6uHG0daoWpmSPCdL7iYJaGQYZ-CRvPvTnCv2PnIIs0,5353 +pip/_internal/operations/freeze.py,sha256=td4BeRnW10EXFTZrx6VgygO3CrjqD5B9f0BGzjQm-Ew,10180 +pip/_internal/operations/prepare.py,sha256=ro2teBlbBpkRJhBKraP9CoJgVLpueSk62ziWhRToXww,20942 +pip/_internal/operations/build/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/operations/build/metadata.py,sha256=yHMi5gHYXcXyHcvUPWHdO-UyOo3McFWljn_nHfM1O9c,1307 +pip/_internal/operations/build/metadata_legacy.py,sha256=4n6N7BTysqVmEpITzT2UVClyt0Peij_Im8Qm965IWB4,3957 +pip/_internal/operations/build/wheel.py,sha256=ntltdNP6D2Tpr4V0agssu6rE0F9LaBpJkYT6zSdhEbw,1469 +pip/_internal/operations/build/wheel_legacy.py,sha256=DYSxQKutwSZnmNvWkwsl2HzE2XQBxV0i0wTphjtUe90,3349 +pip/_internal/operations/install/__init__.py,sha256=mX7hyD2GNBO2mFGokDQ30r_GXv7Y_PLdtxcUv144e-s,51 +pip/_internal/operations/install/editable_legacy.py,sha256=rJ_xs2qtDUjpY2-n6eYlVyZiNoKbOtZXZrYrcnIELt4,1488 +pip/_internal/operations/install/legacy.py,sha256=eBV8gHbO9sBlBc-4nuR3Sd2nikHgEcnC9khfeLiypio,4566 +pip/_internal/operations/install/wheel.py,sha256=xdCjH6uIUyg39Pf8tUaMFUN4a7eozJAFMb_wKcgQlsY,23012 +pip/_internal/req/__init__.py,sha256=UVaYPlHZVGRBQQPjvGC_6jJDQtewXm0ws-8Lxhg_TiY,2671 +pip/_internal/req/constructors.py,sha256=w5-kWWVCqlSqcIBitw86yq7XGMPpKrHDfQZSE2mJ_xc,14388 +pip/_internal/req/req_file.py,sha256=ECqRUicCw5Y08R1YynZAAp8dSKQhDXoc1Q-mY3a9b6I,18485 +pip/_internal/req/req_install.py,sha256=wjsIr4lDpbVSLqANKJI9mXwRVHaRxcnj8q30UiHoLRA,30442 +pip/_internal/req/req_set.py,sha256=GsrKmupRKhNMhjkofVfCEHEHfgEvYBxClaQH5xLBQHg,8066 +pip/_internal/req/req_tracker.py,sha256=27fvVG8Y2MJS1KpU2rBMnQyUEMHG4lkHT_bzbzQK-c0,4723 +pip/_internal/req/req_uninstall.py,sha256=DWnOsuyYGju6-sylyoCm7GtUNevn9qMAVhjAGLcdXUE,23609 +pip/_internal/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_internal/utils/appdirs.py,sha256=frpKbfJiyKLgpPDYNDrPtkfaZ0akY9SyB7ryPV29sMg,1144 +pip/_internal/utils/compat.py,sha256=D7FKGLBdQwWH-dHIGaoWMawDZWBYApvtJVL1kFPJ930,8869 +pip/_internal/utils/deprecation.py,sha256=pBnNogoA4UGTxa_JDnPXBRRYpKMbExAhXpBwAwklOBs,3318 +pip/_internal/utils/distutils_args.py,sha256=a56mblNxk9BGifbpEETG61mmBrqhjtjRkJ4HYn-oOEE,1350 +pip/_internal/utils/encoding.py,sha256=hxZz0t3Whw3d4MHQEiofxalTlfKwxFdLc8fpeGfhKo8,1320 +pip/_internal/utils/entrypoints.py,sha256=vHcNpnksCv6mllihU6hfifdsKPEjwcaJ1aLIXEaynaU,1152 +pip/_internal/utils/filesystem.py,sha256=PXa3vMcz4mbEKtkD0joFI8pBwddLQxhfPFOkVH5xjfE,5255 +pip/_internal/utils/filetypes.py,sha256=R2FwzoeX7b-rZALOXx5cuO8VPPMhUQ4ne7wm3n3IcWA,571 +pip/_internal/utils/glibc.py,sha256=LOeNGgawCKS-4ke9fii78fwXD73dtNav3uxz1Bf-Ab8,3297 +pip/_internal/utils/hashes.py,sha256=my-wSnAWEDvl_8rQaOQcVIWjwh1-f_QiEvGy9TPf53U,3942 +pip/_internal/utils/inject_securetransport.py,sha256=M17ZlFVY66ApgeASVjKKLKNz0LAfk-SyU0HZ4ZB6MmI,810 +pip/_internal/utils/logging.py,sha256=aJL7NldPhS5KGFof6Qt3o3MG5cjm5TOoo7bGRu9_wsg,13033 +pip/_internal/utils/marker_files.py,sha256=CO5djQlrPIozJpJybViH_insoAaBGY1aqEt6-cC-iW0,741 +pip/_internal/utils/misc.py,sha256=itSJCAJfjGJiUaQyooUPxqjjy21M71GXsVn4wFEIMJA,25334 +pip/_internal/utils/models.py,sha256=IA0hw_T4awQzui0kqfIEASm5yLtgZAB08ag59Nip5G8,1148 +pip/_internal/utils/packaging.py,sha256=VtiwcAAL7LBi7tGL2je7LeW4bE11KMHGCsJ1NZY5XtM,3035 +pip/_internal/utils/pkg_resources.py,sha256=ZX-k7V5q_aNWyDse92nN7orN1aCpRLsaxzpkBZ1XKzU,1254 +pip/_internal/utils/setuptools_build.py,sha256=DouaVolV9olDDFIIN9IszaL-FHdNaZt10ufOZFH9ZAU,5070 +pip/_internal/utils/subprocess.py,sha256=Ph3x5eHQBxFotyGhpZN8asSMBud-BBkmgaNfARG-di8,9922 +pip/_internal/utils/temp_dir.py,sha256=87Ib8aNic_hoSDEmUYJHTQIn5-prL2AYL5u_yZ3s4sI,7768 +pip/_internal/utils/typing.py,sha256=xkYwOeHlf4zsHXBDC4310HtEqwhQcYXFPq2h35Tcrl0,1401 +pip/_internal/utils/ui.py,sha256=0FNxXlGtbpPtTviv2oXS9t8bQG_NBdfUgP4GbubhS9U,13911 +pip/_internal/utils/unpacking.py,sha256=M944JTSiapBOSKLWu7lbawpVHSE7flfzZTEr3TAG7v8,9438 +pip/_internal/utils/urls.py,sha256=aNV9wq5ClUmrz6sG-al7hEWJ4ToitOy7l82CmFGFNW8,1481 +pip/_internal/utils/virtualenv.py,sha256=Q3S1WPlI7JWpGOT2jUVJ8l2chm_k7VPJ9cHA_cUluEU,3396 +pip/_internal/utils/wheel.py,sha256=grTRwZtMQwApwbbSPmRVLtac6FKy6SVKeCXNkWyyePA,7302 +pip/_internal/vcs/__init__.py,sha256=viJxJRqRE_mVScum85bgQIXAd6o0ozFt18VpC-qIJrM,617 +pip/_internal/vcs/bazaar.py,sha256=84q1-kj1_nJ9AMzMu8RmMp-riRZu81M7K9kowcYgi3U,3957 +pip/_internal/vcs/git.py,sha256=X0j5jv_x3ZnM_NP09B1ZDxW-PAmfHzqOqX7Wf5XW--0,14058 +pip/_internal/vcs/mercurial.py,sha256=2mg7BdYI_Fe00fF6omaNccFQLPHBsDBG5CAEzvqn5sA,5110 +pip/_internal/vcs/subversion.py,sha256=Fpwy71AmuqXnoKi6h1SrXRtPjEMn8fieuM1O4j01IBg,12292 +pip/_internal/vcs/versioncontrol.py,sha256=nqoaM1_rzx24WnHtihXA8RcPpnUae0sV2sR_LS_5HFA,22600 +pip/_vendor/__init__.py,sha256=gEJYEfJm7XGLslyjW3KBQyQxyTYxdvTEkRT5Bz28MDs,4657 +pip/_vendor/appdirs.py,sha256=kVvdzRSQW6hsZYPMrct3jav-CGIZ4horsK7KnUTjt7w,26130 +pip/_vendor/contextlib2.py,sha256=5HjGflUzwWAUfcILhSmC2GqvoYdZZzFzVfIDztHigUs,16915 +pip/_vendor/distro.py,sha256=X2So5kjrRKyMbQJ90Xgy93HU5eFtujCzKaYNeoy1k1c,43251 +pip/_vendor/ipaddress.py,sha256=-0RmurI31XgAaN20WCi0zrcuoat90nNA70_6yGlx2PU,79875 +pip/_vendor/pyparsing.py,sha256=_9UdBKfzmMgIpLtacjV7T1HDfnXomNxlzNEJSCZfyMA,272429 +pip/_vendor/retrying.py,sha256=k3fflf5_Mm0XcIJYhB7Tj34bqCCPhUDkYbx1NvW2FPE,9972 +pip/_vendor/six.py,sha256=Q6WvEXZ1DGEASAo3CGNCJkKv2tPy8xkSmK-VHE9PYIA,34074 +pip/_vendor/cachecontrol/__init__.py,sha256=pJtAaUxOsMPnytI1A3juAJkXYDr8krdSnsg4Yg3OBEg,302 +pip/_vendor/cachecontrol/_cmd.py,sha256=URGE0KrA87QekCG3SGPatlSPT571dZTDjNa-ZXX3pDc,1295 +pip/_vendor/cachecontrol/adapter.py,sha256=sSwaSYd93IIfCFU4tOMgSo6b2LCt_gBSaQUj8ktJFOA,4882 +pip/_vendor/cachecontrol/cache.py,sha256=1fc4wJP8HYt1ycnJXeEw5pCpeBL2Cqxx6g9Fb0AYDWQ,805 +pip/_vendor/cachecontrol/compat.py,sha256=kHNvMRdt6s_Xwqq_9qJmr9ou3wYMOMUMxPPcwNxT8Mc,695 +pip/_vendor/cachecontrol/controller.py,sha256=CWEX3pedIM9s60suf4zZPtm_JvVgnvogMGK_OiBG5F8,14149 +pip/_vendor/cachecontrol/filewrapper.py,sha256=vACKO8Llzu_ZWyjV1Fxn1MA4TGU60N5N3GSrAFdAY2Q,2533 +pip/_vendor/cachecontrol/heuristics.py,sha256=BFGHJ3yQcxvZizfo90LLZ04T_Z5XSCXvFotrp7Us0sc,4070 +pip/_vendor/cachecontrol/serialize.py,sha256=vIa4jvq4x_KSOLdEIedoknX2aXYHQujLDFV4-F21Dno,7091 +pip/_vendor/cachecontrol/wrapper.py,sha256=5LX0uJwkNQUtYSEw3aGmGu9WY8wGipd81mJ8lG0d0M4,690 +pip/_vendor/cachecontrol/caches/__init__.py,sha256=-gHNKYvaeD0kOk5M74eOrsSgIKUtC6i6GfbmugGweEo,86 +pip/_vendor/cachecontrol/caches/file_cache.py,sha256=nYVKsJtXh6gJXvdn1iWyrhxvkwpQrK-eKoMRzuiwkKk,4153 +pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=HxelMpNCo-dYr2fiJDwM3hhhRmxUYtB5tXm1GpAAT4Y,856 +pip/_vendor/certifi/__init__.py,sha256=JVwzDhkMttyVVtfNDrU_i0v2a-WmtEBXq0Z8oz4Ghzk,52 +pip/_vendor/certifi/__main__.py,sha256=NaCn6WtWME-zzVWQ2j4zFyl8cY4knDa9CwtHNIeFPhM,53 +pip/_vendor/certifi/cacert.pem,sha256=cyvv5Jx1gHACNEj2GaOrsIj0Tk8FmSvHR42uhzvlatg,281457 +pip/_vendor/certifi/core.py,sha256=EuFc2BsToG5O1-qsx4BSjQ1r1-7WRtH87b1WflZOWhI,218 +pip/_vendor/chardet/__init__.py,sha256=YsP5wQlsHJ2auF1RZJfypiSrCA7_bQiRm3ES_NI76-Y,1559 +pip/_vendor/chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254 +pip/_vendor/chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757 +pip/_vendor/chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411 +pip/_vendor/chardet/charsetgroupprober.py,sha256=6bDu8YIiRuScX4ca9Igb0U69TA2PGXXDej6Cc4_9kO4,3787 +pip/_vendor/chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110 +pip/_vendor/chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590 +pip/_vendor/chardet/compat.py,sha256=PKTzHkSbtbHDqS9PyujMbX74q1a8mMpeQTDVsQhZMRw,1134 +pip/_vendor/chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855 +pip/_vendor/chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661 +pip/_vendor/chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950 +pip/_vendor/chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510 +pip/_vendor/chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749 +pip/_vendor/chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546 +pip/_vendor/chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748 +pip/_vendor/chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621 +pip/_vendor/chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747 +pip/_vendor/chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715 +pip/_vendor/chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754 +pip/_vendor/chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838 +pip/_vendor/chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777 +pip/_vendor/chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643 +pip/_vendor/chardet/langbulgarianmodel.py,sha256=1HqQS9Pbtnj1xQgxitJMvw8X6kKr5OockNCZWfEQrPE,12839 +pip/_vendor/chardet/langcyrillicmodel.py,sha256=LODajvsetH87yYDDQKA2CULXUH87tI223dhfjh9Zx9c,17948 +pip/_vendor/chardet/langgreekmodel.py,sha256=8YAW7bU8YwSJap0kIJSbPMw1BEqzGjWzqcqf0WgUKAA,12688 +pip/_vendor/chardet/langhebrewmodel.py,sha256=JSnqmE5E62tDLTPTvLpQsg5gOMO4PbdWRvV7Avkc0HA,11345 +pip/_vendor/chardet/langhungarianmodel.py,sha256=RhapYSG5l0ZaO-VV4Fan5sW0WRGQqhwBM61yx3yxyOA,12592 +pip/_vendor/chardet/langthaimodel.py,sha256=8l0173Gu_W6G8mxmQOTEF4ls2YdE7FxWf3QkSxEGXJQ,11290 +pip/_vendor/chardet/langturkishmodel.py,sha256=W22eRNJsqI6uWAfwXSKVWWnCerYqrI8dZQTm_M0lRFk,11102 +pip/_vendor/chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370 +pip/_vendor/chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413 +pip/_vendor/chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012 +pip/_vendor/chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481 +pip/_vendor/chardet/sbcharsetprober.py,sha256=LDSpCldDCFlYwUkGkwD2oFxLlPWIWXT09akH_2PiY74,5657 +pip/_vendor/chardet/sbcsgroupprober.py,sha256=1IprcCB_k1qfmnxGC6MBbxELlKqD3scW6S8YIwdeyXA,3546 +pip/_vendor/chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774 +pip/_vendor/chardet/universaldetector.py,sha256=qL0174lSZE442eB21nnktT9_VcAye07laFWUeUrjttY,12485 +pip/_vendor/chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766 +pip/_vendor/chardet/version.py,sha256=sp3B08mrDXB-pf3K9fqJ_zeDHOCLC8RrngQyDFap_7g,242 +pip/_vendor/chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +pip/_vendor/chardet/cli/chardetect.py,sha256=DI8dlV3FBD0c0XA_y3sQ78z754DUv1J8n34RtDjOXNw,2774 +pip/_vendor/colorama/__init__.py,sha256=DqjXH9URVP3IJwmMt7peYw50ns1RNAymIB9-XdPEFV8,239 +pip/_vendor/colorama/ansi.py,sha256=Fi0un-QLqRm-v7o_nKiOqyC8PapBJK7DLV_q9LKtTO0,2524 +pip/_vendor/colorama/ansitowin32.py,sha256=u8QaqdqS_xYSfNkPM1eRJLHz6JMWPodaJaP0mxgHCDc,10462 +pip/_vendor/colorama/initialise.py,sha256=PprovDNxMTrvoNHFcL2NZjpH2XzDc8BLxLxiErfUl4k,1915 +pip/_vendor/colorama/win32.py,sha256=bJ8Il9jwaBN5BJ8bmN6FoYZ1QYuMKv2j8fGrXh7TJjw,5404 +pip/_vendor/colorama/winterm.py,sha256=2y_2b7Zsv34feAsP67mLOVc-Bgq51mdYGo571VprlrM,6438 +pip/_vendor/distlib/__init__.py,sha256=gzl1hjUXmDGrqRyU7ZLjBwJGAcMimQbrZ22XPVaKaRE,581 +pip/_vendor/distlib/compat.py,sha256=xdNZmqFN5HwF30HjRn5M415pcC2kgXRBXn767xS8v-M,41404 +pip/_vendor/distlib/database.py,sha256=fhNzEDtb4HXrpxKyQvhVzDXcOiJlzrOM--UYnvCeZrI,51045 +pip/_vendor/distlib/index.py,sha256=SXKzpQCERctxYDMp_OLee2f0J0e19ZhGdCIoMlUfUQM,21066 +pip/_vendor/distlib/locators.py,sha256=c9E4cDEacJ_uKbuE5BqAVocoWp6rsuBGTkiNDQq3zV4,52100 +pip/_vendor/distlib/manifest.py,sha256=nQEhYmgoreaBZzyFzwYsXxJARu3fo4EkunU163U16iE,14811 +pip/_vendor/distlib/markers.py,sha256=6Ac3cCfFBERexiESWIOXmg-apIP8l2esafNSX3KMy-8,4387 +pip/_vendor/distlib/metadata.py,sha256=OhbCKmf5lswE8unWBopI1hj7tRpHp4ZbFvU4d6aAEMM,40234 +pip/_vendor/distlib/resources.py,sha256=2FGv0ZHF14KXjLIlL0R991lyQQGcewOS4mJ-5n-JVnc,10766 +pip/_vendor/distlib/scripts.py,sha256=OAkEwxRvIzX-VSfhEttQEKJFVLA47gbW0OgQXJRs7OQ,16998 +pip/_vendor/distlib/t32.exe,sha256=NS3xBCVAld35JVFNmb-1QRyVtThukMrwZVeXn4LhaEQ,96768 +pip/_vendor/distlib/t64.exe,sha256=oAqHes78rUWVM0OtVqIhUvequl_PKhAhXYQWnUf7zR0,105984 +pip/_vendor/distlib/util.py,sha256=f2jZCPrcLCt6LcnC0gUy-Fur60tXD8reA7k4rDpHMDw,59845 +pip/_vendor/distlib/version.py,sha256=_n7F6juvQGAcn769E_SHa7fOcf5ERlEVymJ_EjPRwGw,23391 +pip/_vendor/distlib/w32.exe,sha256=lJtnZdeUxTZWya_EW5DZos_K5rswRECGspIl8ZJCIXs,90112 +pip/_vendor/distlib/w64.exe,sha256=0aRzoN2BO9NWW4ENy4_4vHkHR4qZTFZNVSAJJYlODTI,99840 +pip/_vendor/distlib/wheel.py,sha256=bRtR5bNR_u_DwkwktN1bgZuwLVOJT1p_vNIUPyN8kJc,40452 +pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274 +pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971 +pip/_vendor/distlib/_backport/shutil.py,sha256=VW1t3uYqUjWZH7jV-6QiimLhnldoV5uIpH4EuiT1jfw,25647 +pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617 +pip/_vendor/distlib/_backport/sysconfig.py,sha256=BQHFlb6pubCl_dvT1NjtzIthylofjKisox239stDg0U,26854 +pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628 +pip/_vendor/html5lib/__init__.py,sha256=Ztrn7UvF-wIFAgRBBa0ML-Gu5AffH3BPX_INJx4SaBI,1162 +pip/_vendor/html5lib/_ihatexml.py,sha256=3LBtJMlzgwM8vpQiU1TvGmEEmNH72sV0yD8yS53y07A,16705 +pip/_vendor/html5lib/_inputstream.py,sha256=bPUWcAfJScK4xkjQQaG_HsI2BvEVbFvI0AsodDYPQj0,32552 +pip/_vendor/html5lib/_tokenizer.py,sha256=YAaOEBD6qc5ISq9Xt9Nif1OFgcybTTfMdwqBkZhpAq4,76580 +pip/_vendor/html5lib/_utils.py,sha256=ismpASeqa2jqEPQjHUj8vReAf7yIoKnvLN5fuOw6nv0,4015 +pip/_vendor/html5lib/constants.py,sha256=4lmZWLtEPRLnl8NzftOoYTJdo6jpeMtP6dqQC0g_bWQ,83518 +pip/_vendor/html5lib/html5parser.py,sha256=g5g2ezkusHxhi7b23vK_-d6K6BfIJRbqIQmvQ9z4EgI,118963 +pip/_vendor/html5lib/serializer.py,sha256=yfcfBHse2wDs6ojxn-kieJjLT5s1ipilQJ0gL3-rJis,15758 +pip/_vendor/html5lib/_trie/__init__.py,sha256=8VR1bcgD2OpeS2XExpu5yBhP_Q1K-lwKbBKICBPf1kU,289 +pip/_vendor/html5lib/_trie/_base.py,sha256=CaybYyMro8uERQYjby2tTeSUatnWDfWroUN9N7ety5w,1013 +pip/_vendor/html5lib/_trie/datrie.py,sha256=EQpqSfkZRuTbE-DuhW7xMdVDxdZNZ0CfmnYfHA_3zxM,1178 +pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775 +pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=lViZc2JMCclXi_5gduvmdzrRxtO5Xo9ONnbHBVCsykU,919 +pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286 +pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=egDXUEHXmAG9504xz0K6ALDgYkvUrC2q15YUVeNlVQg,2945 +pip/_vendor/html5lib/filters/lint.py,sha256=jk6q56xY0ojiYfvpdP-OZSm9eTqcAdRqhCoPItemPYA,3643 +pip/_vendor/html5lib/filters/optionaltags.py,sha256=8lWT75J0aBOHmPgfmqTHSfPpPMp01T84NKu0CRedxcE,10588 +pip/_vendor/html5lib/filters/sanitizer.py,sha256=4ON02KNjuqda1lCw5_JCUZxb0BzWR5M7ON84dtJ7dm0,26248 +pip/_vendor/html5lib/filters/whitespace.py,sha256=8eWqZxd4UC4zlFGW6iyY6f-2uuT8pOCSALc3IZt7_t4,1214 +pip/_vendor/html5lib/treeadapters/__init__.py,sha256=A0rY5gXIe4bJOiSGRO_j_tFhngRBO8QZPzPtPw5dFzo,679 +pip/_vendor/html5lib/treeadapters/genshi.py,sha256=CH27pAsDKmu4ZGkAUrwty7u0KauGLCZRLPMzaO3M5vo,1715 +pip/_vendor/html5lib/treeadapters/sax.py,sha256=BKS8woQTnKiqeffHsxChUqL4q2ZR_wb5fc9MJ3zQC8s,1776 +pip/_vendor/html5lib/treebuilders/__init__.py,sha256=AysSJyvPfikCMMsTVvaxwkgDieELD5dfR8FJIAuq7hY,3592 +pip/_vendor/html5lib/treebuilders/base.py,sha256=wQGp5yy22TNG8tJ6aREe4UUeTR7A99dEz0BXVaedWb4,14579 +pip/_vendor/html5lib/treebuilders/dom.py,sha256=22whb0C71zXIsai5mamg6qzBEiigcBIvaDy4Asw3at0,8925 +pip/_vendor/html5lib/treebuilders/etree.py,sha256=aqIBOGj_dFYqBURIcTegGNBhAIJOw5iFDHb4jrkYH-8,12764 +pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=9V0dXxbJYYq-Skgb5-_OL2NkVYpjioEb4CHajo0e9yI,14122 +pip/_vendor/html5lib/treewalkers/__init__.py,sha256=yhXxHpjlSqfQyUag3v8-vWjMPriFBU8YRAPNpDgBTn8,5714 +pip/_vendor/html5lib/treewalkers/base.py,sha256=ouiOsuSzvI0KgzdWP8PlxIaSNs9falhbiinAEc_UIJY,7476 +pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413 +pip/_vendor/html5lib/treewalkers/etree.py,sha256=sz1o6mmE93NQ53qJFDO7HKyDtuwgK-Ay3qSFZPC6u00,4550 +pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=sY6wfRshWTllu6n48TPWpKsQRPp-0CQrT0hj_AdzHSU,6309 +pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 +pip/_vendor/idna/__init__.py,sha256=9Nt7xpyet3DmOrPUGooDdAwmHZZu1qUAy2EaJ93kGiQ,58 +pip/_vendor/idna/codec.py,sha256=lvYb7yu7PhAqFaAIAdWcwgaWI2UmgseUua-1c0AsG0A,3299 +pip/_vendor/idna/compat.py,sha256=R-h29D-6mrnJzbXxymrWUW7iZUvy-26TQwZ0ij57i4U,232 +pip/_vendor/idna/core.py,sha256=JDCZZ_PLESqIgEbU8mPyoEufWwoOiIqygA17-QZIe3s,11733 +pip/_vendor/idna/idnadata.py,sha256=HXaPFw6_YAJ0qppACPu0YLAULtRs3QovRM_CCZHGdY0,40899 +pip/_vendor/idna/intranges.py,sha256=TY1lpxZIQWEP6tNqjZkFA5hgoMWOj1OBmnUG8ihT87E,1749 +pip/_vendor/idna/package_data.py,sha256=kIzeKKXEouXLR4srqwf9Q3zv-NffKSOz5aSDOJARPB0,21 +pip/_vendor/idna/uts46data.py,sha256=oLyNZ1pBaiBlj9zFzLFRd_P7J8MkRcgDisjExZR_4MY,198292 +pip/_vendor/msgpack/__init__.py,sha256=LnKzG5v0RyZgs7KlY2-SZYDBn-toylovXxKiXR6C-IQ,1535 +pip/_vendor/msgpack/_version.py,sha256=72BxB5FMl1q3Nz1hteHINzHhrFpXQ9nNtULaK52NLk8,20 +pip/_vendor/msgpack/exceptions.py,sha256=dCTWei8dpkrMsQDcjQk74ATl9HsIBH0ybt8zOPNqMYc,1081 +pip/_vendor/msgpack/fallback.py,sha256=vXo6S67Dmil9mz0PRBCLDu6znpv6CGKt9WPCEsdZx2A,37454 +pip/_vendor/packaging/__about__.py,sha256=G5P2sPs0QxgVqD0zzcSjVLfY31ni6HVUh9ZWlHSAG3M,744 +pip/_vendor/packaging/__init__.py,sha256=6enbp5XgRfjBjsI9-bn00HjHf5TH21PDMOKkJW8xw-w,562 +pip/_vendor/packaging/_compat.py,sha256=Z-PwchK0cREbaRGF5MZP8LEv8JkC-qydn2FRrtjeixk,1138 +pip/_vendor/packaging/_structures.py,sha256=ozkCX8Q8f2qE1Eic3YiQ4buDVfgz2iYevY9e7R2y3iY,2022 +pip/_vendor/packaging/_typing.py,sha256=-cq_iNeveAWCVoseVvqmknWLbvZ_i9g7BeZBo0ShtHg,1449 +pip/_vendor/packaging/markers.py,sha256=yap5bk3c8QyPuGtiVbQSYhN70bxWj1nLDv2ZuaCLq7g,9501 +pip/_vendor/packaging/requirements.py,sha256=G43p2ylM_REg87RLG9JybjbdwfaPyzaKYRtllRfNdrM,4913 +pip/_vendor/packaging/specifiers.py,sha256=Nz8bnFp53cQInmRGZy50QXlIi2tkDXMfRuGyGps2IRE,31314 +pip/_vendor/packaging/tags.py,sha256=lJ_91F0icMlFvMp7EiKWPSzgJclNsEYdjdErhryfGj4,23510 +pip/_vendor/packaging/utils.py,sha256=v5Wk8B7gUL13Rzed6NNhCZlutPQT7jNV-7hr-WOtacU,1700 +pip/_vendor/packaging/version.py,sha256=qRdNN0_XuPFOJ3fut8ehzxJrNYtBzqF8ZtagEvgNUUM,15480 +pip/_vendor/pep517/__init__.py,sha256=nCw8ZdLH4c19g8xP_Ndag1KPdQhlSDKaL9pg-X7uNWU,84 +pip/_vendor/pep517/_in_process.py,sha256=v1Viek27-MGCOFu8eSlLd2jGCrIqc1fISnutGFoRDps,7792 +pip/_vendor/pep517/build.py,sha256=WqM0-X4KyzY566qxGf3FeaYc1hw95H7YP0ElZ1zuTb0,3318 +pip/_vendor/pep517/check.py,sha256=ST02kRWBrRMOxgnRm9clw18Q2X7sJGaD4j3h6GmBhJ8,5949 +pip/_vendor/pep517/colorlog.py,sha256=Tk9AuYm_cLF3BKTBoSTJt9bRryn0aFojIQOwbfVUTxQ,4098 +pip/_vendor/pep517/compat.py,sha256=M-5s4VNp8rjyT76ZZ_ibnPD44DYVzSQlyCEHayjtDPw,780 +pip/_vendor/pep517/dirtools.py,sha256=2mkAkAL0mRz_elYFjRKuekTJVipH1zTn4tbf1EDev84,1129 +pip/_vendor/pep517/envbuild.py,sha256=K4dIGAbkXf3RoQX_9RFpZvMvPrVSHtcbH7o9VSrNnlM,6024 +pip/_vendor/pep517/meta.py,sha256=8mnM5lDnT4zXQpBTliJbRGfesH7iioHwozbDxALPS9Y,2463 +pip/_vendor/pep517/wrappers.py,sha256=QiQaEQlfCrhRpPBFQiGVM9QjrKSlj8AvM39haoyfPRk,10599 +pip/_vendor/pkg_resources/__init__.py,sha256=XpGBfvS9fafA6bm5rx7vnxdxs7yqyoc_NnpzKApkJ64,108277 +pip/_vendor/pkg_resources/py31compat.py,sha256=CRk8fkiPRDLsbi5pZcKsHI__Pbmh_94L8mr9Qy9Ab2U,562 +pip/_vendor/progress/__init__.py,sha256=fcbQQXo5np2CoQyhSH5XprkicwLZNLePR3uIahznSO0,4857 +pip/_vendor/progress/bar.py,sha256=QuDuVNcmXgpxtNtxO0Fq72xKigxABaVmxYGBw4J3Z_E,2854 +pip/_vendor/progress/counter.py,sha256=MznyBrvPWrOlGe4MZAlGUb9q3aODe6_aNYeAE_VNoYA,1372 +pip/_vendor/progress/spinner.py,sha256=k8JbDW94T0-WXuXfxZIFhdoNPYp3jfnpXqBnfRv5fGs,1380 +pip/_vendor/pytoml/__init__.py,sha256=W_SKx36Hsew-Fty36BOpreLm4uF4V_Tgkm_z9rIoOE8,127 +pip/_vendor/pytoml/core.py,sha256=9CrLLTs1PdWjEwRnYzt_i4dhHcZvGxs_GsMlYAX3iY4,509 +pip/_vendor/pytoml/parser.py,sha256=qsc0NRnTgdFZgRp9gmr6D_KWFelrwxLkTj9dVxUcqS8,10309 +pip/_vendor/pytoml/test.py,sha256=2nQs4aX3XQEaaQCx6x_OJTS2Hb0_IiTZRqNOeDmLCzo,1021 +pip/_vendor/pytoml/utils.py,sha256=JCLHx77Hu1R3F-bRgiROIiKyCzLwyebnp5P35cRJxWs,1665 +pip/_vendor/pytoml/writer.py,sha256=4QQky9JSuRv60uzuhVZASU8T3CuobSkLG1285X6bDW8,3369 +pip/_vendor/requests/__init__.py,sha256=ONVsH6kJuPTV9nf-XVoubWsVX3qVtjCyju42kTW6Uug,4074 +pip/_vendor/requests/__version__.py,sha256=Bm-GFstQaFezsFlnmEMrJDe8JNROz9n2XXYtODdvjjc,436 +pip/_vendor/requests/_internal_utils.py,sha256=Zx3PnEUccyfsB-ie11nZVAW8qClJy0gx1qNME7rgT18,1096 +pip/_vendor/requests/adapters.py,sha256=e-bmKEApNVqFdylxuMJJfiaHdlmS_zhWhIMEzlHvGuc,21548 +pip/_vendor/requests/api.py,sha256=fbUo11QoLOoNgWU6FfvNz8vMj9bE_cMmICXBa7TZHJs,6271 +pip/_vendor/requests/auth.py,sha256=QB2-cSUj1jrvWZfPXttsZpyAacQgtKLVk14vQW9TpSE,10206 +pip/_vendor/requests/certs.py,sha256=nXRVq9DtGmv_1AYbwjTu9UrgAcdJv05ZvkNeaoLOZxY,465 +pip/_vendor/requests/compat.py,sha256=FZX4Q_EMKiMnhZpZ3g_gOsT-j2ca9ij2gehDx1cwYeo,1941 +pip/_vendor/requests/cookies.py,sha256=Y-bKX6TvW3FnYlE6Au0SXtVVWcaNdFvuAwQxw-G0iTI,18430 +pip/_vendor/requests/exceptions.py,sha256=-mLam3TAx80V09EaH3H-ZxR61eAVuLRZ8zgBBSLjK44,3197 +pip/_vendor/requests/help.py,sha256=SJPVcoXeo7KfK4AxJN5eFVQCjr0im87tU2n7ubLsksU,3578 +pip/_vendor/requests/hooks.py,sha256=QReGyy0bRcr5rkwCuObNakbYsc7EkiKeBwG4qHekr2Q,757 +pip/_vendor/requests/models.py,sha256=6s-37iAqXVptq8z7U_LoH_pbIPrCQUm_Z8QuIGE29Q0,34275 +pip/_vendor/requests/packages.py,sha256=njJmVifY4aSctuW3PP5EFRCxjEwMRDO6J_feG2dKWsI,695 +pip/_vendor/requests/sessions.py,sha256=DjbCotDW6xSAaBsjbW-L8l4N0UcwmrxVNgSrZgIjGWM,29332 +pip/_vendor/requests/status_codes.py,sha256=XWlcpBjbCtq9sSqpH9_KKxgnLTf9Z__wCWolq21ySlg,4129 +pip/_vendor/requests/structures.py,sha256=zoP8qly2Jak5e89HwpqjN1z2diztI-_gaqts1raJJBc,2981 +pip/_vendor/requests/utils.py,sha256=LtPJ1db6mJff2TJSJWKi7rBpzjPS3mSOrjC9zRhoD3A,30049 +pip/_vendor/urllib3/__init__.py,sha256=--dxP-3k5qC8gGCQJbU_jJK666_rbCduadrwRB25wZg,2683 +pip/_vendor/urllib3/_collections.py,sha256=GouVsNzwg6jADZTmimMI6oqmwKSswnMo9dh5tGNVWO4,10792 +pip/_vendor/urllib3/connection.py,sha256=JaGozqRdvNogTwHDGxbp2N3Hi2MtJQrkbr7b5qcBGXk,15168 +pip/_vendor/urllib3/connectionpool.py,sha256=2RPMZJU_PhkAbY1tvy3-W_9os4Kdk_XXu8Zi6YSCgSU,36488 +pip/_vendor/urllib3/exceptions.py,sha256=P3e-p9_LScyIxX7FoR3wU0A6hZmDqFAVCz2wgI3D0lM,6607 +pip/_vendor/urllib3/fields.py,sha256=kroD76QK-GdHHW7f_AUN4XxDC3OQPI2FFrS9eSL4BCs,8553 +pip/_vendor/urllib3/filepost.py,sha256=vj0qbrpT1AFzvvW4SuC8M5kJiw7wftHcSr-7b8UpPpw,2440 +pip/_vendor/urllib3/poolmanager.py,sha256=JYUyBUN3IiEknUdjZ7VJrpCQr6SP7vi0WwSndrn8XpE,17053 +pip/_vendor/urllib3/request.py,sha256=hhoHvEEatyd9Tn5EbGjQ0emn-ENMCyY591yNWTneINA,6018 +pip/_vendor/urllib3/response.py,sha256=O2DVzBeWOzyxZDZ8k0EDFU3GW1jWXk_b03mS0O1ybxs,27836 +pip/_vendor/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/_appengine_environ.py,sha256=PCxFG7RoB-AOkIWQWGBIg1yZnK0dwPxWcNx7BTpZFBI,909 +pip/_vendor/urllib3/contrib/appengine.py,sha256=gfdK4T7CRin7v9HRhHDbDh-Hbk66hHDWeoz7nV3PJo8,11034 +pip/_vendor/urllib3/contrib/ntlmpool.py,sha256=a402AwGN_Ll3N-4ur_AS6UrU-ycUtlnYqoBF76lORg8,4160 +pip/_vendor/urllib3/contrib/pyopenssl.py,sha256=w35mWy_1POZUsbOhurVb_zhf0C1Jkd79AFlucLs6KuQ,16440 +pip/_vendor/urllib3/contrib/securetransport.py,sha256=iKzVUAxKnChsADR5YMwc05oEixXDzAk0xPU0g-rc2z8,32275 +pip/_vendor/urllib3/contrib/socks.py,sha256=nzDMgDIFJWVubKHqvIn2-SKCO91hhJInP92WgHChGzA,7036 +pip/_vendor/urllib3/contrib/_securetransport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/contrib/_securetransport/bindings.py,sha256=mullWYFaghBdRWla6HYU-TBgFRTPLBEfxj3jplbeJmQ,16886 +pip/_vendor/urllib3/contrib/_securetransport/low_level.py,sha256=V7GnujxnWZh2N2sMsV5N4d9Imymokkm3zBwgt77_bSE,11956 +pip/_vendor/urllib3/packages/__init__.py,sha256=h4BLhD4tLaBx1adaDtKXfupsgqY0wWLXb_f1_yVlV6A,108 +pip/_vendor/urllib3/packages/six.py,sha256=adx4z-eM_D0Vvu0IIqVzFACQ_ux9l64y7DkSEfbxCDs,32536 +pip/_vendor/urllib3/packages/backports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +pip/_vendor/urllib3/packages/backports/makefile.py,sha256=005wrvH-_pWSnTFqQ2sdzzh4zVCtQUUQ4mR2Yyxwc0A,1418 +pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py,sha256=ywgKMtfHi1-DrXlzPfVAhzsLzzqcK7GT6eLgdode1Fg,688 +pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=rvQDQviqQLtPJB6MfEgABnBFj3nXft7ZJ3Dx-BC0AQY,5696 +pip/_vendor/urllib3/util/__init__.py,sha256=bWNaav_OT-1L7-sxm59cGb59rDORlbhb_4noduM5m0U,1038 +pip/_vendor/urllib3/util/connection.py,sha256=NsxUAKQ98GKywta--zg57CdVpeTCI6N-GElCq78Dl8U,4637 +pip/_vendor/urllib3/util/queue.py,sha256=myTX3JDHntglKQNBf3b6dasHH-uF-W59vzGSQiFdAfI,497 +pip/_vendor/urllib3/util/request.py,sha256=C-6-AWffxZG03AdRGoY59uqsn4CVItKU6gjxz7Hc3Mc,3815 +pip/_vendor/urllib3/util/response.py,sha256=_WbTQr8xRQuJuY2rTIZxVdJD6mnEOtQupjaK_bF_Vj8,2573 +pip/_vendor/urllib3/util/retry.py,sha256=Ui74h44gLIIWkAxT9SK3A2mEvu55-odWgJMw3LiUNGk,15450 +pip/_vendor/urllib3/util/ssl_.py,sha256=7mB3AsidIqLLq6gbeBL-7Ta0MyVOL5uZax8_5bH3y7c,14163 +pip/_vendor/urllib3/util/timeout.py,sha256=bCtaS_xVKaTDJ5VMlroXBfCnPUDNVGZqik7-z83issg,9871 +pip/_vendor/urllib3/util/url.py,sha256=jXDEENCiE7gZPFcCMxTCcNjkQw6nbpgqSuIUPrS07FI,14113 +pip/_vendor/urllib3/util/wait.py,sha256=k46KzqIYu3Vnzla5YW3EvtInNlU_QycFqQAghIOxoAg,5406 +pip/_vendor/webencodings/__init__.py,sha256=qOBJIuPy_4ByYH6W_bNgJF-qYQ2DoU-dKsDu5yRWCXg,10579 +pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 +pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 +pip/_vendor/webencodings/tests.py,sha256=OtGLyjhNY1fvkW1GvLJ_FV9ZoqC9Anyjr7q3kxTbzNs,6563 +pip/_vendor/webencodings/x_user_defined.py,sha256=yOqWSdmpytGfUgh_Z6JYgDNhoc-BAHyyeeT15Fr42tM,4307 +pip-20.0.2.dist-info/LICENSE.txt,sha256=W6Ifuwlk-TatfRU2LR7W1JMcyMj5_y1NkRkOEJvnRDE,1090 +pip-20.0.2.dist-info/METADATA,sha256=MSgjT2JTt8usp4Hopp5AGEmc-7sKR2Jd7HTMJqCoRhw,3352 +pip-20.0.2.dist-info/WHEEL,sha256=8zNYZbwQSXoB9IfXOjPfeNwvAsALAjffgk27FqvCWbo,110 +pip-20.0.2.dist-info/entry_points.txt,sha256=HtfDOwpUlr9s73jqLQ6wF9V0_0qvUXJwCBz7Vwx0Ue0,125 +pip-20.0.2.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +pip-20.0.2.dist-info/RECORD,, +pip\_internal\models\link.cpython-36.pyc,, +pip\_internal\commands\debug.cpython-36.pyc,, +pip\_vendor\requests\_internal_utils.cpython-36.pyc,, +pip\_internal\cli\__init__.cpython-36.pyc,, +pip\_vendor\chardet\universaldetector.cpython-36.pyc,, +pip\_vendor\packaging\requirements.cpython-36.pyc,, +pip\__main__.cpython-36.pyc,, +pip\_internal\cli\main.cpython-36.pyc,, +pip\_internal\utils\models.cpython-36.pyc,, +pip\_internal\req\req_uninstall.cpython-36.pyc,, +pip\_vendor\distlib\compat.cpython-36.pyc,, +pip\_internal\vcs\__pycache__,, +pip\_internal\utils\encoding.cpython-36.pyc,, +pip\_vendor\distlib\markers.cpython-36.pyc,, +pip\_vendor\html5lib\constants.cpython-36.pyc,, +pip\_vendor\urllib3\packages\__init__.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\_securetransport\__pycache__,, +pip\_internal\distributions\__init__.cpython-36.pyc,, +pip\_internal\operations\__pycache__,, +pip\_vendor\chardet\euckrprober.cpython-36.pyc,, +pip\_vendor\pep517\meta.cpython-36.pyc,, +pip\_internal\utils\setuptools_build.cpython-36.pyc,, +pip\_vendor\chardet\big5freq.cpython-36.pyc,, +pip\_vendor\urllib3\connection.cpython-36.pyc,, +pip\_internal\commands\install.cpython-36.pyc,, +pip\_vendor\urllib3\packages\backports\__init__.cpython-36.pyc,, +pip\_internal\pep425tags.cpython-36.pyc,, +pip\_vendor\html5lib\treebuilders\etree.cpython-36.pyc,, +pip\_vendor\chardet\__init__.cpython-36.pyc,, +pip\_vendor\html5lib\_utils.cpython-36.pyc,, +pip\_vendor\distlib\version.cpython-36.pyc,, +pip\_vendor\cachecontrol\caches\__init__.cpython-36.pyc,, +pip-20.0.2.dist-info\__pycache__,, +pip\_internal\operations\install\__pycache__,, +pip\_internal\utils\__init__.cpython-36.pyc,, +pip\_internal\commands\configuration.cpython-36.pyc,, +pip\_vendor\html5lib\filters\alphabeticalattributes.cpython-36.pyc,, +pip\_vendor\distlib\_backport\tarfile.cpython-36.pyc,, +pip\_internal\utils\hashes.cpython-36.pyc,, +pip\_vendor\requests\cookies.cpython-36.pyc,, +pip\_vendor\html5lib\html5parser.cpython-36.pyc,, +pip\_vendor\pep517\dirtools.cpython-36.pyc,, +pip\_vendor\urllib3\util\connection.cpython-36.pyc,, +pip\_internal\operations\install\legacy.cpython-36.pyc,, +pip\_vendor\chardet\euctwprober.cpython-36.pyc,, +pip\_vendor\html5lib\filters\whitespace.cpython-36.pyc,, +pip\_vendor\pytoml\utils.cpython-36.pyc,, +pip\_internal\utils\temp_dir.cpython-36.pyc,, +pip\_internal\operations\prepare.cpython-36.pyc,, +pip\_vendor\distlib\__pycache__,, +pip\_vendor\chardet\langhebrewmodel.cpython-36.pyc,, +pip\_internal\commands\completion.cpython-36.pyc,, +pip\_vendor\html5lib\treebuilders\base.cpython-36.pyc,, +pip\_vendor\urllib3\__pycache__,, +pip\_vendor\pytoml\__pycache__,, +pip\_vendor\cachecontrol\wrapper.cpython-36.pyc,, +pip\_vendor\cachecontrol\adapter.cpython-36.pyc,, +pip\_internal\vcs\__init__.cpython-36.pyc,, +pip\_vendor\webencodings\__pycache__,, +pip\_internal\configuration.cpython-36.pyc,, +pip\_internal\commands\freeze.cpython-36.pyc,, +pip\_internal\cli\status_codes.cpython-36.pyc,, +pip\_vendor\certifi\__init__.cpython-36.pyc,, +pip\_vendor\html5lib\filters\optionaltags.cpython-36.pyc,, +pip\_vendor\certifi\__main__.cpython-36.pyc,, +pip\_vendor\pytoml\test.cpython-36.pyc,, +pip\_vendor\distlib\database.cpython-36.pyc,, +pip\_vendor\html5lib\treeadapters\genshi.cpython-36.pyc,, +pip\_vendor\cachecontrol\_cmd.cpython-36.pyc,, +pip\_internal\utils\compat.cpython-36.pyc,, +pip\_internal\utils\packaging.cpython-36.pyc,, +pip\_vendor\chardet\cli\__init__.cpython-36.pyc,, +pip\_vendor\pep517\compat.cpython-36.pyc,, +pip\_vendor\urllib3\packages\backports\__pycache__,, +pip\_vendor\requests\__init__.cpython-36.pyc,, +pip\_vendor\html5lib\_trie\__init__.cpython-36.pyc,, +pip\_vendor\requests\api.cpython-36.pyc,, +pip\_internal\operations\build\metadata.cpython-36.pyc,, +pip\_internal\models\candidate.cpython-36.pyc,, +pip\_vendor\packaging\specifiers.cpython-36.pyc,, +pip\_internal\utils\marker_files.cpython-36.pyc,, +pip\_internal\utils\virtualenv.cpython-36.pyc,, +pip\_vendor\html5lib\treebuilders\__init__.cpython-36.pyc,, +pip\_vendor\html5lib\_trie\__pycache__,, +pip\_vendor\chardet\eucjpprober.cpython-36.pyc,, +pip\_vendor\contextlib2.cpython-36.pyc,, +pip\_vendor\__init__.cpython-36.pyc,, +..\..\Scripts\pip-3.6.exe,, +pip\_vendor\urllib3\__init__.cpython-36.pyc,, +pip\_vendor\requests\help.cpython-36.pyc,, +pip\_internal\distributions\sdist.cpython-36.pyc,, +pip\_internal\utils\filetypes.cpython-36.pyc,, +pip\_vendor\html5lib\treeadapters\sax.cpython-36.pyc,, +pip\_vendor\progress\counter.cpython-36.pyc,, +pip\_vendor\chardet\big5prober.cpython-36.pyc,, +pip\_vendor\pep517\colorlog.cpython-36.pyc,, +pip\_internal\pyproject.cpython-36.pyc,, +pip\_internal\network\__init__.cpython-36.pyc,, +pip\_internal\commands\uninstall.cpython-36.pyc,, +pip\_vendor\cachecontrol\compat.cpython-36.pyc,, +pip\_vendor\html5lib\_ihatexml.cpython-36.pyc,, +pip\_internal\vcs\git.cpython-36.pyc,, +pip\_internal\models\target_python.cpython-36.pyc,, +pip\_internal\utils\ui.cpython-36.pyc,, +pip\_vendor\packaging\_compat.cpython-36.pyc,, +pip\_internal\operations\build\wheel_legacy.cpython-36.pyc,, +pip\_internal\wheel_builder.cpython-36.pyc,, +pip\_vendor\html5lib\treewalkers\__init__.cpython-36.pyc,, +pip\_vendor\requests\structures.cpython-36.pyc,, +pip\_internal\models\__init__.cpython-36.pyc,, +pip\_vendor\cachecontrol\__pycache__,, +pip\_internal\req\req_tracker.cpython-36.pyc,, +pip\_vendor\packaging\__about__.cpython-36.pyc,, +pip\_vendor\chardet\jpcntx.cpython-36.pyc,, +pip\_internal\build_env.cpython-36.pyc,, +pip\_vendor\html5lib\filters\inject_meta_charset.cpython-36.pyc,, +pip\_vendor\requests\__pycache__,, +pip\_vendor\packaging\tags.cpython-36.pyc,, +pip\_vendor\packaging\markers.cpython-36.pyc,, +pip\_internal\distributions\base.cpython-36.pyc,, +pip\_vendor\chardet\version.cpython-36.pyc,, +pip\_internal\commands\check.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\_securetransport\low_level.cpython-36.pyc,, +pip\_vendor\__pycache__,, +pip\_vendor\progress\bar.cpython-36.pyc,, +pip\_vendor\html5lib\serializer.cpython-36.pyc,, +pip\_vendor\progress\__pycache__,, +pip\_vendor\webencodings\__init__.cpython-36.pyc,, +pip\_internal\network\utils.cpython-36.pyc,, +pip\_vendor\urllib3\util\wait.cpython-36.pyc,, +pip\_vendor\distlib\_backport\__pycache__,, +pip\_vendor\distlib\scripts.cpython-36.pyc,, +pip\_vendor\html5lib\treebuilders\dom.cpython-36.pyc,, +pip\_internal\exceptions.cpython-36.pyc,, +..\..\Scripts\pip.exe,, +pip\_internal\operations\build\wheel.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\ntlmpool.cpython-36.pyc,, +pip\_internal\commands\__pycache__,, +pip\_vendor\msgpack\fallback.cpython-36.pyc,, +pip\_vendor\chardet\charsetgroupprober.cpython-36.pyc,, +pip\_vendor\distlib\index.cpython-36.pyc,, +pip\_vendor\html5lib\__init__.cpython-36.pyc,, +pip\_vendor\pep517\__pycache__,, +pip\_vendor\requests\packages.cpython-36.pyc,, +pip\_vendor\requests\status_codes.cpython-36.pyc,, +pip\_vendor\requests\certs.cpython-36.pyc,, +pip\_internal\utils\__pycache__,, +pip\_vendor\html5lib\treewalkers\etree.cpython-36.pyc,, +pip\_internal\index\__pycache__,, +pip\_vendor\progress\spinner.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\_securetransport\bindings.cpython-36.pyc,, +pip\_vendor\msgpack\_version.cpython-36.pyc,, +pip\_vendor\pytoml\parser.cpython-36.pyc,, +pip\_internal\utils\filesystem.cpython-36.pyc,, +pip\_vendor\webencodings\mklabels.cpython-36.pyc,, +pip\_internal\__init__.cpython-36.pyc,, +pip\_vendor\chardet\escsm.cpython-36.pyc,, +pip\_vendor\chardet\langhungarianmodel.cpython-36.pyc,, +pip\_vendor\webencodings\x_user_defined.cpython-36.pyc,, +pip\_internal\vcs\versioncontrol.cpython-36.pyc,, +pip\_internal\models\format_control.cpython-36.pyc,, +pip\_internal\utils\entrypoints.cpython-36.pyc,, +pip\_internal\commands\help.cpython-36.pyc,, +pip\_vendor\urllib3\util\request.cpython-36.pyc,, +pip\_internal\req\req_install.cpython-36.pyc,, +pip\_internal\commands\download.cpython-36.pyc,, +pip\_internal\models\search_scope.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\_appengine_environ.cpython-36.pyc,, +pip\_internal\network\xmlrpc.cpython-36.pyc,, +pip\_vendor\chardet\latin1prober.cpython-36.pyc,, +pip\_vendor\requests\auth.cpython-36.pyc,, +pip\_internal\utils\pkg_resources.cpython-36.pyc,, +pip\_vendor\html5lib\filters\lint.cpython-36.pyc,, +pip\_vendor\requests\__version__.cpython-36.pyc,, +pip\_internal\index\__init__.cpython-36.pyc,, +pip\_vendor\packaging\_structures.cpython-36.pyc,, +pip\_vendor\urllib3\packages\__pycache__,, +pip\_vendor\html5lib\__pycache__,, +pip\_vendor\pep517\envbuild.cpython-36.pyc,, +pip\_internal\operations\build\__init__.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\pyopenssl.cpython-36.pyc,, +pip\_vendor\distlib\resources.cpython-36.pyc,, +pip\_vendor\requests\sessions.cpython-36.pyc,, +pip\_vendor\pytoml\core.cpython-36.pyc,, +pip\_internal\utils\deprecation.cpython-36.pyc,, +pip\_vendor\colorama\__pycache__,, +pip\_vendor\urllib3\util\__pycache__,, +pip\_vendor\retrying.cpython-36.pyc,, +pip\_vendor\html5lib\_trie\datrie.cpython-36.pyc,, +pip\_vendor\progress\__init__.cpython-36.pyc,, +pip\_vendor\urllib3\response.cpython-36.pyc,, +pip\_internal\distributions\installed.cpython-36.pyc,, +pip\_vendor\pep517\wrappers.cpython-36.pyc,, +pip\_vendor\chardet\gb2312freq.cpython-36.pyc,, +pip\_vendor\colorama\winterm.cpython-36.pyc,, +pip\_internal\network\cache.cpython-36.pyc,, +pip\_internal\index\package_finder.cpython-36.pyc,, +pip\_internal\network\auth.cpython-36.pyc,, +pip\_vendor\chardet\sbcsgroupprober.cpython-36.pyc,, +pip\_vendor\chardet\langgreekmodel.cpython-36.pyc,, +pip\_vendor\colorama\initialise.cpython-36.pyc,, +pip\_vendor\msgpack\__init__.cpython-36.pyc,, +pip\_vendor\chardet\hebrewprober.cpython-36.pyc,, +pip\_vendor\colorama\ansitowin32.cpython-36.pyc,, +pip\_internal\commands\hash.cpython-36.pyc,, +pip\_vendor\distlib\manifest.cpython-36.pyc,, +pip\_vendor\appdirs.cpython-36.pyc,, +pip\_vendor\cachecontrol\caches\__pycache__,, +pip\__pycache__,, +pip\_vendor\chardet\euctwfreq.cpython-36.pyc,, +pip\_vendor\colorama\__init__.cpython-36.pyc,, +pip\_vendor\html5lib\treewalkers\dom.cpython-36.pyc,, +pip\_vendor\cachecontrol\serialize.cpython-36.pyc,, +pip\_vendor\chardet\sbcharsetprober.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\securetransport.cpython-36.pyc,, +pip\_vendor\urllib3\packages\six.cpython-36.pyc,, +pip\_internal\utils\inject_securetransport.cpython-36.pyc,, +pip\_vendor\chardet\euckrfreq.cpython-36.pyc,, +pip\_vendor\cachecontrol\filewrapper.cpython-36.pyc,, +pip\_vendor\cachecontrol\caches\redis_cache.cpython-36.pyc,, +pip\_internal\models\scheme.cpython-36.pyc,, +pip\_vendor\html5lib\filters\__pycache__,, +pip\_internal\req\__init__.cpython-36.pyc,, +pip\_vendor\chardet\chardistribution.cpython-36.pyc,, +pip\_vendor\six.cpython-36.pyc,, +pip\_vendor\idna\__pycache__,, +pip\_vendor\chardet\cp949prober.cpython-36.pyc,, +pip-20.0.2.virtualenv,, +pip\_vendor\chardet\langthaimodel.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\appengine.cpython-36.pyc,, +pip\_vendor\pkg_resources\__pycache__,, +pip\_vendor\urllib3\packages\ssl_match_hostname\__pycache__,, +pip\_vendor\urllib3\request.cpython-36.pyc,, +pip\_internal\network\session.cpython-36.pyc,, +pip\_vendor\urllib3\exceptions.cpython-36.pyc,, +..\..\Scripts\pip3.exe,, +pip\_internal\operations\check.cpython-36.pyc,, +pip\_vendor\cachecontrol\controller.cpython-36.pyc,, +pip\_vendor\distlib\metadata.cpython-36.pyc,, +pip\_vendor\cachecontrol\cache.cpython-36.pyc,, +pip\_vendor\colorama\win32.cpython-36.pyc,, +pip\_vendor\chardet\sjisprober.cpython-36.pyc,, +pip\_vendor\urllib3\poolmanager.cpython-36.pyc,, +pip\_vendor\pkg_resources\py31compat.cpython-36.pyc,, +pip\_vendor\packaging\__pycache__,, +pip\_vendor\distlib\_backport\sysconfig.cpython-36.pyc,, +pip\_vendor\html5lib\treeadapters\__init__.cpython-36.pyc,, +pip\_vendor\cachecontrol\heuristics.cpython-36.pyc,, +pip\_vendor\html5lib\treebuilders\__pycache__,, +pip\_vendor\urllib3\contrib\_securetransport\__init__.cpython-36.pyc,, +pip\_vendor\urllib3\util\ssl_.cpython-36.pyc,, +pip\_vendor\idna\__init__.cpython-36.pyc,, +pip\_vendor\idna\compat.cpython-36.pyc,, +pip\_vendor\urllib3\util\__init__.cpython-36.pyc,, +pip\_vendor\chardet\codingstatemachine.cpython-36.pyc,, +pip\_internal\vcs\mercurial.cpython-36.pyc,, +pip\_vendor\certifi\__pycache__,, +pip\_vendor\chardet\mbcsgroupprober.cpython-36.pyc,, +pip\_internal\operations\install\editable_legacy.cpython-36.pyc,, +pip\_vendor\pytoml\__init__.cpython-36.pyc,, +pip\_vendor\distlib\locators.cpython-36.pyc,, +pip\_vendor\pep517\build.cpython-36.pyc,, +pip\_vendor\html5lib\_inputstream.cpython-36.pyc,, +pip\_internal\vcs\bazaar.cpython-36.pyc,, +pip\_internal\commands\search.cpython-36.pyc,, +pip\_internal\utils\misc.cpython-36.pyc,, +pip\_internal\cache.cpython-36.pyc,, +pip\_internal\legacy_resolve.cpython-36.pyc,, +pip\_vendor\distlib\util.cpython-36.pyc,, +pip\_internal\operations\install\wheel.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\__init__.cpython-36.pyc,, +pip\_internal\self_outdated_check.cpython-36.pyc,, +pip\_vendor\html5lib\_trie\_base.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\socks.cpython-36.pyc,, +pip\_vendor\idna\intranges.cpython-36.pyc,, +pip\_internal\cli\command_context.cpython-36.pyc,, +pip\_internal\commands\__init__.cpython-36.pyc,, +pip\_internal\cli\parser.cpython-36.pyc,, +pip\_vendor\urllib3\packages\ssl_match_hostname\__init__.cpython-36.pyc,, +pip\_internal\utils\urls.cpython-36.pyc,, +pip\_vendor\idna\package_data.cpython-36.pyc,, +pip\_vendor\requests\hooks.cpython-36.pyc,, +pip\_internal\distributions\__pycache__,, +pip\_vendor\urllib3\_collections.cpython-36.pyc,, +pip\__init__.cpython-36.pyc,, +pip-20.0.2.dist-info\INSTALLER,, +pip\_vendor\pyparsing.cpython-36.pyc,, +pip\_vendor\html5lib\_trie\py.cpython-36.pyc,, +pip\_internal\commands\wheel.cpython-36.pyc,, +pip\_vendor\chardet\cli\chardetect.cpython-36.pyc,, +pip\_internal\cli\main_parser.cpython-36.pyc,, +pip\_vendor\html5lib\treewalkers\base.cpython-36.pyc,, +pip\_internal\operations\__init__.cpython-36.pyc,, +pip\_vendor\chardet\escprober.cpython-36.pyc,, +pip\_internal\commands\show.cpython-36.pyc,, +..\..\Scripts\pip3.6.exe,, +pip\_internal\operations\build\metadata_legacy.cpython-36.pyc,, +pip\_vendor\distlib\_backport\__init__.cpython-36.pyc,, +pip\_vendor\requests\utils.cpython-36.pyc,, +pip\_internal\distributions\wheel.cpython-36.pyc,, +pip\_vendor\urllib3\util\url.cpython-36.pyc,, +pip\_internal\main.cpython-36.pyc,, +pip\_vendor\chardet\cli\__pycache__,, +pip\_vendor\chardet\langturkishmodel.cpython-36.pyc,, +pip\_internal\cli\cmdoptions.cpython-36.pyc,, +pip\_vendor\chardet\charsetprober.cpython-36.pyc,, +pip\_vendor\requests\adapters.cpython-36.pyc,, +pip\_vendor\distlib\wheel.cpython-36.pyc,, +pip\_internal\utils\logging.cpython-36.pyc,, +pip\_vendor\msgpack\__pycache__,, +pip\_internal\network\__pycache__,, +pip\_vendor\chardet\__pycache__,, +pip\_vendor\html5lib\filters\__init__.cpython-36.pyc,, +pip\_internal\cli\base_command.cpython-36.pyc,, +pip\_vendor\html5lib\_tokenizer.cpython-36.pyc,, +pip\_vendor\webencodings\labels.cpython-36.pyc,, +pip\_vendor\urllib3\util\timeout.cpython-36.pyc,, +pip\_internal\__pycache__,, +pip\_vendor\pep517\check.cpython-36.pyc,, +pip\_vendor\html5lib\filters\base.cpython-36.pyc,, +pip\_internal\utils\unpacking.cpython-36.pyc,, +pip\_vendor\cachecontrol\__init__.cpython-36.pyc,, +pip\_vendor\html5lib\treewalkers\etree_lxml.cpython-36.pyc,, +pip\_internal\commands\list.cpython-36.pyc,, +pip\_vendor\html5lib\treewalkers\__pycache__,, +pip\_vendor\distlib\__init__.cpython-36.pyc,, +pip\_internal\utils\wheel.cpython-36.pyc,, +pip\_vendor\requests\exceptions.cpython-36.pyc,, +pip\_vendor\msgpack\exceptions.cpython-36.pyc,, +pip\_vendor\urllib3\packages\backports\makefile.cpython-36.pyc,, +pip\_vendor\html5lib\filters\sanitizer.cpython-36.pyc,, +pip\_vendor\idna\core.cpython-36.pyc,, +pip\_internal\cli\req_command.cpython-36.pyc,, +pip\_vendor\idna\idnadata.cpython-36.pyc,, +pip\_vendor\chardet\enums.cpython-36.pyc,, +pip\_vendor\distlib\_backport\misc.cpython-36.pyc,, +pip\_internal\network\download.cpython-36.pyc,, +pip\_vendor\pep517\_in_process.cpython-36.pyc,, +pip\_internal\operations\freeze.cpython-36.pyc,, +pip\_vendor\html5lib\treebuilders\etree_lxml.cpython-36.pyc,, +pip\_vendor\urllib3\filepost.cpython-36.pyc,, +pip\_internal\operations\install\__init__.cpython-36.pyc,, +pip\_internal\utils\glibc.cpython-36.pyc,, +pip\_vendor\packaging\utils.cpython-36.pyc,, +pip\_internal\vcs\subversion.cpython-36.pyc,, +pip\_vendor\requests\compat.cpython-36.pyc,, +pip\_vendor\colorama\ansi.cpython-36.pyc,, +pip\_vendor\pep517\__init__.cpython-36.pyc,, +pip\_vendor\urllib3\util\response.cpython-36.pyc,, +pip\_vendor\urllib3\util\retry.cpython-36.pyc,, +pip\_vendor\chardet\utf8prober.cpython-36.pyc,, +pip\_vendor\pytoml\writer.cpython-36.pyc,, +pip\_vendor\distlib\_backport\shutil.cpython-36.pyc,, +pip\_vendor\requests\models.cpython-36.pyc,, +pip\_vendor\urllib3\util\queue.cpython-36.pyc,, +pip\_vendor\urllib3\fields.cpython-36.pyc,, +pip\_vendor\urllib3\contrib\__pycache__,, +pip\_internal\req\req_file.cpython-36.pyc,, +pip\_internal\locations.cpython-36.pyc,, +pip\_internal\models\wheel.cpython-36.pyc,, +pip\_internal\req\constructors.cpython-36.pyc,, +pip\_internal\req\req_set.cpython-36.pyc,, +pip\_vendor\packaging\_typing.cpython-36.pyc,, +pip\_vendor\cachecontrol\caches\file_cache.cpython-36.pyc,, +pip\_vendor\packaging\version.cpython-36.pyc,, +pip\_internal\index\collector.cpython-36.pyc,, +pip\_vendor\chardet\langcyrillicmodel.cpython-36.pyc,, +pip\_internal\cli\__pycache__,, +pip\_vendor\urllib3\connectionpool.cpython-36.pyc,, +pip\_internal\utils\appdirs.cpython-36.pyc,, +pip\_vendor\chardet\gb2312prober.cpython-36.pyc,, +pip\_vendor\chardet\jisfreq.cpython-36.pyc,, +pip\_vendor\distro.cpython-36.pyc,, +pip\_vendor\urllib3\packages\ssl_match_hostname\_implementation.cpython-36.pyc,, +pip\_vendor\webencodings\tests.cpython-36.pyc,, +pip\_vendor\certifi\core.cpython-36.pyc,, +pip\_vendor\chardet\mbcssm.cpython-36.pyc,, +pip\_internal\utils\typing.cpython-36.pyc,, +pip\_internal\utils\distutils_args.cpython-36.pyc,, +pip\_internal\cli\autocompletion.cpython-36.pyc,, +pip\_vendor\html5lib\treewalkers\genshi.cpython-36.pyc,, +pip\_vendor\ipaddress.cpython-36.pyc,, +pip\_vendor\packaging\__init__.cpython-36.pyc,, +pip\_vendor\idna\codec.cpython-36.pyc,, +pip\_internal\models\index.cpython-36.pyc,, +pip\_internal\models\selection_prefs.cpython-36.pyc,, +pip\_internal\models\__pycache__,, +pip\_vendor\chardet\compat.cpython-36.pyc,, +pip\_vendor\chardet\langbulgarianmodel.cpython-36.pyc,, +pip\_internal\operations\build\__pycache__,, +pip\_vendor\chardet\mbcharsetprober.cpython-36.pyc,, +pip\_internal\utils\subprocess.cpython-36.pyc,, +pip\_vendor\pkg_resources\__init__.cpython-36.pyc,, +pip\_vendor\idna\uts46data.cpython-36.pyc,, +pip\_internal\req\__pycache__,, +pip\_vendor\html5lib\treeadapters\__pycache__,, \ No newline at end of file diff --git a/Lib/site-packages/pip-20.0.2.dist-info/WHEEL b/Lib/site-packages/pip-20.0.2.dist-info/WHEEL new file mode 100644 index 0000000..8b701e9 --- /dev/null +++ b/Lib/site-packages/pip-20.0.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.33.6) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/Lib/site-packages/pip-20.0.2.dist-info/entry_points.txt b/Lib/site-packages/pip-20.0.2.dist-info/entry_points.txt new file mode 100644 index 0000000..d48bd8a --- /dev/null +++ b/Lib/site-packages/pip-20.0.2.dist-info/entry_points.txt @@ -0,0 +1,5 @@ +[console_scripts] +pip = pip._internal.cli.main:main +pip3 = pip._internal.cli.main:main +pip3.8 = pip._internal.cli.main:main + diff --git a/Lib/site-packages/pip-20.0.2.dist-info/top_level.txt b/Lib/site-packages/pip-20.0.2.dist-info/top_level.txt new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/Lib/site-packages/pip-20.0.2.dist-info/top_level.txt @@ -0,0 +1 @@ +pip diff --git a/Lib/site-packages/pip-20.0.2.virtualenv b/Lib/site-packages/pip-20.0.2.virtualenv new file mode 100644 index 0000000..e69de29 diff --git a/Lib/site-packages/pip/__init__.py b/Lib/site-packages/pip/__init__.py new file mode 100644 index 0000000..827a4e2 --- /dev/null +++ b/Lib/site-packages/pip/__init__.py @@ -0,0 +1,18 @@ +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional + + +__version__ = "20.0.2" + + +def main(args=None): + # type: (Optional[List[str]]) -> int + """This is an internal API only meant for use by pip's own console scripts. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/Lib/site-packages/pip/__main__.py b/Lib/site-packages/pip/__main__.py new file mode 100644 index 0000000..e83b9e0 --- /dev/null +++ b/Lib/site-packages/pip/__main__.py @@ -0,0 +1,19 @@ +from __future__ import absolute_import + +import os +import sys + +# If we are running from a wheel, add the wheel to sys.path +# This allows the usage python pip-*.whl/pip install pip-*.whl +if __package__ == '': + # __file__ is pip-*.whl/pip/__main__.py + # first dirname call strips of '/__main__.py', second strips off '/pip' + # Resulting path is the name of the wheel itself + # Add that to sys.path so we can import pip + path = os.path.dirname(os.path.dirname(__file__)) + sys.path.insert(0, path) + +from pip._internal.cli.main import main as _main # isort:skip # noqa + +if __name__ == '__main__': + sys.exit(_main()) diff --git a/Lib/site-packages/pip/_internal/__init__.py b/Lib/site-packages/pip/_internal/__init__.py new file mode 100644 index 0000000..3aa8a46 --- /dev/null +++ b/Lib/site-packages/pip/_internal/__init__.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +import pip._internal.utils.inject_securetransport # noqa +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional, List + + +def main(args=None): + # type: (Optional[List[str]]) -> int + """This is preserved for old console scripts that may still be referencing + it. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/Lib/site-packages/pip/_internal/build_env.py b/Lib/site-packages/pip/_internal/build_env.py new file mode 100644 index 0000000..f55f0e6 --- /dev/null +++ b/Lib/site-packages/pip/_internal/build_env.py @@ -0,0 +1,221 @@ +"""Build Environment used for isolation during sdist building +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False +# mypy: disallow-untyped-defs=False + +import logging +import os +import sys +import textwrap +from collections import OrderedDict +from distutils.sysconfig import get_python_lib +from sysconfig import get_paths + +from pip._vendor.pkg_resources import Requirement, VersionConflict, WorkingSet + +from pip import __file__ as pip_location +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.ui import open_spinner + +if MYPY_CHECK_RUNNING: + from typing import Tuple, Set, Iterable, Optional, List + from pip._internal.index.package_finder import PackageFinder + +logger = logging.getLogger(__name__) + + +class _Prefix: + + def __init__(self, path): + # type: (str) -> None + self.path = path + self.setup = False + self.bin_dir = get_paths( + 'nt' if os.name == 'nt' else 'posix_prefix', + vars={'base': path, 'platbase': path} + )['scripts'] + # Note: prefer distutils' sysconfig to get the + # library paths so PyPy is correctly supported. + purelib = get_python_lib(plat_specific=False, prefix=path) + platlib = get_python_lib(plat_specific=True, prefix=path) + if purelib == platlib: + self.lib_dirs = [purelib] + else: + self.lib_dirs = [purelib, platlib] + + +class BuildEnvironment(object): + """Creates and manages an isolated environment to install build deps + """ + + def __init__(self): + # type: () -> None + self._temp_dir = TempDirectory(kind="build-env") + + self._prefixes = OrderedDict(( + (name, _Prefix(os.path.join(self._temp_dir.path, name))) + for name in ('normal', 'overlay') + )) + + self._bin_dirs = [] # type: List[str] + self._lib_dirs = [] # type: List[str] + for prefix in reversed(list(self._prefixes.values())): + self._bin_dirs.append(prefix.bin_dir) + self._lib_dirs.extend(prefix.lib_dirs) + + # Customize site to: + # - ensure .pth files are honored + # - prevent access to system site packages + system_sites = { + os.path.normcase(site) for site in ( + get_python_lib(plat_specific=False), + get_python_lib(plat_specific=True), + ) + } + self._site_dir = os.path.join(self._temp_dir.path, 'site') + if not os.path.exists(self._site_dir): + os.mkdir(self._site_dir) + with open(os.path.join(self._site_dir, 'sitecustomize.py'), 'w') as fp: + fp.write(textwrap.dedent( + ''' + import os, site, sys + + # First, drop system-sites related paths. + original_sys_path = sys.path[:] + known_paths = set() + for path in {system_sites!r}: + site.addsitedir(path, known_paths=known_paths) + system_paths = set( + os.path.normcase(path) + for path in sys.path[len(original_sys_path):] + ) + original_sys_path = [ + path for path in original_sys_path + if os.path.normcase(path) not in system_paths + ] + sys.path = original_sys_path + + # Second, add lib directories. + # ensuring .pth file are processed. + for path in {lib_dirs!r}: + assert not path in sys.path + site.addsitedir(path) + ''' + ).format(system_sites=system_sites, lib_dirs=self._lib_dirs)) + + def __enter__(self): + self._save_env = { + name: os.environ.get(name, None) + for name in ('PATH', 'PYTHONNOUSERSITE', 'PYTHONPATH') + } + + path = self._bin_dirs[:] + old_path = self._save_env['PATH'] + if old_path: + path.extend(old_path.split(os.pathsep)) + + pythonpath = [self._site_dir] + + os.environ.update({ + 'PATH': os.pathsep.join(path), + 'PYTHONNOUSERSITE': '1', + 'PYTHONPATH': os.pathsep.join(pythonpath), + }) + + def __exit__(self, exc_type, exc_val, exc_tb): + for varname, old_value in self._save_env.items(): + if old_value is None: + os.environ.pop(varname, None) + else: + os.environ[varname] = old_value + + def cleanup(self): + # type: () -> None + self._temp_dir.cleanup() + + def check_requirements(self, reqs): + # type: (Iterable[str]) -> Tuple[Set[Tuple[str, str]], Set[str]] + """Return 2 sets: + - conflicting requirements: set of (installed, wanted) reqs tuples + - missing requirements: set of reqs + """ + missing = set() + conflicting = set() + if reqs: + ws = WorkingSet(self._lib_dirs) + for req in reqs: + try: + if ws.find(Requirement.parse(req)) is None: + missing.add(req) + except VersionConflict as e: + conflicting.add((str(e.args[0].as_requirement()), + str(e.args[1]))) + return conflicting, missing + + def install_requirements( + self, + finder, # type: PackageFinder + requirements, # type: Iterable[str] + prefix_as_string, # type: str + message # type: Optional[str] + ): + # type: (...) -> None + prefix = self._prefixes[prefix_as_string] + assert not prefix.setup + prefix.setup = True + if not requirements: + return + args = [ + sys.executable, os.path.dirname(pip_location), 'install', + '--ignore-installed', '--no-user', '--prefix', prefix.path, + '--no-warn-script-location', + ] # type: List[str] + if logger.getEffectiveLevel() <= logging.DEBUG: + args.append('-v') + for format_control in ('no_binary', 'only_binary'): + formats = getattr(finder.format_control, format_control) + args.extend(('--' + format_control.replace('_', '-'), + ','.join(sorted(formats or {':none:'})))) + + index_urls = finder.index_urls + if index_urls: + args.extend(['-i', index_urls[0]]) + for extra_index in index_urls[1:]: + args.extend(['--extra-index-url', extra_index]) + else: + args.append('--no-index') + for link in finder.find_links: + args.extend(['--find-links', link]) + + for host in finder.trusted_hosts: + args.extend(['--trusted-host', host]) + if finder.allow_all_prereleases: + args.append('--pre') + args.append('--') + args.extend(requirements) + with open_spinner(message) as spinner: + call_subprocess(args, spinner=spinner) + + +class NoOpBuildEnvironment(BuildEnvironment): + """A no-op drop-in replacement for BuildEnvironment + """ + + def __init__(self): + pass + + def __enter__(self): + pass + + def __exit__(self, exc_type, exc_val, exc_tb): + pass + + def cleanup(self): + pass + + def install_requirements(self, finder, requirements, prefix, message): + raise NotImplementedError() diff --git a/Lib/site-packages/pip/_internal/cache.py b/Lib/site-packages/pip/_internal/cache.py new file mode 100644 index 0000000..abecd78 --- /dev/null +++ b/Lib/site-packages/pip/_internal/cache.py @@ -0,0 +1,329 @@ +"""Cache Management +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import hashlib +import json +import logging +import os + +from pip._vendor.packaging.tags import interpreter_name, interpreter_version +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import InvalidWheelFilename +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import path_to_url + +if MYPY_CHECK_RUNNING: + from typing import Optional, Set, List, Any, Dict + + from pip._vendor.packaging.tags import Tag + + from pip._internal.models.format_control import FormatControl + +logger = logging.getLogger(__name__) + + +def _hash_dict(d): + # type: (Dict[str, str]) -> str + """Return a stable sha224 of a dictionary.""" + s = json.dumps(d, sort_keys=True, separators=(",", ":"), ensure_ascii=True) + return hashlib.sha224(s.encode("ascii")).hexdigest() + + +class Cache(object): + """An abstract class - provides cache directories for data from links + + + :param cache_dir: The root of the cache. + :param format_control: An object of FormatControl class to limit + binaries being read from the cache. + :param allowed_formats: which formats of files the cache should store. + ('binary' and 'source' are the only allowed values) + """ + + def __init__(self, cache_dir, format_control, allowed_formats): + # type: (str, FormatControl, Set[str]) -> None + super(Cache, self).__init__() + assert not cache_dir or os.path.isabs(cache_dir) + self.cache_dir = cache_dir or None + self.format_control = format_control + self.allowed_formats = allowed_formats + + _valid_formats = {"source", "binary"} + assert self.allowed_formats.union(_valid_formats) == _valid_formats + + def _get_cache_path_parts_legacy(self, link): + # type: (Link) -> List[str] + """Get parts of part that must be os.path.joined with cache_dir + + Legacy cache key (pip < 20) for compatibility with older caches. + """ + + # We want to generate an url to use as our cache key, we don't want to + # just re-use the URL because it might have other items in the fragment + # and we don't care about those. + key_parts = [link.url_without_fragment] + if link.hash_name is not None and link.hash is not None: + key_parts.append("=".join([link.hash_name, link.hash])) + key_url = "#".join(key_parts) + + # Encode our key url with sha224, we'll use this because it has similar + # security properties to sha256, but with a shorter total output (and + # thus less secure). However the differences don't make a lot of + # difference for our use case here. + hashed = hashlib.sha224(key_url.encode()).hexdigest() + + # We want to nest the directories some to prevent having a ton of top + # level directories where we might run out of sub directories on some + # FS. + parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]] + + return parts + + def _get_cache_path_parts(self, link): + # type: (Link) -> List[str] + """Get parts of part that must be os.path.joined with cache_dir + """ + + # We want to generate an url to use as our cache key, we don't want to + # just re-use the URL because it might have other items in the fragment + # and we don't care about those. + key_parts = {"url": link.url_without_fragment} + if link.hash_name is not None and link.hash is not None: + key_parts[link.hash_name] = link.hash + if link.subdirectory_fragment: + key_parts["subdirectory"] = link.subdirectory_fragment + + # Include interpreter name, major and minor version in cache key + # to cope with ill-behaved sdists that build a different wheel + # depending on the python version their setup.py is being run on, + # and don't encode the difference in compatibility tags. + # https://github.com/pypa/pip/issues/7296 + key_parts["interpreter_name"] = interpreter_name() + key_parts["interpreter_version"] = interpreter_version() + + # Encode our key url with sha224, we'll use this because it has similar + # security properties to sha256, but with a shorter total output (and + # thus less secure). However the differences don't make a lot of + # difference for our use case here. + hashed = _hash_dict(key_parts) + + # We want to nest the directories some to prevent having a ton of top + # level directories where we might run out of sub directories on some + # FS. + parts = [hashed[:2], hashed[2:4], hashed[4:6], hashed[6:]] + + return parts + + def _get_candidates(self, link, canonical_package_name): + # type: (Link, Optional[str]) -> List[Any] + can_not_cache = ( + not self.cache_dir or + not canonical_package_name or + not link + ) + if can_not_cache: + return [] + + formats = self.format_control.get_allowed_formats( + canonical_package_name + ) + if not self.allowed_formats.intersection(formats): + return [] + + candidates = [] + path = self.get_path_for_link(link) + if os.path.isdir(path): + for candidate in os.listdir(path): + candidates.append((candidate, path)) + # TODO remove legacy path lookup in pip>=21 + legacy_path = self.get_path_for_link_legacy(link) + if os.path.isdir(legacy_path): + for candidate in os.listdir(legacy_path): + candidates.append((candidate, legacy_path)) + return candidates + + def get_path_for_link_legacy(self, link): + # type: (Link) -> str + raise NotImplementedError() + + def get_path_for_link(self, link): + # type: (Link) -> str + """Return a directory to store cached items in for link. + """ + raise NotImplementedError() + + def get( + self, + link, # type: Link + package_name, # type: Optional[str] + supported_tags, # type: List[Tag] + ): + # type: (...) -> Link + """Returns a link to a cached item if it exists, otherwise returns the + passed link. + """ + raise NotImplementedError() + + def cleanup(self): + # type: () -> None + pass + + +class SimpleWheelCache(Cache): + """A cache of wheels for future installs. + """ + + def __init__(self, cache_dir, format_control): + # type: (str, FormatControl) -> None + super(SimpleWheelCache, self).__init__( + cache_dir, format_control, {"binary"} + ) + + def get_path_for_link_legacy(self, link): + # type: (Link) -> str + parts = self._get_cache_path_parts_legacy(link) + return os.path.join(self.cache_dir, "wheels", *parts) + + def get_path_for_link(self, link): + # type: (Link) -> str + """Return a directory to store cached wheels for link + + Because there are M wheels for any one sdist, we provide a directory + to cache them in, and then consult that directory when looking up + cache hits. + + We only insert things into the cache if they have plausible version + numbers, so that we don't contaminate the cache with things that were + not unique. E.g. ./package might have dozens of installs done for it + and build a version of 0.0...and if we built and cached a wheel, we'd + end up using the same wheel even if the source has been edited. + + :param link: The link of the sdist for which this will cache wheels. + """ + parts = self._get_cache_path_parts(link) + + # Store wheels within the root cache_dir + return os.path.join(self.cache_dir, "wheels", *parts) + + def get( + self, + link, # type: Link + package_name, # type: Optional[str] + supported_tags, # type: List[Tag] + ): + # type: (...) -> Link + candidates = [] + + if not package_name: + return link + + canonical_package_name = canonicalize_name(package_name) + for wheel_name, wheel_dir in self._get_candidates( + link, canonical_package_name + ): + try: + wheel = Wheel(wheel_name) + except InvalidWheelFilename: + continue + if canonicalize_name(wheel.name) != canonical_package_name: + logger.debug( + "Ignoring cached wheel {} for {} as it " + "does not match the expected distribution name {}.".format( + wheel_name, link, package_name + ) + ) + continue + if not wheel.supported(supported_tags): + # Built for a different python/arch/etc + continue + candidates.append( + ( + wheel.support_index_min(supported_tags), + wheel_name, + wheel_dir, + ) + ) + + if not candidates: + return link + + _, wheel_name, wheel_dir = min(candidates) + return Link(path_to_url(os.path.join(wheel_dir, wheel_name))) + + +class EphemWheelCache(SimpleWheelCache): + """A SimpleWheelCache that creates it's own temporary cache directory + """ + + def __init__(self, format_control): + # type: (FormatControl) -> None + self._temp_dir = TempDirectory(kind="ephem-wheel-cache") + + super(EphemWheelCache, self).__init__( + self._temp_dir.path, format_control + ) + + def cleanup(self): + # type: () -> None + self._temp_dir.cleanup() + + +class WheelCache(Cache): + """Wraps EphemWheelCache and SimpleWheelCache into a single Cache + + This Cache allows for gracefully degradation, using the ephem wheel cache + when a certain link is not found in the simple wheel cache first. + """ + + def __init__(self, cache_dir, format_control): + # type: (str, FormatControl) -> None + super(WheelCache, self).__init__( + cache_dir, format_control, {'binary'} + ) + self._wheel_cache = SimpleWheelCache(cache_dir, format_control) + self._ephem_cache = EphemWheelCache(format_control) + + def get_path_for_link_legacy(self, link): + # type: (Link) -> str + return self._wheel_cache.get_path_for_link_legacy(link) + + def get_path_for_link(self, link): + # type: (Link) -> str + return self._wheel_cache.get_path_for_link(link) + + def get_ephem_path_for_link(self, link): + # type: (Link) -> str + return self._ephem_cache.get_path_for_link(link) + + def get( + self, + link, # type: Link + package_name, # type: Optional[str] + supported_tags, # type: List[Tag] + ): + # type: (...) -> Link + retval = self._wheel_cache.get( + link=link, + package_name=package_name, + supported_tags=supported_tags, + ) + if retval is not link: + return retval + + return self._ephem_cache.get( + link=link, + package_name=package_name, + supported_tags=supported_tags, + ) + + def cleanup(self): + # type: () -> None + self._wheel_cache.cleanup() + self._ephem_cache.cleanup() diff --git a/Lib/site-packages/pip/_internal/cli/__init__.py b/Lib/site-packages/pip/_internal/cli/__init__.py new file mode 100644 index 0000000..e589bb9 --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/__init__.py @@ -0,0 +1,4 @@ +"""Subpackage containing all of pip's command line interface related code +""" + +# This file intentionally does not import submodules diff --git a/Lib/site-packages/pip/_internal/cli/autocompletion.py b/Lib/site-packages/pip/_internal/cli/autocompletion.py new file mode 100644 index 0000000..329de60 --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/autocompletion.py @@ -0,0 +1,164 @@ +"""Logic that powers autocompletion installed by ``pip completion``. +""" + +import optparse +import os +import sys +from itertools import chain + +from pip._internal.cli.main_parser import create_main_parser +from pip._internal.commands import commands_dict, create_command +from pip._internal.utils.misc import get_installed_distributions +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Any, Iterable, List, Optional + + +def autocomplete(): + # type: () -> None + """Entry Point for completion of main and subcommand options. + """ + # Don't complete if user hasn't sourced bash_completion file. + if 'PIP_AUTO_COMPLETE' not in os.environ: + return + cwords = os.environ['COMP_WORDS'].split()[1:] + cword = int(os.environ['COMP_CWORD']) + try: + current = cwords[cword - 1] + except IndexError: + current = '' + + parser = create_main_parser() + subcommands = list(commands_dict) + options = [] + + # subcommand + subcommand_name = None # type: Optional[str] + for word in cwords: + if word in subcommands: + subcommand_name = word + break + # subcommand options + if subcommand_name is not None: + # special case: 'help' subcommand has no options + if subcommand_name == 'help': + sys.exit(1) + # special case: list locally installed dists for show and uninstall + should_list_installed = ( + subcommand_name in ['show', 'uninstall'] and + not current.startswith('-') + ) + if should_list_installed: + installed = [] + lc = current.lower() + for dist in get_installed_distributions(local_only=True): + if dist.key.startswith(lc) and dist.key not in cwords[1:]: + installed.append(dist.key) + # if there are no dists installed, fall back to option completion + if installed: + for dist in installed: + print(dist) + sys.exit(1) + + subcommand = create_command(subcommand_name) + + for opt in subcommand.parser.option_list_all: + if opt.help != optparse.SUPPRESS_HELP: + for opt_str in opt._long_opts + opt._short_opts: + options.append((opt_str, opt.nargs)) + + # filter out previously specified options from available options + prev_opts = [x.split('=')[0] for x in cwords[1:cword - 1]] + options = [(x, v) for (x, v) in options if x not in prev_opts] + # filter options by current input + options = [(k, v) for k, v in options if k.startswith(current)] + # get completion type given cwords and available subcommand options + completion_type = get_path_completion_type( + cwords, cword, subcommand.parser.option_list_all, + ) + # get completion files and directories if ``completion_type`` is + # ````, ``

`` or ```` + if completion_type: + paths = auto_complete_paths(current, completion_type) + options = [(path, 0) for path in paths] + for option in options: + opt_label = option[0] + # append '=' to options which require args + if option[1] and option[0][:2] == "--": + opt_label += '=' + print(opt_label) + else: + # show main parser options only when necessary + + opts = [i.option_list for i in parser.option_groups] + opts.append(parser.option_list) + flattened_opts = chain.from_iterable(opts) + if current.startswith('-'): + for opt in flattened_opts: + if opt.help != optparse.SUPPRESS_HELP: + subcommands += opt._long_opts + opt._short_opts + else: + # get completion type given cwords and all available options + completion_type = get_path_completion_type(cwords, cword, + flattened_opts) + if completion_type: + subcommands = list(auto_complete_paths(current, + completion_type)) + + print(' '.join([x for x in subcommands if x.startswith(current)])) + sys.exit(1) + + +def get_path_completion_type(cwords, cword, opts): + # type: (List[str], int, Iterable[Any]) -> Optional[str] + """Get the type of path completion (``file``, ``dir``, ``path`` or None) + + :param cwords: same as the environmental variable ``COMP_WORDS`` + :param cword: same as the environmental variable ``COMP_CWORD`` + :param opts: The available options to check + :return: path completion type (``file``, ``dir``, ``path`` or None) + """ + if cword < 2 or not cwords[cword - 2].startswith('-'): + return None + for opt in opts: + if opt.help == optparse.SUPPRESS_HELP: + continue + for o in str(opt).split('/'): + if cwords[cword - 2].split('=')[0] == o: + if not opt.metavar or any( + x in ('path', 'file', 'dir') + for x in opt.metavar.split('/')): + return opt.metavar + return None + + +def auto_complete_paths(current, completion_type): + # type: (str, str) -> Iterable[str] + """If ``completion_type`` is ``file`` or ``path``, list all regular files + and directories starting with ``current``; otherwise only list directories + starting with ``current``. + + :param current: The word to be completed + :param completion_type: path completion type(`file`, `path` or `dir`)i + :return: A generator of regular files and/or directories + """ + directory, filename = os.path.split(current) + current_path = os.path.abspath(directory) + # Don't complete paths if they can't be accessed + if not os.access(current_path, os.R_OK): + return + filename = os.path.normcase(filename) + # list all files that start with ``filename`` + file_list = (x for x in os.listdir(current_path) + if os.path.normcase(x).startswith(filename)) + for f in file_list: + opt = os.path.join(current_path, f) + comp_file = os.path.normcase(os.path.join(directory, f)) + # complete regular files when there is not ```` after option + # complete directories when there is ````, ```` or + # ````after option + if completion_type != 'dir' and os.path.isfile(opt): + yield comp_file + elif os.path.isdir(opt): + yield os.path.join(comp_file, '') diff --git a/Lib/site-packages/pip/_internal/cli/base_command.py b/Lib/site-packages/pip/_internal/cli/base_command.py new file mode 100644 index 0000000..628faa3 --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/base_command.py @@ -0,0 +1,226 @@ +"""Base Command class, and related routines""" + +from __future__ import absolute_import, print_function + +import logging +import logging.config +import optparse +import os +import platform +import sys +import traceback + +from pip._internal.cli import cmdoptions +from pip._internal.cli.command_context import CommandContextMixIn +from pip._internal.cli.parser import ( + ConfigOptionParser, + UpdatingDefaultsHelpFormatter, +) +from pip._internal.cli.status_codes import ( + ERROR, + PREVIOUS_BUILD_DIR_ERROR, + SUCCESS, + UNKNOWN_ERROR, + VIRTUALENV_NOT_FOUND, +) +from pip._internal.exceptions import ( + BadCommand, + CommandError, + InstallationError, + PreviousBuildDirError, + UninstallationError, +) +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.filesystem import check_path_owner +from pip._internal.utils.logging import BrokenStdoutLoggingError, setup_logging +from pip._internal.utils.misc import get_prog, normalize_path +from pip._internal.utils.temp_dir import global_tempdir_manager +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.virtualenv import running_under_virtualenv + +if MYPY_CHECK_RUNNING: + from typing import List, Tuple, Any + from optparse import Values + +__all__ = ['Command'] + +logger = logging.getLogger(__name__) + + +class Command(CommandContextMixIn): + usage = None # type: str + ignore_require_venv = False # type: bool + + def __init__(self, name, summary, isolated=False): + # type: (str, str, bool) -> None + super(Command, self).__init__() + parser_kw = { + 'usage': self.usage, + 'prog': '%s %s' % (get_prog(), name), + 'formatter': UpdatingDefaultsHelpFormatter(), + 'add_help_option': False, + 'name': name, + 'description': self.__doc__, + 'isolated': isolated, + } + + self.name = name + self.summary = summary + self.parser = ConfigOptionParser(**parser_kw) + + # Commands should add options to this option group + optgroup_name = '%s Options' % self.name.capitalize() + self.cmd_opts = optparse.OptionGroup(self.parser, optgroup_name) + + # Add the general options + gen_opts = cmdoptions.make_option_group( + cmdoptions.general_group, + self.parser, + ) + self.parser.add_option_group(gen_opts) + + def handle_pip_version_check(self, options): + # type: (Values) -> None + """ + This is a no-op so that commands by default do not do the pip version + check. + """ + # Make sure we do the pip version check if the index_group options + # are present. + assert not hasattr(options, 'no_index') + + def run(self, options, args): + # type: (Values, List[Any]) -> Any + raise NotImplementedError + + def parse_args(self, args): + # type: (List[str]) -> Tuple[Any, Any] + # factored out for testability + return self.parser.parse_args(args) + + def main(self, args): + # type: (List[str]) -> int + try: + with self.main_context(): + return self._main(args) + finally: + logging.shutdown() + + def _main(self, args): + # type: (List[str]) -> int + # Intentionally set as early as possible so globally-managed temporary + # directories are available to the rest of the code. + self.enter_context(global_tempdir_manager()) + + options, args = self.parse_args(args) + + # Set verbosity so that it can be used elsewhere. + self.verbosity = options.verbose - options.quiet + + level_number = setup_logging( + verbosity=self.verbosity, + no_color=options.no_color, + user_log_file=options.log, + ) + + if ( + sys.version_info[:2] == (2, 7) and + not options.no_python_version_warning + ): + message = ( + "A future version of pip will drop support for Python 2.7. " + "More details about Python 2 support in pip, can be found at " + "https://pip.pypa.io/en/latest/development/release-process/#python-2-support" # noqa + ) + if platform.python_implementation() == "CPython": + message = ( + "Python 2.7 reached the end of its life on January " + "1st, 2020. Please upgrade your Python as Python 2.7 " + "is no longer maintained. " + ) + message + deprecated(message, replacement=None, gone_in=None) + + if options.skip_requirements_regex: + deprecated( + "--skip-requirements-regex is unsupported and will be removed", + replacement=( + "manage requirements/constraints files explicitly, " + "possibly generating them from metadata" + ), + gone_in="20.1", + issue=7297, + ) + + # TODO: Try to get these passing down from the command? + # without resorting to os.environ to hold these. + # This also affects isolated builds and it should. + + if options.no_input: + os.environ['PIP_NO_INPUT'] = '1' + + if options.exists_action: + os.environ['PIP_EXISTS_ACTION'] = ' '.join(options.exists_action) + + if options.require_venv and not self.ignore_require_venv: + # If a venv is required check if it can really be found + if not running_under_virtualenv(): + logger.critical( + 'Could not find an activated virtualenv (required).' + ) + sys.exit(VIRTUALENV_NOT_FOUND) + + if options.cache_dir: + options.cache_dir = normalize_path(options.cache_dir) + if not check_path_owner(options.cache_dir): + logger.warning( + "The directory '%s' or its parent directory is not owned " + "or is not writable by the current user. The cache " + "has been disabled. Check the permissions and owner of " + "that directory. If executing pip with sudo, you may want " + "sudo's -H flag.", + options.cache_dir, + ) + options.cache_dir = None + + try: + status = self.run(options, args) + # FIXME: all commands should return an exit status + # and when it is done, isinstance is not needed anymore + if isinstance(status, int): + return status + except PreviousBuildDirError as exc: + logger.critical(str(exc)) + logger.debug('Exception information:', exc_info=True) + + return PREVIOUS_BUILD_DIR_ERROR + except (InstallationError, UninstallationError, BadCommand) as exc: + logger.critical(str(exc)) + logger.debug('Exception information:', exc_info=True) + + return ERROR + except CommandError as exc: + logger.critical('%s', exc) + logger.debug('Exception information:', exc_info=True) + + return ERROR + except BrokenStdoutLoggingError: + # Bypass our logger and write any remaining messages to stderr + # because stdout no longer works. + print('ERROR: Pipe to stdout was broken', file=sys.stderr) + if level_number <= logging.DEBUG: + traceback.print_exc(file=sys.stderr) + + return ERROR + except KeyboardInterrupt: + logger.critical('Operation cancelled by user') + logger.debug('Exception information:', exc_info=True) + + return ERROR + except BaseException: + logger.critical('Exception:', exc_info=True) + + return UNKNOWN_ERROR + finally: + self.handle_pip_version_check(options) + + return SUCCESS diff --git a/Lib/site-packages/pip/_internal/cli/cmdoptions.py b/Lib/site-packages/pip/_internal/cli/cmdoptions.py new file mode 100644 index 0000000..42e2695 --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/cmdoptions.py @@ -0,0 +1,957 @@ +""" +shared options and groups + +The principle here is to define options once, but *not* instantiate them +globally. One reason being that options with action='append' can carry state +between parses. pip parses general options twice internally, and shouldn't +pass on state. To be consistent, all options will follow this design. +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import logging +import os +import textwrap +import warnings +from distutils.util import strtobool +from functools import partial +from optparse import SUPPRESS_HELP, Option, OptionGroup +from textwrap import dedent + +from pip._internal.exceptions import CommandError +from pip._internal.locations import USER_CACHE_DIR, get_src_prefix +from pip._internal.models.format_control import FormatControl +from pip._internal.models.index import PyPI +from pip._internal.models.target_python import TargetPython +from pip._internal.utils.hashes import STRONG_HASHES +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.ui import BAR_TYPES + +if MYPY_CHECK_RUNNING: + from typing import Any, Callable, Dict, Optional, Tuple + from optparse import OptionParser, Values + from pip._internal.cli.parser import ConfigOptionParser + +logger = logging.getLogger(__name__) + + +def raise_option_error(parser, option, msg): + # type: (OptionParser, Option, str) -> None + """ + Raise an option parsing error using parser.error(). + + Args: + parser: an OptionParser instance. + option: an Option instance. + msg: the error text. + """ + msg = '{} error: {}'.format(option, msg) + msg = textwrap.fill(' '.join(msg.split())) + parser.error(msg) + + +def make_option_group(group, parser): + # type: (Dict[str, Any], ConfigOptionParser) -> OptionGroup + """ + Return an OptionGroup object + group -- assumed to be dict with 'name' and 'options' keys + parser -- an optparse Parser + """ + option_group = OptionGroup(parser, group['name']) + for option in group['options']: + option_group.add_option(option()) + return option_group + + +def check_install_build_global(options, check_options=None): + # type: (Values, Optional[Values]) -> None + """Disable wheels if per-setup.py call options are set. + + :param options: The OptionParser options to update. + :param check_options: The options to check, if not supplied defaults to + options. + """ + if check_options is None: + check_options = options + + def getname(n): + # type: (str) -> Optional[Any] + return getattr(check_options, n, None) + names = ["build_options", "global_options", "install_options"] + if any(map(getname, names)): + control = options.format_control + control.disallow_binaries() + warnings.warn( + 'Disabling all use of wheels due to the use of --build-option ' + '/ --global-option / --install-option.', stacklevel=2, + ) + + +def check_dist_restriction(options, check_target=False): + # type: (Values, bool) -> None + """Function for determining if custom platform options are allowed. + + :param options: The OptionParser options. + :param check_target: Whether or not to check if --target is being used. + """ + dist_restriction_set = any([ + options.python_version, + options.platform, + options.abi, + options.implementation, + ]) + + binary_only = FormatControl(set(), {':all:'}) + sdist_dependencies_allowed = ( + options.format_control != binary_only and + not options.ignore_dependencies + ) + + # Installations or downloads using dist restrictions must not combine + # source distributions and dist-specific wheels, as they are not + # guaranteed to be locally compatible. + if dist_restriction_set and sdist_dependencies_allowed: + raise CommandError( + "When restricting platform and interpreter constraints using " + "--python-version, --platform, --abi, or --implementation, " + "either --no-deps must be set, or --only-binary=:all: must be " + "set and --no-binary must not be set (or must be set to " + ":none:)." + ) + + if check_target: + if dist_restriction_set and not options.target_dir: + raise CommandError( + "Can not use any platform or abi specific options unless " + "installing via '--target'" + ) + + +def _path_option_check(option, opt, value): + # type: (Option, str, str) -> str + return os.path.expanduser(value) + + +class PipOption(Option): + TYPES = Option.TYPES + ("path",) + TYPE_CHECKER = Option.TYPE_CHECKER.copy() + TYPE_CHECKER["path"] = _path_option_check + + +########### +# options # +########### + +help_ = partial( + Option, + '-h', '--help', + dest='help', + action='help', + help='Show help.', +) # type: Callable[..., Option] + +isolated_mode = partial( + Option, + "--isolated", + dest="isolated_mode", + action="store_true", + default=False, + help=( + "Run pip in an isolated mode, ignoring environment variables and user " + "configuration." + ), +) # type: Callable[..., Option] + +require_virtualenv = partial( + Option, + # Run only if inside a virtualenv, bail if not. + '--require-virtualenv', '--require-venv', + dest='require_venv', + action='store_true', + default=False, + help=SUPPRESS_HELP +) # type: Callable[..., Option] + +verbose = partial( + Option, + '-v', '--verbose', + dest='verbose', + action='count', + default=0, + help='Give more output. Option is additive, and can be used up to 3 times.' +) # type: Callable[..., Option] + +no_color = partial( + Option, + '--no-color', + dest='no_color', + action='store_true', + default=False, + help="Suppress colored output", +) # type: Callable[..., Option] + +version = partial( + Option, + '-V', '--version', + dest='version', + action='store_true', + help='Show version and exit.', +) # type: Callable[..., Option] + +quiet = partial( + Option, + '-q', '--quiet', + dest='quiet', + action='count', + default=0, + help=( + 'Give less output. Option is additive, and can be used up to 3' + ' times (corresponding to WARNING, ERROR, and CRITICAL logging' + ' levels).' + ), +) # type: Callable[..., Option] + +progress_bar = partial( + Option, + '--progress-bar', + dest='progress_bar', + type='choice', + choices=list(BAR_TYPES.keys()), + default='on', + help=( + 'Specify type of progress to be displayed [' + + '|'.join(BAR_TYPES.keys()) + '] (default: %default)' + ), +) # type: Callable[..., Option] + +log = partial( + PipOption, + "--log", "--log-file", "--local-log", + dest="log", + metavar="path", + type="path", + help="Path to a verbose appending log." +) # type: Callable[..., Option] + +no_input = partial( + Option, + # Don't ask for input + '--no-input', + dest='no_input', + action='store_true', + default=False, + help=SUPPRESS_HELP +) # type: Callable[..., Option] + +proxy = partial( + Option, + '--proxy', + dest='proxy', + type='str', + default='', + help="Specify a proxy in the form [user:passwd@]proxy.server:port." +) # type: Callable[..., Option] + +retries = partial( + Option, + '--retries', + dest='retries', + type='int', + default=5, + help="Maximum number of retries each connection should attempt " + "(default %default times).", +) # type: Callable[..., Option] + +timeout = partial( + Option, + '--timeout', '--default-timeout', + metavar='sec', + dest='timeout', + type='float', + default=15, + help='Set the socket timeout (default %default seconds).', +) # type: Callable[..., Option] + +skip_requirements_regex = partial( + Option, + # A regex to be used to skip requirements + '--skip-requirements-regex', + dest='skip_requirements_regex', + type='str', + default='', + help=SUPPRESS_HELP, +) # type: Callable[..., Option] + + +def exists_action(): + # type: () -> Option + return Option( + # Option when path already exist + '--exists-action', + dest='exists_action', + type='choice', + choices=['s', 'i', 'w', 'b', 'a'], + default=[], + action='append', + metavar='action', + help="Default action when a path already exists: " + "(s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.", + ) + + +cert = partial( + PipOption, + '--cert', + dest='cert', + type='path', + metavar='path', + help="Path to alternate CA bundle.", +) # type: Callable[..., Option] + +client_cert = partial( + PipOption, + '--client-cert', + dest='client_cert', + type='path', + default=None, + metavar='path', + help="Path to SSL client certificate, a single file containing the " + "private key and the certificate in PEM format.", +) # type: Callable[..., Option] + +index_url = partial( + Option, + '-i', '--index-url', '--pypi-url', + dest='index_url', + metavar='URL', + default=PyPI.simple_url, + help="Base URL of the Python Package Index (default %default). " + "This should point to a repository compliant with PEP 503 " + "(the simple repository API) or a local directory laid out " + "in the same format.", +) # type: Callable[..., Option] + + +def extra_index_url(): + # type: () -> Option + return Option( + '--extra-index-url', + dest='extra_index_urls', + metavar='URL', + action='append', + default=[], + help="Extra URLs of package indexes to use in addition to " + "--index-url. Should follow the same rules as " + "--index-url.", + ) + + +no_index = partial( + Option, + '--no-index', + dest='no_index', + action='store_true', + default=False, + help='Ignore package index (only looking at --find-links URLs instead).', +) # type: Callable[..., Option] + + +def find_links(): + # type: () -> Option + return Option( + '-f', '--find-links', + dest='find_links', + action='append', + default=[], + metavar='url', + help="If a url or path to an html file, then parse for links to " + "archives. If a local path or file:// url that's a directory, " + "then look for archives in the directory listing.", + ) + + +def trusted_host(): + # type: () -> Option + return Option( + "--trusted-host", + dest="trusted_hosts", + action="append", + metavar="HOSTNAME", + default=[], + help="Mark this host or host:port pair as trusted, even though it " + "does not have valid or any HTTPS.", + ) + + +def constraints(): + # type: () -> Option + return Option( + '-c', '--constraint', + dest='constraints', + action='append', + default=[], + metavar='file', + help='Constrain versions using the given constraints file. ' + 'This option can be used multiple times.' + ) + + +def requirements(): + # type: () -> Option + return Option( + '-r', '--requirement', + dest='requirements', + action='append', + default=[], + metavar='file', + help='Install from the given requirements file. ' + 'This option can be used multiple times.' + ) + + +def editable(): + # type: () -> Option + return Option( + '-e', '--editable', + dest='editables', + action='append', + default=[], + metavar='path/url', + help=('Install a project in editable mode (i.e. setuptools ' + '"develop mode") from a local project path or a VCS url.'), + ) + + +def _handle_src(option, opt_str, value, parser): + # type: (Option, str, str, OptionParser) -> None + value = os.path.abspath(value) + setattr(parser.values, option.dest, value) + + +src = partial( + PipOption, + '--src', '--source', '--source-dir', '--source-directory', + dest='src_dir', + type='path', + metavar='dir', + default=get_src_prefix(), + action='callback', + callback=_handle_src, + help='Directory to check out editable projects into. ' + 'The default in a virtualenv is "/src". ' + 'The default for global installs is "/src".' +) # type: Callable[..., Option] + + +def _get_format_control(values, option): + # type: (Values, Option) -> Any + """Get a format_control object.""" + return getattr(values, option.dest) + + +def _handle_no_binary(option, opt_str, value, parser): + # type: (Option, str, str, OptionParser) -> None + existing = _get_format_control(parser.values, option) + FormatControl.handle_mutual_excludes( + value, existing.no_binary, existing.only_binary, + ) + + +def _handle_only_binary(option, opt_str, value, parser): + # type: (Option, str, str, OptionParser) -> None + existing = _get_format_control(parser.values, option) + FormatControl.handle_mutual_excludes( + value, existing.only_binary, existing.no_binary, + ) + + +def no_binary(): + # type: () -> Option + format_control = FormatControl(set(), set()) + return Option( + "--no-binary", dest="format_control", action="callback", + callback=_handle_no_binary, type="str", + default=format_control, + help="Do not use binary packages. Can be supplied multiple times, and " + "each time adds to the existing value. Accepts either :all: to " + "disable all binary packages, :none: to empty the set, or one or " + "more package names with commas between them (no colons). Note " + "that some packages are tricky to compile and may fail to " + "install when this option is used on them.", + ) + + +def only_binary(): + # type: () -> Option + format_control = FormatControl(set(), set()) + return Option( + "--only-binary", dest="format_control", action="callback", + callback=_handle_only_binary, type="str", + default=format_control, + help="Do not use source packages. Can be supplied multiple times, and " + "each time adds to the existing value. Accepts either :all: to " + "disable all source packages, :none: to empty the set, or one or " + "more package names with commas between them. Packages without " + "binary distributions will fail to install when this option is " + "used on them.", + ) + + +platform = partial( + Option, + '--platform', + dest='platform', + metavar='platform', + default=None, + help=("Only use wheels compatible with . " + "Defaults to the platform of the running system."), +) # type: Callable[..., Option] + + +# This was made a separate function for unit-testing purposes. +def _convert_python_version(value): + # type: (str) -> Tuple[Tuple[int, ...], Optional[str]] + """ + Convert a version string like "3", "37", or "3.7.3" into a tuple of ints. + + :return: A 2-tuple (version_info, error_msg), where `error_msg` is + non-None if and only if there was a parsing error. + """ + if not value: + # The empty string is the same as not providing a value. + return (None, None) + + parts = value.split('.') + if len(parts) > 3: + return ((), 'at most three version parts are allowed') + + if len(parts) == 1: + # Then we are in the case of "3" or "37". + value = parts[0] + if len(value) > 1: + parts = [value[0], value[1:]] + + try: + version_info = tuple(int(part) for part in parts) + except ValueError: + return ((), 'each version part must be an integer') + + return (version_info, None) + + +def _handle_python_version(option, opt_str, value, parser): + # type: (Option, str, str, OptionParser) -> None + """ + Handle a provided --python-version value. + """ + version_info, error_msg = _convert_python_version(value) + if error_msg is not None: + msg = ( + 'invalid --python-version value: {!r}: {}'.format( + value, error_msg, + ) + ) + raise_option_error(parser, option=option, msg=msg) + + parser.values.python_version = version_info + + +python_version = partial( + Option, + '--python-version', + dest='python_version', + metavar='python_version', + action='callback', + callback=_handle_python_version, type='str', + default=None, + help=dedent("""\ + The Python interpreter version to use for wheel and "Requires-Python" + compatibility checks. Defaults to a version derived from the running + interpreter. The version can be specified using up to three dot-separated + integers (e.g. "3" for 3.0.0, "3.7" for 3.7.0, or "3.7.3"). A major-minor + version can also be given as a string without dots (e.g. "37" for 3.7.0). + """), +) # type: Callable[..., Option] + + +implementation = partial( + Option, + '--implementation', + dest='implementation', + metavar='implementation', + default=None, + help=("Only use wheels compatible with Python " + "implementation , e.g. 'pp', 'jy', 'cp', " + " or 'ip'. If not specified, then the current " + "interpreter implementation is used. Use 'py' to force " + "implementation-agnostic wheels."), +) # type: Callable[..., Option] + + +abi = partial( + Option, + '--abi', + dest='abi', + metavar='abi', + default=None, + help=("Only use wheels compatible with Python " + "abi , e.g. 'pypy_41'. If not specified, then the " + "current interpreter abi tag is used. Generally " + "you will need to specify --implementation, " + "--platform, and --python-version when using " + "this option."), +) # type: Callable[..., Option] + + +def add_target_python_options(cmd_opts): + # type: (OptionGroup) -> None + cmd_opts.add_option(platform()) + cmd_opts.add_option(python_version()) + cmd_opts.add_option(implementation()) + cmd_opts.add_option(abi()) + + +def make_target_python(options): + # type: (Values) -> TargetPython + target_python = TargetPython( + platform=options.platform, + py_version_info=options.python_version, + abi=options.abi, + implementation=options.implementation, + ) + + return target_python + + +def prefer_binary(): + # type: () -> Option + return Option( + "--prefer-binary", + dest="prefer_binary", + action="store_true", + default=False, + help="Prefer older binary packages over newer source packages." + ) + + +cache_dir = partial( + PipOption, + "--cache-dir", + dest="cache_dir", + default=USER_CACHE_DIR, + metavar="dir", + type='path', + help="Store the cache data in ." +) # type: Callable[..., Option] + + +def _handle_no_cache_dir(option, opt, value, parser): + # type: (Option, str, str, OptionParser) -> None + """ + Process a value provided for the --no-cache-dir option. + + This is an optparse.Option callback for the --no-cache-dir option. + """ + # The value argument will be None if --no-cache-dir is passed via the + # command-line, since the option doesn't accept arguments. However, + # the value can be non-None if the option is triggered e.g. by an + # environment variable, like PIP_NO_CACHE_DIR=true. + if value is not None: + # Then parse the string value to get argument error-checking. + try: + strtobool(value) + except ValueError as exc: + raise_option_error(parser, option=option, msg=str(exc)) + + # Originally, setting PIP_NO_CACHE_DIR to a value that strtobool() + # converted to 0 (like "false" or "no") caused cache_dir to be disabled + # rather than enabled (logic would say the latter). Thus, we disable + # the cache directory not just on values that parse to True, but (for + # backwards compatibility reasons) also on values that parse to False. + # In other words, always set it to False if the option is provided in + # some (valid) form. + parser.values.cache_dir = False + + +no_cache = partial( + Option, + "--no-cache-dir", + dest="cache_dir", + action="callback", + callback=_handle_no_cache_dir, + help="Disable the cache.", +) # type: Callable[..., Option] + +no_deps = partial( + Option, + '--no-deps', '--no-dependencies', + dest='ignore_dependencies', + action='store_true', + default=False, + help="Don't install package dependencies.", +) # type: Callable[..., Option] + + +def _handle_build_dir(option, opt, value, parser): + # type: (Option, str, str, OptionParser) -> None + if value: + value = os.path.abspath(value) + setattr(parser.values, option.dest, value) + + +build_dir = partial( + PipOption, + '-b', '--build', '--build-dir', '--build-directory', + dest='build_dir', + type='path', + metavar='dir', + action='callback', + callback=_handle_build_dir, + help='Directory to unpack packages into and build in. Note that ' + 'an initial build still takes place in a temporary directory. ' + 'The location of temporary directories can be controlled by setting ' + 'the TMPDIR environment variable (TEMP on Windows) appropriately. ' + 'When passed, build directories are not cleaned in case of failures.' +) # type: Callable[..., Option] + +ignore_requires_python = partial( + Option, + '--ignore-requires-python', + dest='ignore_requires_python', + action='store_true', + help='Ignore the Requires-Python information.' +) # type: Callable[..., Option] + +no_build_isolation = partial( + Option, + '--no-build-isolation', + dest='build_isolation', + action='store_false', + default=True, + help='Disable isolation when building a modern source distribution. ' + 'Build dependencies specified by PEP 518 must be already installed ' + 'if this option is used.' +) # type: Callable[..., Option] + + +def _handle_no_use_pep517(option, opt, value, parser): + # type: (Option, str, str, OptionParser) -> None + """ + Process a value provided for the --no-use-pep517 option. + + This is an optparse.Option callback for the no_use_pep517 option. + """ + # Since --no-use-pep517 doesn't accept arguments, the value argument + # will be None if --no-use-pep517 is passed via the command-line. + # However, the value can be non-None if the option is triggered e.g. + # by an environment variable, for example "PIP_NO_USE_PEP517=true". + if value is not None: + msg = """A value was passed for --no-use-pep517, + probably using either the PIP_NO_USE_PEP517 environment variable + or the "no-use-pep517" config file option. Use an appropriate value + of the PIP_USE_PEP517 environment variable or the "use-pep517" + config file option instead. + """ + raise_option_error(parser, option=option, msg=msg) + + # Otherwise, --no-use-pep517 was passed via the command-line. + parser.values.use_pep517 = False + + +use_pep517 = partial( + Option, + '--use-pep517', + dest='use_pep517', + action='store_true', + default=None, + help='Use PEP 517 for building source distributions ' + '(use --no-use-pep517 to force legacy behaviour).' +) # type: Any + +no_use_pep517 = partial( + Option, + '--no-use-pep517', + dest='use_pep517', + action='callback', + callback=_handle_no_use_pep517, + default=None, + help=SUPPRESS_HELP +) # type: Any + +install_options = partial( + Option, + '--install-option', + dest='install_options', + action='append', + metavar='options', + help="Extra arguments to be supplied to the setup.py install " + "command (use like --install-option=\"--install-scripts=/usr/local/" + "bin\"). Use multiple --install-option options to pass multiple " + "options to setup.py install. If you are using an option with a " + "directory path, be sure to use absolute path.", +) # type: Callable[..., Option] + +global_options = partial( + Option, + '--global-option', + dest='global_options', + action='append', + metavar='options', + help="Extra global options to be supplied to the setup.py " + "call before the install command.", +) # type: Callable[..., Option] + +no_clean = partial( + Option, + '--no-clean', + action='store_true', + default=False, + help="Don't clean up build directories." +) # type: Callable[..., Option] + +pre = partial( + Option, + '--pre', + action='store_true', + default=False, + help="Include pre-release and development versions. By default, " + "pip only finds stable versions.", +) # type: Callable[..., Option] + +disable_pip_version_check = partial( + Option, + "--disable-pip-version-check", + dest="disable_pip_version_check", + action="store_true", + default=False, + help="Don't periodically check PyPI to determine whether a new version " + "of pip is available for download. Implied with --no-index.", +) # type: Callable[..., Option] + + +# Deprecated, Remove later +always_unzip = partial( + Option, + '-Z', '--always-unzip', + dest='always_unzip', + action='store_true', + help=SUPPRESS_HELP, +) # type: Callable[..., Option] + + +def _handle_merge_hash(option, opt_str, value, parser): + # type: (Option, str, str, OptionParser) -> None + """Given a value spelled "algo:digest", append the digest to a list + pointed to in a dict by the algo name.""" + if not parser.values.hashes: + parser.values.hashes = {} + try: + algo, digest = value.split(':', 1) + except ValueError: + parser.error('Arguments to %s must be a hash name ' + 'followed by a value, like --hash=sha256:abcde...' % + opt_str) + if algo not in STRONG_HASHES: + parser.error('Allowed hash algorithms for %s are %s.' % + (opt_str, ', '.join(STRONG_HASHES))) + parser.values.hashes.setdefault(algo, []).append(digest) + + +hash = partial( + Option, + '--hash', + # Hash values eventually end up in InstallRequirement.hashes due to + # __dict__ copying in process_line(). + dest='hashes', + action='callback', + callback=_handle_merge_hash, + type='string', + help="Verify that the package's archive matches this " + 'hash before installing. Example: --hash=sha256:abcdef...', +) # type: Callable[..., Option] + + +require_hashes = partial( + Option, + '--require-hashes', + dest='require_hashes', + action='store_true', + default=False, + help='Require a hash to check each requirement against, for ' + 'repeatable installs. This option is implied when any package in a ' + 'requirements file has a --hash option.', +) # type: Callable[..., Option] + + +list_path = partial( + PipOption, + '--path', + dest='path', + type='path', + action='append', + help='Restrict to the specified installation path for listing ' + 'packages (can be used multiple times).' +) # type: Callable[..., Option] + + +def check_list_path_option(options): + # type: (Values) -> None + if options.path and (options.user or options.local): + raise CommandError( + "Cannot combine '--path' with '--user' or '--local'" + ) + + +no_python_version_warning = partial( + Option, + '--no-python-version-warning', + dest='no_python_version_warning', + action='store_true', + default=False, + help='Silence deprecation warnings for upcoming unsupported Pythons.', +) # type: Callable[..., Option] + + +########## +# groups # +########## + +general_group = { + 'name': 'General Options', + 'options': [ + help_, + isolated_mode, + require_virtualenv, + verbose, + version, + quiet, + log, + no_input, + proxy, + retries, + timeout, + skip_requirements_regex, + exists_action, + trusted_host, + cert, + client_cert, + cache_dir, + no_cache, + disable_pip_version_check, + no_color, + no_python_version_warning, + ] +} # type: Dict[str, Any] + +index_group = { + 'name': 'Package Index Options', + 'options': [ + index_url, + extra_index_url, + no_index, + find_links, + ] +} # type: Dict[str, Any] diff --git a/Lib/site-packages/pip/_internal/cli/command_context.py b/Lib/site-packages/pip/_internal/cli/command_context.py new file mode 100644 index 0000000..d1a64a7 --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/command_context.py @@ -0,0 +1,36 @@ +from contextlib import contextmanager + +from pip._vendor.contextlib2 import ExitStack + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Iterator, ContextManager, TypeVar + + _T = TypeVar('_T', covariant=True) + + +class CommandContextMixIn(object): + def __init__(self): + # type: () -> None + super(CommandContextMixIn, self).__init__() + self._in_main_context = False + self._main_context = ExitStack() + + @contextmanager + def main_context(self): + # type: () -> Iterator[None] + assert not self._in_main_context + + self._in_main_context = True + try: + with self._main_context: + yield + finally: + self._in_main_context = False + + def enter_context(self, context_provider): + # type: (ContextManager[_T]) -> _T + assert self._in_main_context + + return self._main_context.enter_context(context_provider) diff --git a/Lib/site-packages/pip/_internal/cli/main.py b/Lib/site-packages/pip/_internal/cli/main.py new file mode 100644 index 0000000..5e97a51 --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/main.py @@ -0,0 +1,75 @@ +"""Primary application entrypoint. +""" +from __future__ import absolute_import + +import locale +import logging +import os +import sys + +from pip._internal.cli.autocompletion import autocomplete +from pip._internal.cli.main_parser import parse_command +from pip._internal.commands import create_command +from pip._internal.exceptions import PipError +from pip._internal.utils import deprecation +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional + +logger = logging.getLogger(__name__) + + +# Do not import and use main() directly! Using it directly is actively +# discouraged by pip's maintainers. The name, location and behavior of +# this function is subject to change, so calling it directly is not +# portable across different pip versions. + +# In addition, running pip in-process is unsupported and unsafe. This is +# elaborated in detail at +# https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program. +# That document also provides suggestions that should work for nearly +# all users that are considering importing and using main() directly. + +# However, we know that certain users will still want to invoke pip +# in-process. If you understand and accept the implications of using pip +# in an unsupported manner, the best approach is to use runpy to avoid +# depending on the exact location of this entry point. + +# The following example shows how to use runpy to invoke pip in that +# case: +# +# sys.argv = ["pip", your, args, here] +# runpy.run_module("pip", run_name="__main__") +# +# Note that this will exit the process after running, unlike a direct +# call to main. As it is not safe to do any processing after calling +# main, this should not be an issue in practice. + +def main(args=None): + # type: (Optional[List[str]]) -> int + if args is None: + args = sys.argv[1:] + + # Configure our deprecation warnings to be sent through loggers + deprecation.install_warning_logger() + + autocomplete() + + try: + cmd_name, cmd_args = parse_command(args) + except PipError as exc: + sys.stderr.write("ERROR: %s" % exc) + sys.stderr.write(os.linesep) + sys.exit(1) + + # Needed for locale.getpreferredencoding(False) to work + # in pip._internal.utils.encoding.auto_decode + try: + locale.setlocale(locale.LC_ALL, '') + except locale.Error as e: + # setlocale can apparently crash if locale are uninitialized + logger.debug("Ignoring error %s when setting locale", e) + command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) + + return command.main(cmd_args) diff --git a/Lib/site-packages/pip/_internal/cli/main_parser.py b/Lib/site-packages/pip/_internal/cli/main_parser.py new file mode 100644 index 0000000..a89821d --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/main_parser.py @@ -0,0 +1,99 @@ +"""A single place for constructing and exposing the main parser +""" + +import os +import sys + +from pip._internal.cli import cmdoptions +from pip._internal.cli.parser import ( + ConfigOptionParser, + UpdatingDefaultsHelpFormatter, +) +from pip._internal.commands import commands_dict, get_similar_commands +from pip._internal.exceptions import CommandError +from pip._internal.utils.misc import get_pip_version, get_prog +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Tuple, List + + +__all__ = ["create_main_parser", "parse_command"] + + +def create_main_parser(): + # type: () -> ConfigOptionParser + """Creates and returns the main parser for pip's CLI + """ + + parser_kw = { + 'usage': '\n%prog [options]', + 'add_help_option': False, + 'formatter': UpdatingDefaultsHelpFormatter(), + 'name': 'global', + 'prog': get_prog(), + } + + parser = ConfigOptionParser(**parser_kw) + parser.disable_interspersed_args() + + parser.version = get_pip_version() + + # add the general options + gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser) + parser.add_option_group(gen_opts) + + # so the help formatter knows + parser.main = True # type: ignore + + # create command listing for description + description = [''] + [ + '%-27s %s' % (name, command_info.summary) + for name, command_info in commands_dict.items() + ] + parser.description = '\n'.join(description) + + return parser + + +def parse_command(args): + # type: (List[str]) -> Tuple[str, List[str]] + parser = create_main_parser() + + # Note: parser calls disable_interspersed_args(), so the result of this + # call is to split the initial args into the general options before the + # subcommand and everything else. + # For example: + # args: ['--timeout=5', 'install', '--user', 'INITools'] + # general_options: ['--timeout==5'] + # args_else: ['install', '--user', 'INITools'] + general_options, args_else = parser.parse_args(args) + + # --version + if general_options.version: + sys.stdout.write(parser.version) # type: ignore + sys.stdout.write(os.linesep) + sys.exit() + + # pip || pip help -> print_help() + if not args_else or (args_else[0] == 'help' and len(args_else) == 1): + parser.print_help() + sys.exit() + + # the subcommand name + cmd_name = args_else[0] + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = ['unknown command "%s"' % cmd_name] + if guess: + msg.append('maybe you meant "%s"' % guess) + + raise CommandError(' - '.join(msg)) + + # all the args without the subcommand + cmd_args = args[:] + cmd_args.remove(cmd_name) + + return cmd_name, cmd_args diff --git a/Lib/site-packages/pip/_internal/cli/parser.py b/Lib/site-packages/pip/_internal/cli/parser.py new file mode 100644 index 0000000..c99456b --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/parser.py @@ -0,0 +1,265 @@ +"""Base option parser setup""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import optparse +import sys +import textwrap +from distutils.util import strtobool + +from pip._vendor.six import string_types + +from pip._internal.cli.status_codes import UNKNOWN_ERROR +from pip._internal.configuration import Configuration, ConfigurationError +from pip._internal.utils.compat import get_terminal_size + +logger = logging.getLogger(__name__) + + +class PrettyHelpFormatter(optparse.IndentedHelpFormatter): + """A prettier/less verbose help formatter for optparse.""" + + def __init__(self, *args, **kwargs): + # help position must be aligned with __init__.parseopts.description + kwargs['max_help_position'] = 30 + kwargs['indent_increment'] = 1 + kwargs['width'] = get_terminal_size()[0] - 2 + optparse.IndentedHelpFormatter.__init__(self, *args, **kwargs) + + def format_option_strings(self, option): + return self._format_option_strings(option, ' <%s>', ', ') + + def _format_option_strings(self, option, mvarfmt=' <%s>', optsep=', '): + """ + Return a comma-separated list of option strings and metavars. + + :param option: tuple of (short opt, long opt), e.g: ('-f', '--format') + :param mvarfmt: metavar format string - evaluated as mvarfmt % metavar + :param optsep: separator + """ + opts = [] + + if option._short_opts: + opts.append(option._short_opts[0]) + if option._long_opts: + opts.append(option._long_opts[0]) + if len(opts) > 1: + opts.insert(1, optsep) + + if option.takes_value(): + metavar = option.metavar or option.dest.lower() + opts.append(mvarfmt % metavar.lower()) + + return ''.join(opts) + + def format_heading(self, heading): + if heading == 'Options': + return '' + return heading + ':\n' + + def format_usage(self, usage): + """ + Ensure there is only one newline between usage and the first heading + if there is no description. + """ + msg = '\nUsage: %s\n' % self.indent_lines(textwrap.dedent(usage), " ") + return msg + + def format_description(self, description): + # leave full control over description to us + if description: + if hasattr(self.parser, 'main'): + label = 'Commands' + else: + label = 'Description' + # some doc strings have initial newlines, some don't + description = description.lstrip('\n') + # some doc strings have final newlines and spaces, some don't + description = description.rstrip() + # dedent, then reindent + description = self.indent_lines(textwrap.dedent(description), " ") + description = '%s:\n%s\n' % (label, description) + return description + else: + return '' + + def format_epilog(self, epilog): + # leave full control over epilog to us + if epilog: + return epilog + else: + return '' + + def indent_lines(self, text, indent): + new_lines = [indent + line for line in text.split('\n')] + return "\n".join(new_lines) + + +class UpdatingDefaultsHelpFormatter(PrettyHelpFormatter): + """Custom help formatter for use in ConfigOptionParser. + + This is updates the defaults before expanding them, allowing + them to show up correctly in the help listing. + """ + + def expand_default(self, option): + if self.parser is not None: + self.parser._update_defaults(self.parser.defaults) + return optparse.IndentedHelpFormatter.expand_default(self, option) + + +class CustomOptionParser(optparse.OptionParser): + + def insert_option_group(self, idx, *args, **kwargs): + """Insert an OptionGroup at a given position.""" + group = self.add_option_group(*args, **kwargs) + + self.option_groups.pop() + self.option_groups.insert(idx, group) + + return group + + @property + def option_list_all(self): + """Get a list of all options, including those in option groups.""" + res = self.option_list[:] + for i in self.option_groups: + res.extend(i.option_list) + + return res + + +class ConfigOptionParser(CustomOptionParser): + """Custom option parser which updates its defaults by checking the + configuration files and environmental variables""" + + def __init__(self, *args, **kwargs): + self.name = kwargs.pop('name') + + isolated = kwargs.pop("isolated", False) + self.config = Configuration(isolated) + + assert self.name + optparse.OptionParser.__init__(self, *args, **kwargs) + + def check_default(self, option, key, val): + try: + return option.check_value(key, val) + except optparse.OptionValueError as exc: + print("An error occurred during configuration: %s" % exc) + sys.exit(3) + + def _get_ordered_configuration_items(self): + # Configuration gives keys in an unordered manner. Order them. + override_order = ["global", self.name, ":env:"] + + # Pool the options into different groups + section_items = {name: [] for name in override_order} + for section_key, val in self.config.items(): + # ignore empty values + if not val: + logger.debug( + "Ignoring configuration key '%s' as it's value is empty.", + section_key + ) + continue + + section, key = section_key.split(".", 1) + if section in override_order: + section_items[section].append((key, val)) + + # Yield each group in their override order + for section in override_order: + for key, val in section_items[section]: + yield key, val + + def _update_defaults(self, defaults): + """Updates the given defaults with values from the config files and + the environ. Does a little special handling for certain types of + options (lists).""" + + # Accumulate complex default state. + self.values = optparse.Values(self.defaults) + late_eval = set() + # Then set the options with those values + for key, val in self._get_ordered_configuration_items(): + # '--' because configuration supports only long names + option = self.get_option('--' + key) + + # Ignore options not present in this parser. E.g. non-globals put + # in [global] by users that want them to apply to all applicable + # commands. + if option is None: + continue + + if option.action in ('store_true', 'store_false', 'count'): + try: + val = strtobool(val) + except ValueError: + error_msg = invalid_config_error_message( + option.action, key, val + ) + self.error(error_msg) + + elif option.action == 'append': + val = val.split() + val = [self.check_default(option, key, v) for v in val] + elif option.action == 'callback': + late_eval.add(option.dest) + opt_str = option.get_opt_string() + val = option.convert_value(opt_str, val) + # From take_action + args = option.callback_args or () + kwargs = option.callback_kwargs or {} + option.callback(option, opt_str, val, self, *args, **kwargs) + else: + val = self.check_default(option, key, val) + + defaults[option.dest] = val + + for key in late_eval: + defaults[key] = getattr(self.values, key) + self.values = None + return defaults + + def get_default_values(self): + """Overriding to make updating the defaults after instantiation of + the option parser possible, _update_defaults() does the dirty work.""" + if not self.process_default_values: + # Old, pre-Optik 1.5 behaviour. + return optparse.Values(self.defaults) + + # Load the configuration, or error out in case of an error + try: + self.config.load() + except ConfigurationError as err: + self.exit(UNKNOWN_ERROR, str(err)) + + defaults = self._update_defaults(self.defaults.copy()) # ours + for option in self._get_all_options(): + default = defaults.get(option.dest) + if isinstance(default, string_types): + opt_str = option.get_opt_string() + defaults[option.dest] = option.check_value(opt_str, default) + return optparse.Values(defaults) + + def error(self, msg): + self.print_usage(sys.stderr) + self.exit(UNKNOWN_ERROR, "%s\n" % msg) + + +def invalid_config_error_message(action, key, val): + """Returns a better error message when invalid configuration option + is provided.""" + if action in ('store_true', 'store_false'): + return ("{0} is not a valid value for {1} option, " + "please specify a boolean value like yes/no, " + "true/false or 1/0 instead.").format(val, key) + + return ("{0} is not a valid value for {1} option, " + "please specify a numerical value like 1/0 " + "instead.").format(val, key) diff --git a/Lib/site-packages/pip/_internal/cli/req_command.py b/Lib/site-packages/pip/_internal/cli/req_command.py new file mode 100644 index 0000000..9383b3b --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/req_command.py @@ -0,0 +1,333 @@ +"""Contains the Command base classes that depend on PipSession. + +The classes in this module are in a separate module so the commands not +needing download / PackageFinder capability don't unnecessarily import the +PackageFinder machinery and all its vendored dependencies, etc. +""" + +import logging +import os +from functools import partial + +from pip._internal.cli.base_command import Command +from pip._internal.cli.command_context import CommandContextMixIn +from pip._internal.exceptions import CommandError +from pip._internal.index.package_finder import PackageFinder +from pip._internal.legacy_resolve import Resolver +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.network.download import Downloader +from pip._internal.network.session import PipSession +from pip._internal.operations.prepare import RequirementPreparer +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, + install_req_from_req_string, +) +from pip._internal.req.req_file import parse_requirements +from pip._internal.self_outdated_check import ( + make_link_collector, + pip_self_version_check, +) +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from optparse import Values + from typing import List, Optional, Tuple + from pip._internal.cache import WheelCache + from pip._internal.models.target_python import TargetPython + from pip._internal.req.req_set import RequirementSet + from pip._internal.req.req_tracker import RequirementTracker + from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +class SessionCommandMixin(CommandContextMixIn): + + """ + A class mixin for command classes needing _build_session(). + """ + def __init__(self): + # type: () -> None + super(SessionCommandMixin, self).__init__() + self._session = None # Optional[PipSession] + + @classmethod + def _get_index_urls(cls, options): + # type: (Values) -> Optional[List[str]] + """Return a list of index urls from user-provided options.""" + index_urls = [] + if not getattr(options, "no_index", False): + url = getattr(options, "index_url", None) + if url: + index_urls.append(url) + urls = getattr(options, "extra_index_urls", None) + if urls: + index_urls.extend(urls) + # Return None rather than an empty list + return index_urls or None + + def get_default_session(self, options): + # type: (Values) -> PipSession + """Get a default-managed session.""" + if self._session is None: + self._session = self.enter_context(self._build_session(options)) + # there's no type annotation on requests.Session, so it's + # automatically ContextManager[Any] and self._session becomes Any, + # then https://github.com/python/mypy/issues/7696 kicks in + assert self._session is not None + return self._session + + def _build_session(self, options, retries=None, timeout=None): + # type: (Values, Optional[int], Optional[int]) -> PipSession + assert not options.cache_dir or os.path.isabs(options.cache_dir) + session = PipSession( + cache=( + os.path.join(options.cache_dir, "http") + if options.cache_dir else None + ), + retries=retries if retries is not None else options.retries, + trusted_hosts=options.trusted_hosts, + index_urls=self._get_index_urls(options), + ) + + # Handle custom ca-bundles from the user + if options.cert: + session.verify = options.cert + + # Handle SSL client certificate + if options.client_cert: + session.cert = options.client_cert + + # Handle timeouts + if options.timeout or timeout: + session.timeout = ( + timeout if timeout is not None else options.timeout + ) + + # Handle configured proxies + if options.proxy: + session.proxies = { + "http": options.proxy, + "https": options.proxy, + } + + # Determine if we can prompt the user for authentication or not + session.auth.prompting = not options.no_input + + return session + + +class IndexGroupCommand(Command, SessionCommandMixin): + + """ + Abstract base class for commands with the index_group options. + + This also corresponds to the commands that permit the pip version check. + """ + + def handle_pip_version_check(self, options): + # type: (Values) -> None + """ + Do the pip version check if not disabled. + + This overrides the default behavior of not doing the check. + """ + # Make sure the index_group options are present. + assert hasattr(options, 'no_index') + + if options.disable_pip_version_check or options.no_index: + return + + # Otherwise, check if we're using the latest version of pip available. + session = self._build_session( + options, + retries=0, + timeout=min(5, options.timeout) + ) + with session: + pip_self_version_check(session, options) + + +class RequirementCommand(IndexGroupCommand): + + @staticmethod + def make_requirement_preparer( + temp_build_dir, # type: TempDirectory + options, # type: Values + req_tracker, # type: RequirementTracker + session, # type: PipSession + finder, # type: PackageFinder + use_user_site, # type: bool + download_dir=None, # type: str + wheel_download_dir=None, # type: str + ): + # type: (...) -> RequirementPreparer + """ + Create a RequirementPreparer instance for the given parameters. + """ + downloader = Downloader(session, progress_bar=options.progress_bar) + + temp_build_dir_path = temp_build_dir.path + assert temp_build_dir_path is not None + + return RequirementPreparer( + build_dir=temp_build_dir_path, + src_dir=options.src_dir, + download_dir=download_dir, + wheel_download_dir=wheel_download_dir, + build_isolation=options.build_isolation, + req_tracker=req_tracker, + downloader=downloader, + finder=finder, + require_hashes=options.require_hashes, + use_user_site=use_user_site, + ) + + @staticmethod + def make_resolver( + preparer, # type: RequirementPreparer + finder, # type: PackageFinder + options, # type: Values + wheel_cache=None, # type: Optional[WheelCache] + use_user_site=False, # type: bool + ignore_installed=True, # type: bool + ignore_requires_python=False, # type: bool + force_reinstall=False, # type: bool + upgrade_strategy="to-satisfy-only", # type: str + use_pep517=None, # type: Optional[bool] + py_version_info=None # type: Optional[Tuple[int, ...]] + ): + # type: (...) -> Resolver + """ + Create a Resolver instance for the given parameters. + """ + make_install_req = partial( + install_req_from_req_string, + isolated=options.isolated_mode, + wheel_cache=wheel_cache, + use_pep517=use_pep517, + ) + return Resolver( + preparer=preparer, + finder=finder, + make_install_req=make_install_req, + use_user_site=use_user_site, + ignore_dependencies=options.ignore_dependencies, + ignore_installed=ignore_installed, + ignore_requires_python=ignore_requires_python, + force_reinstall=force_reinstall, + upgrade_strategy=upgrade_strategy, + py_version_info=py_version_info, + ) + + def populate_requirement_set( + self, + requirement_set, # type: RequirementSet + args, # type: List[str] + options, # type: Values + finder, # type: PackageFinder + session, # type: PipSession + wheel_cache, # type: Optional[WheelCache] + ): + # type: (...) -> None + """ + Marshal cmd line args into a requirement set. + """ + for filename in options.constraints: + for req_to_add in parse_requirements( + filename, + constraint=True, finder=finder, options=options, + session=session, wheel_cache=wheel_cache): + req_to_add.is_direct = True + requirement_set.add_requirement(req_to_add) + + for req in args: + req_to_add = install_req_from_line( + req, None, isolated=options.isolated_mode, + use_pep517=options.use_pep517, + wheel_cache=wheel_cache + ) + req_to_add.is_direct = True + requirement_set.add_requirement(req_to_add) + + for req in options.editables: + req_to_add = install_req_from_editable( + req, + isolated=options.isolated_mode, + use_pep517=options.use_pep517, + wheel_cache=wheel_cache + ) + req_to_add.is_direct = True + requirement_set.add_requirement(req_to_add) + + # NOTE: options.require_hashes may be set if --require-hashes is True + for filename in options.requirements: + for req_to_add in parse_requirements( + filename, + finder=finder, options=options, session=session, + wheel_cache=wheel_cache, + use_pep517=options.use_pep517): + req_to_add.is_direct = True + requirement_set.add_requirement(req_to_add) + + # If any requirement has hash options, enable hash checking. + requirements = ( + requirement_set.unnamed_requirements + + list(requirement_set.requirements.values()) + ) + if any(req.has_hash_options for req in requirements): + options.require_hashes = True + + if not (args or options.editables or options.requirements): + opts = {'name': self.name} + if options.find_links: + raise CommandError( + 'You must give at least one requirement to %(name)s ' + '(maybe you meant "pip %(name)s %(links)s"?)' % + dict(opts, links=' '.join(options.find_links))) + else: + raise CommandError( + 'You must give at least one requirement to %(name)s ' + '(see "pip help %(name)s")' % opts) + + @staticmethod + def trace_basic_info(finder): + # type: (PackageFinder) -> None + """ + Trace basic information about the provided objects. + """ + # Display where finder is looking for packages + search_scope = finder.search_scope + locations = search_scope.get_formatted_locations() + if locations: + logger.info(locations) + + def _build_package_finder( + self, + options, # type: Values + session, # type: PipSession + target_python=None, # type: Optional[TargetPython] + ignore_requires_python=None, # type: Optional[bool] + ): + # type: (...) -> PackageFinder + """ + Create a package finder appropriate to this requirement command. + + :param ignore_requires_python: Whether to ignore incompatible + "Requires-Python" values in links. Defaults to False. + """ + link_collector = make_link_collector(session, options=options) + selection_prefs = SelectionPreferences( + allow_yanked=True, + format_control=options.format_control, + allow_all_prereleases=options.pre, + prefer_binary=options.prefer_binary, + ignore_requires_python=ignore_requires_python, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + target_python=target_python, + ) diff --git a/Lib/site-packages/pip/_internal/cli/status_codes.py b/Lib/site-packages/pip/_internal/cli/status_codes.py new file mode 100644 index 0000000..275360a --- /dev/null +++ b/Lib/site-packages/pip/_internal/cli/status_codes.py @@ -0,0 +1,8 @@ +from __future__ import absolute_import + +SUCCESS = 0 +ERROR = 1 +UNKNOWN_ERROR = 2 +VIRTUALENV_NOT_FOUND = 3 +PREVIOUS_BUILD_DIR_ERROR = 4 +NO_MATCHES_FOUND = 23 diff --git a/Lib/site-packages/pip/_internal/commands/__init__.py b/Lib/site-packages/pip/_internal/commands/__init__.py new file mode 100644 index 0000000..2a311f8 --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/__init__.py @@ -0,0 +1,114 @@ +""" +Package containing all pip commands +""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import importlib +from collections import OrderedDict, namedtuple + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Any + from pip._internal.cli.base_command import Command + + +CommandInfo = namedtuple('CommandInfo', 'module_path, class_name, summary') + +# The ordering matters for help display. +# Also, even though the module path starts with the same +# "pip._internal.commands" prefix in each case, we include the full path +# because it makes testing easier (specifically when modifying commands_dict +# in test setup / teardown by adding info for a FakeCommand class defined +# in a test-related module). +# Finally, we need to pass an iterable of pairs here rather than a dict +# so that the ordering won't be lost when using Python 2.7. +commands_dict = OrderedDict([ + ('install', CommandInfo( + 'pip._internal.commands.install', 'InstallCommand', + 'Install packages.', + )), + ('download', CommandInfo( + 'pip._internal.commands.download', 'DownloadCommand', + 'Download packages.', + )), + ('uninstall', CommandInfo( + 'pip._internal.commands.uninstall', 'UninstallCommand', + 'Uninstall packages.', + )), + ('freeze', CommandInfo( + 'pip._internal.commands.freeze', 'FreezeCommand', + 'Output installed packages in requirements format.', + )), + ('list', CommandInfo( + 'pip._internal.commands.list', 'ListCommand', + 'List installed packages.', + )), + ('show', CommandInfo( + 'pip._internal.commands.show', 'ShowCommand', + 'Show information about installed packages.', + )), + ('check', CommandInfo( + 'pip._internal.commands.check', 'CheckCommand', + 'Verify installed packages have compatible dependencies.', + )), + ('config', CommandInfo( + 'pip._internal.commands.configuration', 'ConfigurationCommand', + 'Manage local and global configuration.', + )), + ('search', CommandInfo( + 'pip._internal.commands.search', 'SearchCommand', + 'Search PyPI for packages.', + )), + ('wheel', CommandInfo( + 'pip._internal.commands.wheel', 'WheelCommand', + 'Build wheels from your requirements.', + )), + ('hash', CommandInfo( + 'pip._internal.commands.hash', 'HashCommand', + 'Compute hashes of package archives.', + )), + ('completion', CommandInfo( + 'pip._internal.commands.completion', 'CompletionCommand', + 'A helper command used for command completion.', + )), + ('debug', CommandInfo( + 'pip._internal.commands.debug', 'DebugCommand', + 'Show information useful for debugging.', + )), + ('help', CommandInfo( + 'pip._internal.commands.help', 'HelpCommand', + 'Show help for commands.', + )), +]) # type: OrderedDict[str, CommandInfo] + + +def create_command(name, **kwargs): + # type: (str, **Any) -> Command + """ + Create an instance of the Command class with the given name. + """ + module_path, class_name, summary = commands_dict[name] + module = importlib.import_module(module_path) + command_class = getattr(module, class_name) + command = command_class(name=name, summary=summary, **kwargs) + + return command + + +def get_similar_commands(name): + """Command name auto-correct.""" + from difflib import get_close_matches + + name = name.lower() + + close_commands = get_close_matches(name, commands_dict.keys()) + + if close_commands: + return close_commands[0] + else: + return False diff --git a/Lib/site-packages/pip/_internal/commands/check.py b/Lib/site-packages/pip/_internal/commands/check.py new file mode 100644 index 0000000..9689446 --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/check.py @@ -0,0 +1,45 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +import logging + +from pip._internal.cli.base_command import Command +from pip._internal.operations.check import ( + check_package_set, + create_package_set_from_installed, +) +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class CheckCommand(Command): + """Verify installed packages have compatible dependencies.""" + + usage = """ + %prog [options]""" + + def run(self, options, args): + package_set, parsing_probs = create_package_set_from_installed() + missing, conflicting = check_package_set(package_set) + + for project_name in missing: + version = package_set[project_name].version + for dependency in missing[project_name]: + write_output( + "%s %s requires %s, which is not installed.", + project_name, version, dependency[0], + ) + + for project_name in conflicting: + version = package_set[project_name].version + for dep_name, dep_version, req in conflicting[project_name]: + write_output( + "%s %s has requirement %s, but you have %s %s.", + project_name, version, req, dep_name, dep_version, + ) + + if missing or conflicting or parsing_probs: + return 1 + else: + write_output("No broken requirements found.") diff --git a/Lib/site-packages/pip/_internal/commands/completion.py b/Lib/site-packages/pip/_internal/commands/completion.py new file mode 100644 index 0000000..c532806 --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/completion.py @@ -0,0 +1,96 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import sys +import textwrap + +from pip._internal.cli.base_command import Command +from pip._internal.utils.misc import get_prog + +BASE_COMPLETION = """ +# pip %(shell)s completion start%(script)s# pip %(shell)s completion end +""" + +COMPLETION_SCRIPTS = { + 'bash': """ + _pip_completion() + { + COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \\ + COMP_CWORD=$COMP_CWORD \\ + PIP_AUTO_COMPLETE=1 $1 2>/dev/null ) ) + } + complete -o default -F _pip_completion %(prog)s + """, + 'zsh': """ + function _pip_completion { + local words cword + read -Ac words + read -cn cword + reply=( $( COMP_WORDS="$words[*]" \\ + COMP_CWORD=$(( cword-1 )) \\ + PIP_AUTO_COMPLETE=1 $words[1] 2>/dev/null )) + } + compctl -K _pip_completion %(prog)s + """, + 'fish': """ + function __fish_complete_pip + set -lx COMP_WORDS (commandline -o) "" + set -lx COMP_CWORD ( \\ + math (contains -i -- (commandline -t) $COMP_WORDS)-1 \\ + ) + set -lx PIP_AUTO_COMPLETE 1 + string split \\ -- (eval $COMP_WORDS[1]) + end + complete -fa "(__fish_complete_pip)" -c %(prog)s + """, +} + + +class CompletionCommand(Command): + """A helper command to be used for command completion.""" + + ignore_require_venv = True + + def __init__(self, *args, **kw): + super(CompletionCommand, self).__init__(*args, **kw) + + cmd_opts = self.cmd_opts + + cmd_opts.add_option( + '--bash', '-b', + action='store_const', + const='bash', + dest='shell', + help='Emit completion code for bash') + cmd_opts.add_option( + '--zsh', '-z', + action='store_const', + const='zsh', + dest='shell', + help='Emit completion code for zsh') + cmd_opts.add_option( + '--fish', '-f', + action='store_const', + const='fish', + dest='shell', + help='Emit completion code for fish') + + self.parser.insert_option_group(0, cmd_opts) + + def run(self, options, args): + """Prints the completion code of the given shell""" + shells = COMPLETION_SCRIPTS.keys() + shell_options = ['--' + shell for shell in sorted(shells)] + if options.shell in shells: + script = textwrap.dedent( + COMPLETION_SCRIPTS.get(options.shell, '') % { + 'prog': get_prog(), + } + ) + print(BASE_COMPLETION % {'script': script, 'shell': options.shell}) + else: + sys.stderr.write( + 'ERROR: You must pass %s\n' % ' or '.join(shell_options) + ) diff --git a/Lib/site-packages/pip/_internal/commands/configuration.py b/Lib/site-packages/pip/_internal/commands/configuration.py new file mode 100644 index 0000000..efcf5bb --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/configuration.py @@ -0,0 +1,233 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +import logging +import os +import subprocess + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.configuration import ( + Configuration, + get_configuration_files, + kinds, +) +from pip._internal.exceptions import PipError +from pip._internal.utils.misc import get_prog, write_output + +logger = logging.getLogger(__name__) + + +class ConfigurationCommand(Command): + """Manage local and global configuration. + + Subcommands: + + list: List the active configuration (or from the file specified) + edit: Edit the configuration file in an editor + get: Get the value associated with name + set: Set the name=value + unset: Unset the value associated with name + + If none of --user, --global and --site are passed, a virtual + environment configuration file is used if one is active and the file + exists. Otherwise, all modifications happen on the to the user file by + default. + """ + + ignore_require_venv = True + usage = """ + %prog [] list + %prog [] [--editor ] edit + + %prog [] get name + %prog [] set name value + %prog [] unset name + """ + + def __init__(self, *args, **kwargs): + super(ConfigurationCommand, self).__init__(*args, **kwargs) + + self.configuration = None + + self.cmd_opts.add_option( + '--editor', + dest='editor', + action='store', + default=None, + help=( + 'Editor to use to edit the file. Uses VISUAL or EDITOR ' + 'environment variables if not provided.' + ) + ) + + self.cmd_opts.add_option( + '--global', + dest='global_file', + action='store_true', + default=False, + help='Use the system-wide configuration file only' + ) + + self.cmd_opts.add_option( + '--user', + dest='user_file', + action='store_true', + default=False, + help='Use the user configuration file only' + ) + + self.cmd_opts.add_option( + '--site', + dest='site_file', + action='store_true', + default=False, + help='Use the current environment configuration file only' + ) + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options, args): + handlers = { + "list": self.list_values, + "edit": self.open_in_editor, + "get": self.get_name, + "set": self.set_name_value, + "unset": self.unset_name + } + + # Determine action + if not args or args[0] not in handlers: + logger.error("Need an action ({}) to perform.".format( + ", ".join(sorted(handlers))) + ) + return ERROR + + action = args[0] + + # Determine which configuration files are to be loaded + # Depends on whether the command is modifying. + try: + load_only = self._determine_file( + options, need_value=(action in ["get", "set", "unset", "edit"]) + ) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + # Load a new configuration + self.configuration = Configuration( + isolated=options.isolated_mode, load_only=load_only + ) + self.configuration.load() + + # Error handling happens here, not in the action-handlers. + try: + handlers[action](options, args[1:]) + except PipError as e: + logger.error(e.args[0]) + return ERROR + + return SUCCESS + + def _determine_file(self, options, need_value): + file_options = [key for key, value in ( + (kinds.USER, options.user_file), + (kinds.GLOBAL, options.global_file), + (kinds.SITE, options.site_file), + ) if value] + + if not file_options: + if not need_value: + return None + # Default to user, unless there's a site file. + elif any( + os.path.exists(site_config_file) + for site_config_file in get_configuration_files()[kinds.SITE] + ): + return kinds.SITE + else: + return kinds.USER + elif len(file_options) == 1: + return file_options[0] + + raise PipError( + "Need exactly one file to operate upon " + "(--user, --site, --global) to perform." + ) + + def list_values(self, options, args): + self._get_n_args(args, "list", n=0) + + for key, value in sorted(self.configuration.items()): + write_output("%s=%r", key, value) + + def get_name(self, options, args): + key = self._get_n_args(args, "get [name]", n=1) + value = self.configuration.get_value(key) + + write_output("%s", value) + + def set_name_value(self, options, args): + key, value = self._get_n_args(args, "set [name] [value]", n=2) + self.configuration.set_value(key, value) + + self._save_configuration() + + def unset_name(self, options, args): + key = self._get_n_args(args, "unset [name]", n=1) + self.configuration.unset_value(key) + + self._save_configuration() + + def open_in_editor(self, options, args): + editor = self._determine_editor(options) + + fname = self.configuration.get_file_to_edit() + if fname is None: + raise PipError("Could not determine appropriate file.") + + try: + subprocess.check_call([editor, fname]) + except subprocess.CalledProcessError as e: + raise PipError( + "Editor Subprocess exited with exit code {}" + .format(e.returncode) + ) + + def _get_n_args(self, args, example, n): + """Helper to make sure the command got the right number of arguments + """ + if len(args) != n: + msg = ( + 'Got unexpected number of arguments, expected {}. ' + '(example: "{} config {}")' + ).format(n, get_prog(), example) + raise PipError(msg) + + if n == 1: + return args[0] + else: + return args + + def _save_configuration(self): + # We successfully ran a modifying command. Need to save the + # configuration. + try: + self.configuration.save() + except Exception: + logger.error( + "Unable to save configuration. Please report this as a bug.", + exc_info=1 + ) + raise PipError("Internal Error.") + + def _determine_editor(self, options): + if options.editor is not None: + return options.editor + elif "VISUAL" in os.environ: + return os.environ["VISUAL"] + elif "EDITOR" in os.environ: + return os.environ["EDITOR"] + else: + raise PipError("Could not determine editor to use.") diff --git a/Lib/site-packages/pip/_internal/commands/debug.py b/Lib/site-packages/pip/_internal/commands/debug.py new file mode 100644 index 0000000..fe93b3a --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/debug.py @@ -0,0 +1,142 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import locale +import logging +import os +import sys + +from pip._vendor.certifi import where + +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import get_pip_version +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Any, List, Optional + from optparse import Values + +logger = logging.getLogger(__name__) + + +def show_value(name, value): + # type: (str, Optional[str]) -> None + logger.info('{}: {}'.format(name, value)) + + +def show_sys_implementation(): + # type: () -> None + logger.info('sys.implementation:') + if hasattr(sys, 'implementation'): + implementation = sys.implementation # type: ignore + implementation_name = implementation.name + else: + implementation_name = '' + + with indent_log(): + show_value('name', implementation_name) + + +def show_tags(options): + # type: (Values) -> None + tag_limit = 10 + + target_python = make_target_python(options) + tags = target_python.get_tags() + + # Display the target options that were explicitly provided. + formatted_target = target_python.format_given() + suffix = '' + if formatted_target: + suffix = ' (target: {})'.format(formatted_target) + + msg = 'Compatible tags: {}{}'.format(len(tags), suffix) + logger.info(msg) + + if options.verbose < 1 and len(tags) > tag_limit: + tags_limited = True + tags = tags[:tag_limit] + else: + tags_limited = False + + with indent_log(): + for tag in tags: + logger.info(str(tag)) + + if tags_limited: + msg = ( + '...\n' + '[First {tag_limit} tags shown. Pass --verbose to show all.]' + ).format(tag_limit=tag_limit) + logger.info(msg) + + +def ca_bundle_info(config): + levels = set() + for key, value in config.items(): + levels.add(key.split('.')[0]) + + if not levels: + return "Not specified" + + levels_that_override_global = ['install', 'wheel', 'download'] + global_overriding_level = [ + level for level in levels if level in levels_that_override_global + ] + if not global_overriding_level: + return 'global' + + levels.remove('global') + return ", ".join(levels) + + +class DebugCommand(Command): + """ + Display debug information. + """ + + usage = """ + %prog """ + ignore_require_venv = True + + def __init__(self, *args, **kw): + super(DebugCommand, self).__init__(*args, **kw) + + cmd_opts = self.cmd_opts + cmdoptions.add_target_python_options(cmd_opts) + self.parser.insert_option_group(0, cmd_opts) + self.parser.config.load() + + def run(self, options, args): + # type: (Values, List[Any]) -> int + logger.warning( + "This command is only meant for debugging. " + "Do not use this with automation for parsing and getting these " + "details, since the output and options of this command may " + "change without notice." + ) + show_value('pip version', get_pip_version()) + show_value('sys.version', sys.version) + show_value('sys.executable', sys.executable) + show_value('sys.getdefaultencoding', sys.getdefaultencoding()) + show_value('sys.getfilesystemencoding', sys.getfilesystemencoding()) + show_value( + 'locale.getpreferredencoding', locale.getpreferredencoding(), + ) + show_value('sys.platform', sys.platform) + show_sys_implementation() + + show_value("'cert' config value", ca_bundle_info(self.parser.config)) + show_value("REQUESTS_CA_BUNDLE", os.environ.get('REQUESTS_CA_BUNDLE')) + show_value("CURL_CA_BUNDLE", os.environ.get('CURL_CA_BUNDLE')) + show_value("pip._vendor.certifi.where()", where()) + + show_tags(options) + + return SUCCESS diff --git a/Lib/site-packages/pip/_internal/commands/download.py b/Lib/site-packages/pip/_internal/commands/download.py new file mode 100644 index 0000000..24da3eb --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/download.py @@ -0,0 +1,147 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import os + +from pip._internal.cli import cmdoptions +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.req_command import RequirementCommand +from pip._internal.req import RequirementSet +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.misc import ensure_dir, normalize_path, write_output +from pip._internal.utils.temp_dir import TempDirectory + +logger = logging.getLogger(__name__) + + +class DownloadCommand(RequirementCommand): + """ + Download packages from: + + - PyPI (and other indexes) using requirement specifiers. + - VCS project urls. + - Local project directories. + - Local or remote source archives. + + pip also supports downloading from "requirements files", which provide + an easy way to specify a whole environment to be downloaded. + """ + + usage = """ + %prog [options] [package-index-options] ... + %prog [options] -r [package-index-options] ... + %prog [options] ... + %prog [options] ... + %prog [options] ...""" + + def __init__(self, *args, **kw): + super(DownloadCommand, self).__init__(*args, **kw) + + cmd_opts = self.cmd_opts + + cmd_opts.add_option(cmdoptions.constraints()) + cmd_opts.add_option(cmdoptions.requirements()) + cmd_opts.add_option(cmdoptions.build_dir()) + cmd_opts.add_option(cmdoptions.no_deps()) + cmd_opts.add_option(cmdoptions.global_options()) + cmd_opts.add_option(cmdoptions.no_binary()) + cmd_opts.add_option(cmdoptions.only_binary()) + cmd_opts.add_option(cmdoptions.prefer_binary()) + cmd_opts.add_option(cmdoptions.src()) + cmd_opts.add_option(cmdoptions.pre()) + cmd_opts.add_option(cmdoptions.no_clean()) + cmd_opts.add_option(cmdoptions.require_hashes()) + cmd_opts.add_option(cmdoptions.progress_bar()) + cmd_opts.add_option(cmdoptions.no_build_isolation()) + cmd_opts.add_option(cmdoptions.use_pep517()) + cmd_opts.add_option(cmdoptions.no_use_pep517()) + + cmd_opts.add_option( + '-d', '--dest', '--destination-dir', '--destination-directory', + dest='download_dir', + metavar='dir', + default=os.curdir, + help=("Download packages into ."), + ) + + cmdoptions.add_target_python_options(cmd_opts) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, cmd_opts) + + def run(self, options, args): + options.ignore_installed = True + # editable doesn't really make sense for `pip download`, but the bowels + # of the RequirementSet code require that property. + options.editables = [] + + cmdoptions.check_dist_restriction(options) + + options.download_dir = normalize_path(options.download_dir) + + ensure_dir(options.download_dir) + + session = self.get_default_session(options) + + target_python = make_target_python(options) + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ) + build_delete = (not (options.no_clean or options.build_dir)) + + with get_requirement_tracker() as req_tracker, TempDirectory( + options.build_dir, delete=build_delete, kind="download" + ) as directory: + + requirement_set = RequirementSet() + self.populate_requirement_set( + requirement_set, + args, + options, + finder, + session, + None + ) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + download_dir=options.download_dir, + use_user_site=False, + ) + + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + py_version_info=options.python_version, + ) + + self.trace_basic_info(finder) + + resolver.resolve(requirement_set) + + downloaded = ' '.join([ + req.name for req in requirement_set.successfully_downloaded + ]) + if downloaded: + write_output('Successfully downloaded %s', downloaded) + + # Clean up + if not options.no_clean: + requirement_set.cleanup_files() + + return requirement_set diff --git a/Lib/site-packages/pip/_internal/commands/freeze.py b/Lib/site-packages/pip/_internal/commands/freeze.py new file mode 100644 index 0000000..c59eb39 --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/freeze.py @@ -0,0 +1,103 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import sys + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.base_command import Command +from pip._internal.models.format_control import FormatControl +from pip._internal.operations.freeze import freeze +from pip._internal.utils.compat import stdlib_pkgs + +DEV_PKGS = {'pip', 'setuptools', 'distribute', 'wheel'} + + +class FreezeCommand(Command): + """ + Output installed packages in requirements format. + + packages are listed in a case-insensitive sorted order. + """ + + usage = """ + %prog [options]""" + log_streams = ("ext://sys.stderr", "ext://sys.stderr") + + def __init__(self, *args, **kw): + super(FreezeCommand, self).__init__(*args, **kw) + + self.cmd_opts.add_option( + '-r', '--requirement', + dest='requirements', + action='append', + default=[], + metavar='file', + help="Use the order in the given requirements file and its " + "comments when generating output. This option can be " + "used multiple times.") + self.cmd_opts.add_option( + '-f', '--find-links', + dest='find_links', + action='append', + default=[], + metavar='URL', + help='URL for finding packages, which will be added to the ' + 'output.') + self.cmd_opts.add_option( + '-l', '--local', + dest='local', + action='store_true', + default=False, + help='If in a virtualenv that has global access, do not output ' + 'globally-installed packages.') + self.cmd_opts.add_option( + '--user', + dest='user', + action='store_true', + default=False, + help='Only output packages installed in user-site.') + self.cmd_opts.add_option(cmdoptions.list_path()) + self.cmd_opts.add_option( + '--all', + dest='freeze_all', + action='store_true', + help='Do not skip these packages in the output:' + ' %s' % ', '.join(DEV_PKGS)) + self.cmd_opts.add_option( + '--exclude-editable', + dest='exclude_editable', + action='store_true', + help='Exclude editable package from output.') + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options, args): + format_control = FormatControl(set(), set()) + wheel_cache = WheelCache(options.cache_dir, format_control) + skip = set(stdlib_pkgs) + if not options.freeze_all: + skip.update(DEV_PKGS) + + cmdoptions.check_list_path_option(options) + + freeze_kwargs = dict( + requirement=options.requirements, + find_links=options.find_links, + local_only=options.local, + user_only=options.user, + paths=options.path, + skip_regex=options.skip_requirements_regex, + isolated=options.isolated_mode, + wheel_cache=wheel_cache, + skip=skip, + exclude_editable=options.exclude_editable, + ) + + try: + for line in freeze(**freeze_kwargs): + sys.stdout.write(line + '\n') + finally: + wheel_cache.cleanup() diff --git a/Lib/site-packages/pip/_internal/commands/hash.py b/Lib/site-packages/pip/_internal/commands/hash.py new file mode 100644 index 0000000..1dc7fb0 --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/hash.py @@ -0,0 +1,58 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import hashlib +import logging +import sys + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR +from pip._internal.utils.hashes import FAVORITE_HASH, STRONG_HASHES +from pip._internal.utils.misc import read_chunks, write_output + +logger = logging.getLogger(__name__) + + +class HashCommand(Command): + """ + Compute a hash of a local package archive. + + These can be used with --hash in a requirements file to do repeatable + installs. + """ + + usage = '%prog [options] ...' + ignore_require_venv = True + + def __init__(self, *args, **kw): + super(HashCommand, self).__init__(*args, **kw) + self.cmd_opts.add_option( + '-a', '--algorithm', + dest='algorithm', + choices=STRONG_HASHES, + action='store', + default=FAVORITE_HASH, + help='The hash algorithm to use: one of %s' % + ', '.join(STRONG_HASHES)) + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options, args): + if not args: + self.parser.print_usage(sys.stderr) + return ERROR + + algorithm = options.algorithm + for path in args: + write_output('%s:\n--hash=%s:%s', + path, algorithm, _hash_of_file(path, algorithm)) + + +def _hash_of_file(path, algorithm): + """Return the hash digest of a file.""" + with open(path, 'rb') as archive: + hash = hashlib.new(algorithm) + for chunk in read_chunks(archive): + hash.update(chunk) + return hash.hexdigest() diff --git a/Lib/site-packages/pip/_internal/commands/help.py b/Lib/site-packages/pip/_internal/commands/help.py new file mode 100644 index 0000000..75af999 --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/help.py @@ -0,0 +1,41 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import SUCCESS +from pip._internal.exceptions import CommandError + + +class HelpCommand(Command): + """Show help for commands""" + + usage = """ + %prog """ + ignore_require_venv = True + + def run(self, options, args): + from pip._internal.commands import ( + commands_dict, create_command, get_similar_commands, + ) + + try: + # 'pip help' with no args is handled by pip.__init__.parseopt() + cmd_name = args[0] # the command we need help for + except IndexError: + return SUCCESS + + if cmd_name not in commands_dict: + guess = get_similar_commands(cmd_name) + + msg = ['unknown command "%s"' % cmd_name] + if guess: + msg.append('maybe you meant "%s"' % guess) + + raise CommandError(' - '.join(msg)) + + command = create_command(cmd_name) + command.parser.print_help() + + return SUCCESS diff --git a/Lib/site-packages/pip/_internal/commands/install.py b/Lib/site-packages/pip/_internal/commands/install.py new file mode 100644 index 0000000..02a187c --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/install.py @@ -0,0 +1,701 @@ +# The following comment should be removed at some point in the future. +# It's included for now because without it InstallCommand.run() has a +# couple errors where we have to know req.name is str rather than +# Optional[str] for the InstallRequirement req. +# mypy: strict-optional=False +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import errno +import logging +import operator +import os +import shutil +import site +from optparse import SUPPRESS_HELP + +from pip._vendor import pkg_resources +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.cmdoptions import make_target_python +from pip._internal.cli.req_command import RequirementCommand +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.exceptions import ( + CommandError, + InstallationError, + PreviousBuildDirError, +) +from pip._internal.locations import distutils_scheme +from pip._internal.operations.check import check_install_conflicts +from pip._internal.req import RequirementSet, install_given_reqs +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.distutils_args import parse_distutils_args +from pip._internal.utils.filesystem import test_writable_dir +from pip._internal.utils.misc import ( + ensure_dir, + get_installed_version, + protect_pip_from_modification_on_windows, + write_output, +) +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.virtualenv import virtualenv_no_global +from pip._internal.wheel_builder import build, should_build_for_install_command + +if MYPY_CHECK_RUNNING: + from optparse import Values + from typing import Any, Iterable, List, Optional + + from pip._internal.models.format_control import FormatControl + from pip._internal.req.req_install import InstallRequirement + from pip._internal.wheel_builder import BinaryAllowedPredicate + + +logger = logging.getLogger(__name__) + + +def get_check_binary_allowed(format_control): + # type: (FormatControl) -> BinaryAllowedPredicate + def check_binary_allowed(req): + # type: (InstallRequirement) -> bool + if req.use_pep517: + return True + canonical_name = canonicalize_name(req.name) + allowed_formats = format_control.get_allowed_formats(canonical_name) + return "binary" in allowed_formats + + return check_binary_allowed + + +class InstallCommand(RequirementCommand): + """ + Install packages from: + + - PyPI (and other indexes) using requirement specifiers. + - VCS project urls. + - Local project directories. + - Local or remote source archives. + + pip also supports installing from "requirements files", which provide + an easy way to specify a whole environment to be installed. + """ + + usage = """ + %prog [options] [package-index-options] ... + %prog [options] -r [package-index-options] ... + %prog [options] [-e] ... + %prog [options] [-e] ... + %prog [options] ...""" + + def __init__(self, *args, **kw): + super(InstallCommand, self).__init__(*args, **kw) + + cmd_opts = self.cmd_opts + + cmd_opts.add_option(cmdoptions.requirements()) + cmd_opts.add_option(cmdoptions.constraints()) + cmd_opts.add_option(cmdoptions.no_deps()) + cmd_opts.add_option(cmdoptions.pre()) + + cmd_opts.add_option(cmdoptions.editable()) + cmd_opts.add_option( + '-t', '--target', + dest='target_dir', + metavar='dir', + default=None, + help='Install packages into . ' + 'By default this will not replace existing files/folders in ' + '. Use --upgrade to replace existing packages in ' + 'with new versions.' + ) + cmdoptions.add_target_python_options(cmd_opts) + + cmd_opts.add_option( + '--user', + dest='use_user_site', + action='store_true', + help="Install to the Python user install directory for your " + "platform. Typically ~/.local/, or %APPDATA%\\Python on " + "Windows. (See the Python documentation for site.USER_BASE " + "for full details.)") + cmd_opts.add_option( + '--no-user', + dest='use_user_site', + action='store_false', + help=SUPPRESS_HELP) + cmd_opts.add_option( + '--root', + dest='root_path', + metavar='dir', + default=None, + help="Install everything relative to this alternate root " + "directory.") + cmd_opts.add_option( + '--prefix', + dest='prefix_path', + metavar='dir', + default=None, + help="Installation prefix where lib, bin and other top-level " + "folders are placed") + + cmd_opts.add_option(cmdoptions.build_dir()) + + cmd_opts.add_option(cmdoptions.src()) + + cmd_opts.add_option( + '-U', '--upgrade', + dest='upgrade', + action='store_true', + help='Upgrade all specified packages to the newest available ' + 'version. The handling of dependencies depends on the ' + 'upgrade-strategy used.' + ) + + cmd_opts.add_option( + '--upgrade-strategy', + dest='upgrade_strategy', + default='only-if-needed', + choices=['only-if-needed', 'eager'], + help='Determines how dependency upgrading should be handled ' + '[default: %default]. ' + '"eager" - dependencies are upgraded regardless of ' + 'whether the currently installed version satisfies the ' + 'requirements of the upgraded package(s). ' + '"only-if-needed" - are upgraded only when they do not ' + 'satisfy the requirements of the upgraded package(s).' + ) + + cmd_opts.add_option( + '--force-reinstall', + dest='force_reinstall', + action='store_true', + help='Reinstall all packages even if they are already ' + 'up-to-date.') + + cmd_opts.add_option( + '-I', '--ignore-installed', + dest='ignore_installed', + action='store_true', + help='Ignore the installed packages, overwriting them. ' + 'This can break your system if the existing package ' + 'is of a different version or was installed ' + 'with a different package manager!' + ) + + cmd_opts.add_option(cmdoptions.ignore_requires_python()) + cmd_opts.add_option(cmdoptions.no_build_isolation()) + cmd_opts.add_option(cmdoptions.use_pep517()) + cmd_opts.add_option(cmdoptions.no_use_pep517()) + + cmd_opts.add_option(cmdoptions.install_options()) + cmd_opts.add_option(cmdoptions.global_options()) + + cmd_opts.add_option( + "--compile", + action="store_true", + dest="compile", + default=True, + help="Compile Python source files to bytecode", + ) + + cmd_opts.add_option( + "--no-compile", + action="store_false", + dest="compile", + help="Do not compile Python source files to bytecode", + ) + + cmd_opts.add_option( + "--no-warn-script-location", + action="store_false", + dest="warn_script_location", + default=True, + help="Do not warn when installing scripts outside PATH", + ) + cmd_opts.add_option( + "--no-warn-conflicts", + action="store_false", + dest="warn_about_conflicts", + default=True, + help="Do not warn about broken dependencies", + ) + + cmd_opts.add_option(cmdoptions.no_binary()) + cmd_opts.add_option(cmdoptions.only_binary()) + cmd_opts.add_option(cmdoptions.prefer_binary()) + cmd_opts.add_option(cmdoptions.no_clean()) + cmd_opts.add_option(cmdoptions.require_hashes()) + cmd_opts.add_option(cmdoptions.progress_bar()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, cmd_opts) + + def run(self, options, args): + # type: (Values, List[Any]) -> int + cmdoptions.check_install_build_global(options) + upgrade_strategy = "to-satisfy-only" + if options.upgrade: + upgrade_strategy = options.upgrade_strategy + + cmdoptions.check_dist_restriction(options, check_target=True) + + install_options = options.install_options or [] + + options.use_user_site = decide_user_install( + options.use_user_site, + prefix_path=options.prefix_path, + target_dir=options.target_dir, + root_path=options.root_path, + isolated_mode=options.isolated_mode, + ) + + target_temp_dir = None # type: Optional[TempDirectory] + target_temp_dir_path = None # type: Optional[str] + if options.target_dir: + options.ignore_installed = True + options.target_dir = os.path.abspath(options.target_dir) + if (os.path.exists(options.target_dir) and not + os.path.isdir(options.target_dir)): + raise CommandError( + "Target path exists but is not a directory, will not " + "continue." + ) + + # Create a target directory for using with the target option + target_temp_dir = TempDirectory(kind="target") + target_temp_dir_path = target_temp_dir.path + + global_options = options.global_options or [] + + session = self.get_default_session(options) + + target_python = make_target_python(options) + finder = self._build_package_finder( + options=options, + session=session, + target_python=target_python, + ignore_requires_python=options.ignore_requires_python, + ) + build_delete = (not (options.no_clean or options.build_dir)) + wheel_cache = WheelCache(options.cache_dir, options.format_control) + + with get_requirement_tracker() as req_tracker, TempDirectory( + options.build_dir, delete=build_delete, kind="install" + ) as directory: + requirement_set = RequirementSet( + check_supported_wheels=not options.target_dir, + ) + + try: + self.populate_requirement_set( + requirement_set, args, options, finder, session, + wheel_cache + ) + + warn_deprecated_install_options( + requirement_set, options.install_options + ) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + use_user_site=options.use_user_site, + ) + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + wheel_cache=wheel_cache, + use_user_site=options.use_user_site, + ignore_installed=options.ignore_installed, + ignore_requires_python=options.ignore_requires_python, + force_reinstall=options.force_reinstall, + upgrade_strategy=upgrade_strategy, + use_pep517=options.use_pep517, + ) + + self.trace_basic_info(finder) + + resolver.resolve(requirement_set) + + try: + pip_req = requirement_set.get_requirement("pip") + except KeyError: + modifying_pip = None + else: + # If we're not replacing an already installed pip, + # we're not modifying it. + modifying_pip = pip_req.satisfied_by is None + protect_pip_from_modification_on_windows( + modifying_pip=modifying_pip + ) + + check_binary_allowed = get_check_binary_allowed( + finder.format_control + ) + + reqs_to_build = [ + r for r in requirement_set.requirements.values() + if should_build_for_install_command( + r, check_binary_allowed + ) + ] + + _, build_failures = build( + reqs_to_build, + wheel_cache=wheel_cache, + build_options=[], + global_options=[], + ) + + # If we're using PEP 517, we cannot do a direct install + # so we fail here. + # We don't care about failures building legacy + # requirements, as we'll fall through to a direct + # install for those. + pep517_build_failures = [ + r for r in build_failures if r.use_pep517 + ] + if pep517_build_failures: + raise InstallationError( + "Could not build wheels for {} which use" + " PEP 517 and cannot be installed directly".format( + ", ".join(r.name for r in pep517_build_failures))) + + to_install = resolver.get_installation_order( + requirement_set + ) + + # Consistency Checking of the package set we're installing. + should_warn_about_conflicts = ( + not options.ignore_dependencies and + options.warn_about_conflicts + ) + if should_warn_about_conflicts: + self._warn_about_conflicts(to_install) + + # Don't warn about script install locations if + # --target has been specified + warn_script_location = options.warn_script_location + if options.target_dir: + warn_script_location = False + + installed = install_given_reqs( + to_install, + install_options, + global_options, + root=options.root_path, + home=target_temp_dir_path, + prefix=options.prefix_path, + pycompile=options.compile, + warn_script_location=warn_script_location, + use_user_site=options.use_user_site, + ) + + lib_locations = get_lib_location_guesses( + user=options.use_user_site, + home=target_temp_dir_path, + root=options.root_path, + prefix=options.prefix_path, + isolated=options.isolated_mode, + ) + working_set = pkg_resources.WorkingSet(lib_locations) + + installed.sort(key=operator.attrgetter('name')) + items = [] + for result in installed: + item = result.name + try: + installed_version = get_installed_version( + result.name, working_set=working_set + ) + if installed_version: + item += '-' + installed_version + except Exception: + pass + items.append(item) + installed_desc = ' '.join(items) + if installed_desc: + write_output( + 'Successfully installed %s', installed_desc, + ) + except EnvironmentError as error: + show_traceback = (self.verbosity >= 1) + + message = create_env_error_message( + error, show_traceback, options.use_user_site, + ) + logger.error(message, exc_info=show_traceback) + + return ERROR + except PreviousBuildDirError: + options.no_clean = True + raise + finally: + # Clean up + if not options.no_clean: + requirement_set.cleanup_files() + wheel_cache.cleanup() + + if options.target_dir: + self._handle_target_dir( + options.target_dir, target_temp_dir, options.upgrade + ) + + return SUCCESS + + def _handle_target_dir(self, target_dir, target_temp_dir, upgrade): + ensure_dir(target_dir) + + # Checking both purelib and platlib directories for installed + # packages to be moved to target directory + lib_dir_list = [] + + with target_temp_dir: + # Checking both purelib and platlib directories for installed + # packages to be moved to target directory + scheme = distutils_scheme('', home=target_temp_dir.path) + purelib_dir = scheme['purelib'] + platlib_dir = scheme['platlib'] + data_dir = scheme['data'] + + if os.path.exists(purelib_dir): + lib_dir_list.append(purelib_dir) + if os.path.exists(platlib_dir) and platlib_dir != purelib_dir: + lib_dir_list.append(platlib_dir) + if os.path.exists(data_dir): + lib_dir_list.append(data_dir) + + for lib_dir in lib_dir_list: + for item in os.listdir(lib_dir): + if lib_dir == data_dir: + ddir = os.path.join(data_dir, item) + if any(s.startswith(ddir) for s in lib_dir_list[:-1]): + continue + target_item_dir = os.path.join(target_dir, item) + if os.path.exists(target_item_dir): + if not upgrade: + logger.warning( + 'Target directory %s already exists. Specify ' + '--upgrade to force replacement.', + target_item_dir + ) + continue + if os.path.islink(target_item_dir): + logger.warning( + 'Target directory %s already exists and is ' + 'a link. Pip will not automatically replace ' + 'links, please remove if replacement is ' + 'desired.', + target_item_dir + ) + continue + if os.path.isdir(target_item_dir): + shutil.rmtree(target_item_dir) + else: + os.remove(target_item_dir) + + shutil.move( + os.path.join(lib_dir, item), + target_item_dir + ) + + def _warn_about_conflicts(self, to_install): + try: + package_set, _dep_info = check_install_conflicts(to_install) + except Exception: + logger.error("Error checking for conflicts.", exc_info=True) + return + missing, conflicting = _dep_info + + # NOTE: There is some duplication here from pip check + for project_name in missing: + version = package_set[project_name][0] + for dependency in missing[project_name]: + logger.critical( + "%s %s requires %s, which is not installed.", + project_name, version, dependency[1], + ) + + for project_name in conflicting: + version = package_set[project_name][0] + for dep_name, dep_version, req in conflicting[project_name]: + logger.critical( + "%s %s has requirement %s, but you'll have %s %s which is " + "incompatible.", + project_name, version, req, dep_name, dep_version, + ) + + +def get_lib_location_guesses(*args, **kwargs): + scheme = distutils_scheme('', *args, **kwargs) + return [scheme['purelib'], scheme['platlib']] + + +def site_packages_writable(**kwargs): + return all( + test_writable_dir(d) for d in set(get_lib_location_guesses(**kwargs)) + ) + + +def decide_user_install( + use_user_site, # type: Optional[bool] + prefix_path=None, # type: Optional[str] + target_dir=None, # type: Optional[str] + root_path=None, # type: Optional[str] + isolated_mode=False, # type: bool +): + # type: (...) -> bool + """Determine whether to do a user install based on the input options. + + If use_user_site is False, no additional checks are done. + If use_user_site is True, it is checked for compatibility with other + options. + If use_user_site is None, the default behaviour depends on the environment, + which is provided by the other arguments. + """ + # In some cases (config from tox), use_user_site can be set to an integer + # rather than a bool, which 'use_user_site is False' wouldn't catch. + if (use_user_site is not None) and (not use_user_site): + logger.debug("Non-user install by explicit request") + return False + + if use_user_site: + if prefix_path: + raise CommandError( + "Can not combine '--user' and '--prefix' as they imply " + "different installation locations" + ) + if virtualenv_no_global(): + raise InstallationError( + "Can not perform a '--user' install. User site-packages " + "are not visible in this virtualenv." + ) + logger.debug("User install by explicit request") + return True + + # If we are here, user installs have not been explicitly requested/avoided + assert use_user_site is None + + # user install incompatible with --prefix/--target + if prefix_path or target_dir: + logger.debug("Non-user install due to --prefix or --target option") + return False + + # If user installs are not enabled, choose a non-user install + if not site.ENABLE_USER_SITE: + logger.debug("Non-user install because user site-packages disabled") + return False + + # If we have permission for a non-user install, do that, + # otherwise do a user install. + if site_packages_writable(root=root_path, isolated=isolated_mode): + logger.debug("Non-user install because site-packages writeable") + return False + + logger.info("Defaulting to user installation because normal site-packages " + "is not writeable") + return True + + +def warn_deprecated_install_options(requirement_set, options): + # type: (RequirementSet, Optional[List[str]]) -> None + """If any location-changing --install-option arguments were passed for + requirements or on the command-line, then show a deprecation warning. + """ + def format_options(option_names): + # type: (Iterable[str]) -> List[str] + return ["--{}".format(name.replace("_", "-")) for name in option_names] + + requirements = ( + requirement_set.unnamed_requirements + + list(requirement_set.requirements.values()) + ) + + offenders = [] + + for requirement in requirements: + install_options = requirement.options.get("install_options", []) + location_options = parse_distutils_args(install_options) + if location_options: + offenders.append( + "{!r} from {}".format( + format_options(location_options.keys()), requirement + ) + ) + + if options: + location_options = parse_distutils_args(options) + if location_options: + offenders.append( + "{!r} from command line".format( + format_options(location_options.keys()) + ) + ) + + if not offenders: + return + + deprecated( + reason=( + "Location-changing options found in --install-option: {}. " + "This configuration may cause unexpected behavior and is " + "unsupported.".format( + "; ".join(offenders) + ) + ), + replacement=( + "using pip-level options like --user, --prefix, --root, and " + "--target" + ), + gone_in="20.2", + issue=7309, + ) + + +def create_env_error_message(error, show_traceback, using_user_site): + """Format an error message for an EnvironmentError + + It may occur anytime during the execution of the install command. + """ + parts = [] + + # Mention the error if we are not going to show a traceback + parts.append("Could not install packages due to an EnvironmentError") + if not show_traceback: + parts.append(": ") + parts.append(str(error)) + else: + parts.append(".") + + # Spilt the error indication from a helper message (if any) + parts[-1] += "\n" + + # Suggest useful actions to the user: + # (1) using user site-packages or (2) verifying the permissions + if error.errno == errno.EACCES: + user_option_part = "Consider using the `--user` option" + permissions_part = "Check the permissions" + + if not using_user_site: + parts.extend([ + user_option_part, " or ", + permissions_part.lower(), + ]) + else: + parts.append(permissions_part) + parts.append(".\n") + + return "".join(parts).strip() + "\n" diff --git a/Lib/site-packages/pip/_internal/commands/list.py b/Lib/site-packages/pip/_internal/commands/list.py new file mode 100644 index 0000000..cce470a --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/list.py @@ -0,0 +1,313 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import json +import logging + +from pip._vendor import six +from pip._vendor.six.moves import zip_longest + +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import IndexGroupCommand +from pip._internal.exceptions import CommandError +from pip._internal.index.package_finder import PackageFinder +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.self_outdated_check import make_link_collector +from pip._internal.utils.misc import ( + dist_is_editable, + get_installed_distributions, + write_output, +) +from pip._internal.utils.packaging import get_installer + +logger = logging.getLogger(__name__) + + +class ListCommand(IndexGroupCommand): + """ + List installed packages, including editables. + + Packages are listed in a case-insensitive sorted order. + """ + + usage = """ + %prog [options]""" + + def __init__(self, *args, **kw): + super(ListCommand, self).__init__(*args, **kw) + + cmd_opts = self.cmd_opts + + cmd_opts.add_option( + '-o', '--outdated', + action='store_true', + default=False, + help='List outdated packages') + cmd_opts.add_option( + '-u', '--uptodate', + action='store_true', + default=False, + help='List uptodate packages') + cmd_opts.add_option( + '-e', '--editable', + action='store_true', + default=False, + help='List editable projects.') + cmd_opts.add_option( + '-l', '--local', + action='store_true', + default=False, + help=('If in a virtualenv that has global access, do not list ' + 'globally-installed packages.'), + ) + self.cmd_opts.add_option( + '--user', + dest='user', + action='store_true', + default=False, + help='Only output packages installed in user-site.') + cmd_opts.add_option(cmdoptions.list_path()) + cmd_opts.add_option( + '--pre', + action='store_true', + default=False, + help=("Include pre-release and development versions. By default, " + "pip only finds stable versions."), + ) + + cmd_opts.add_option( + '--format', + action='store', + dest='list_format', + default="columns", + choices=('columns', 'freeze', 'json'), + help="Select the output format among: columns (default), freeze, " + "or json", + ) + + cmd_opts.add_option( + '--not-required', + action='store_true', + dest='not_required', + help="List packages that are not dependencies of " + "installed packages.", + ) + + cmd_opts.add_option( + '--exclude-editable', + action='store_false', + dest='include_editable', + help='Exclude editable package from output.', + ) + cmd_opts.add_option( + '--include-editable', + action='store_true', + dest='include_editable', + help='Include editable package from output.', + default=True, + ) + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, self.parser + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, cmd_opts) + + def _build_package_finder(self, options, session): + """ + Create a package finder appropriate to this list command. + """ + link_collector = make_link_collector(session, options=options) + + # Pass allow_yanked=False to ignore yanked versions. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=options.pre, + ) + + return PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + ) + + def run(self, options, args): + if options.outdated and options.uptodate: + raise CommandError( + "Options --outdated and --uptodate cannot be combined.") + + cmdoptions.check_list_path_option(options) + + packages = get_installed_distributions( + local_only=options.local, + user_only=options.user, + editables_only=options.editable, + include_editables=options.include_editable, + paths=options.path, + ) + + # get_not_required must be called firstly in order to find and + # filter out all dependencies correctly. Otherwise a package + # can't be identified as requirement because some parent packages + # could be filtered out before. + if options.not_required: + packages = self.get_not_required(packages, options) + + if options.outdated: + packages = self.get_outdated(packages, options) + elif options.uptodate: + packages = self.get_uptodate(packages, options) + + self.output_package_listing(packages, options) + + def get_outdated(self, packages, options): + return [ + dist for dist in self.iter_packages_latest_infos(packages, options) + if dist.latest_version > dist.parsed_version + ] + + def get_uptodate(self, packages, options): + return [ + dist for dist in self.iter_packages_latest_infos(packages, options) + if dist.latest_version == dist.parsed_version + ] + + def get_not_required(self, packages, options): + dep_keys = set() + for dist in packages: + dep_keys.update(requirement.key for requirement in dist.requires()) + return {pkg for pkg in packages if pkg.key not in dep_keys} + + def iter_packages_latest_infos(self, packages, options): + with self._build_session(options) as session: + finder = self._build_package_finder(options, session) + + for dist in packages: + typ = 'unknown' + all_candidates = finder.find_all_candidates(dist.key) + if not options.pre: + # Remove prereleases + all_candidates = [candidate for candidate in all_candidates + if not candidate.version.is_prerelease] + + evaluator = finder.make_candidate_evaluator( + project_name=dist.project_name, + ) + best_candidate = evaluator.sort_best_candidate(all_candidates) + if best_candidate is None: + continue + + remote_version = best_candidate.version + if best_candidate.link.is_wheel: + typ = 'wheel' + else: + typ = 'sdist' + # This is dirty but makes the rest of the code much cleaner + dist.latest_version = remote_version + dist.latest_filetype = typ + yield dist + + def output_package_listing(self, packages, options): + packages = sorted( + packages, + key=lambda dist: dist.project_name.lower(), + ) + if options.list_format == 'columns' and packages: + data, header = format_for_columns(packages, options) + self.output_package_listing_columns(data, header) + elif options.list_format == 'freeze': + for dist in packages: + if options.verbose >= 1: + write_output("%s==%s (%s)", dist.project_name, + dist.version, dist.location) + else: + write_output("%s==%s", dist.project_name, dist.version) + elif options.list_format == 'json': + write_output(format_for_json(packages, options)) + + def output_package_listing_columns(self, data, header): + # insert the header first: we need to know the size of column names + if len(data) > 0: + data.insert(0, header) + + pkg_strings, sizes = tabulate(data) + + # Create and add a separator. + if len(data) > 0: + pkg_strings.insert(1, " ".join(map(lambda x: '-' * x, sizes))) + + for val in pkg_strings: + write_output(val) + + +def tabulate(vals): + # From pfmoore on GitHub: + # https://github.com/pypa/pip/issues/3651#issuecomment-216932564 + assert len(vals) > 0 + + sizes = [0] * max(len(x) for x in vals) + for row in vals: + sizes = [max(s, len(str(c))) for s, c in zip_longest(sizes, row)] + + result = [] + for row in vals: + display = " ".join([str(c).ljust(s) if c is not None else '' + for s, c in zip_longest(sizes, row)]) + result.append(display) + + return result, sizes + + +def format_for_columns(pkgs, options): + """ + Convert the package data into something usable + by output_package_listing_columns. + """ + running_outdated = options.outdated + # Adjust the header for the `pip list --outdated` case. + if running_outdated: + header = ["Package", "Version", "Latest", "Type"] + else: + header = ["Package", "Version"] + + data = [] + if options.verbose >= 1 or any(dist_is_editable(x) for x in pkgs): + header.append("Location") + if options.verbose >= 1: + header.append("Installer") + + for proj in pkgs: + # if we're working on the 'outdated' list, separate out the + # latest_version and type + row = [proj.project_name, proj.version] + + if running_outdated: + row.append(proj.latest_version) + row.append(proj.latest_filetype) + + if options.verbose >= 1 or dist_is_editable(proj): + row.append(proj.location) + if options.verbose >= 1: + row.append(get_installer(proj)) + + data.append(row) + + return data, header + + +def format_for_json(packages, options): + data = [] + for dist in packages: + info = { + 'name': dist.project_name, + 'version': six.text_type(dist.version), + } + if options.verbose >= 1: + info['location'] = dist.location + info['installer'] = get_installer(dist) + if options.outdated: + info['latest_version'] = six.text_type(dist.latest_version) + info['latest_filetype'] = dist.latest_filetype + data.append(info) + return json.dumps(data) diff --git a/Lib/site-packages/pip/_internal/commands/search.py b/Lib/site-packages/pip/_internal/commands/search.py new file mode 100644 index 0000000..2e880ee --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/search.py @@ -0,0 +1,145 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import sys +import textwrap +from collections import OrderedDict + +from pip._vendor import pkg_resources +from pip._vendor.packaging.version import parse as parse_version +# NOTE: XMLRPC Client is not annotated in typeshed as on 2017-07-17, which is +# why we ignore the type on this import +from pip._vendor.six.moves import xmlrpc_client # type: ignore + +from pip._internal.cli.base_command import Command +from pip._internal.cli.req_command import SessionCommandMixin +from pip._internal.cli.status_codes import NO_MATCHES_FOUND, SUCCESS +from pip._internal.exceptions import CommandError +from pip._internal.models.index import PyPI +from pip._internal.network.xmlrpc import PipXmlrpcTransport +from pip._internal.utils.compat import get_terminal_size +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class SearchCommand(Command, SessionCommandMixin): + """Search for PyPI packages whose name or summary contains .""" + + usage = """ + %prog [options] """ + ignore_require_venv = True + + def __init__(self, *args, **kw): + super(SearchCommand, self).__init__(*args, **kw) + self.cmd_opts.add_option( + '-i', '--index', + dest='index', + metavar='URL', + default=PyPI.pypi_url, + help='Base URL of Python Package Index (default %default)') + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options, args): + if not args: + raise CommandError('Missing required argument (search query).') + query = args + pypi_hits = self.search(query, options) + hits = transform_hits(pypi_hits) + + terminal_width = None + if sys.stdout.isatty(): + terminal_width = get_terminal_size()[0] + + print_results(hits, terminal_width=terminal_width) + if pypi_hits: + return SUCCESS + return NO_MATCHES_FOUND + + def search(self, query, options): + index_url = options.index + + session = self.get_default_session(options) + + transport = PipXmlrpcTransport(index_url, session) + pypi = xmlrpc_client.ServerProxy(index_url, transport) + hits = pypi.search({'name': query, 'summary': query}, 'or') + return hits + + +def transform_hits(hits): + """ + The list from pypi is really a list of versions. We want a list of + packages with the list of versions stored inline. This converts the + list from pypi into one we can use. + """ + packages = OrderedDict() + for hit in hits: + name = hit['name'] + summary = hit['summary'] + version = hit['version'] + + if name not in packages.keys(): + packages[name] = { + 'name': name, + 'summary': summary, + 'versions': [version], + } + else: + packages[name]['versions'].append(version) + + # if this is the highest version, replace summary and score + if version == highest_version(packages[name]['versions']): + packages[name]['summary'] = summary + + return list(packages.values()) + + +def print_results(hits, name_column_width=None, terminal_width=None): + if not hits: + return + if name_column_width is None: + name_column_width = max([ + len(hit['name']) + len(highest_version(hit.get('versions', ['-']))) + for hit in hits + ]) + 4 + + installed_packages = [p.project_name for p in pkg_resources.working_set] + for hit in hits: + name = hit['name'] + summary = hit['summary'] or '' + latest = highest_version(hit.get('versions', ['-'])) + if terminal_width is not None: + target_width = terminal_width - name_column_width - 5 + if target_width > 10: + # wrap and indent summary to fit terminal + summary = textwrap.wrap(summary, target_width) + summary = ('\n' + ' ' * (name_column_width + 3)).join(summary) + + line = '%-*s - %s' % (name_column_width, + '%s (%s)' % (name, latest), summary) + try: + write_output(line) + if name in installed_packages: + dist = pkg_resources.get_distribution(name) + with indent_log(): + if dist.version == latest: + write_output('INSTALLED: %s (latest)', dist.version) + else: + write_output('INSTALLED: %s', dist.version) + if parse_version(latest).pre: + write_output('LATEST: %s (pre-release; install' + ' with "pip install --pre")', latest) + else: + write_output('LATEST: %s', latest) + except UnicodeEncodeError: + pass + + +def highest_version(versions): + return max(versions, key=parse_version) diff --git a/Lib/site-packages/pip/_internal/commands/show.py b/Lib/site-packages/pip/_internal/commands/show.py new file mode 100644 index 0000000..a46b08e --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/show.py @@ -0,0 +1,180 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import os +from email.parser import FeedParser + +from pip._vendor import pkg_resources +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.base_command import Command +from pip._internal.cli.status_codes import ERROR, SUCCESS +from pip._internal.utils.misc import write_output + +logger = logging.getLogger(__name__) + + +class ShowCommand(Command): + """ + Show information about one or more installed packages. + + The output is in RFC-compliant mail header format. + """ + + usage = """ + %prog [options] ...""" + ignore_require_venv = True + + def __init__(self, *args, **kw): + super(ShowCommand, self).__init__(*args, **kw) + self.cmd_opts.add_option( + '-f', '--files', + dest='files', + action='store_true', + default=False, + help='Show the full list of installed files for each package.') + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options, args): + if not args: + logger.warning('ERROR: Please provide a package name or names.') + return ERROR + query = args + + results = search_packages_info(query) + if not print_results( + results, list_files=options.files, verbose=options.verbose): + return ERROR + return SUCCESS + + +def search_packages_info(query): + """ + Gather details from installed distributions. Print distribution name, + version, location, and installed files. Installed files requires a + pip generated 'installed-files.txt' in the distributions '.egg-info' + directory. + """ + installed = {} + for p in pkg_resources.working_set: + installed[canonicalize_name(p.project_name)] = p + + query_names = [canonicalize_name(name) for name in query] + missing = sorted( + [name for name, pkg in zip(query, query_names) if pkg not in installed] + ) + if missing: + logger.warning('Package(s) not found: %s', ', '.join(missing)) + + def get_requiring_packages(package_name): + canonical_name = canonicalize_name(package_name) + return [ + pkg.project_name for pkg in pkg_resources.working_set + if canonical_name in + [canonicalize_name(required.name) for required in + pkg.requires()] + ] + + for dist in [installed[pkg] for pkg in query_names if pkg in installed]: + package = { + 'name': dist.project_name, + 'version': dist.version, + 'location': dist.location, + 'requires': [dep.project_name for dep in dist.requires()], + 'required_by': get_requiring_packages(dist.project_name) + } + file_list = None + metadata = None + if isinstance(dist, pkg_resources.DistInfoDistribution): + # RECORDs should be part of .dist-info metadatas + if dist.has_metadata('RECORD'): + lines = dist.get_metadata_lines('RECORD') + paths = [l.split(',')[0] for l in lines] + paths = [os.path.join(dist.location, p) for p in paths] + file_list = [os.path.relpath(p, dist.location) for p in paths] + + if dist.has_metadata('METADATA'): + metadata = dist.get_metadata('METADATA') + else: + # Otherwise use pip's log for .egg-info's + if dist.has_metadata('installed-files.txt'): + paths = dist.get_metadata_lines('installed-files.txt') + paths = [os.path.join(dist.egg_info, p) for p in paths] + file_list = [os.path.relpath(p, dist.location) for p in paths] + + if dist.has_metadata('PKG-INFO'): + metadata = dist.get_metadata('PKG-INFO') + + if dist.has_metadata('entry_points.txt'): + entry_points = dist.get_metadata_lines('entry_points.txt') + package['entry_points'] = entry_points + + if dist.has_metadata('INSTALLER'): + for line in dist.get_metadata_lines('INSTALLER'): + if line.strip(): + package['installer'] = line.strip() + break + + # @todo: Should pkg_resources.Distribution have a + # `get_pkg_info` method? + feed_parser = FeedParser() + feed_parser.feed(metadata) + pkg_info_dict = feed_parser.close() + for key in ('metadata-version', 'summary', + 'home-page', 'author', 'author-email', 'license'): + package[key] = pkg_info_dict.get(key) + + # It looks like FeedParser cannot deal with repeated headers + classifiers = [] + for line in metadata.splitlines(): + if line.startswith('Classifier: '): + classifiers.append(line[len('Classifier: '):]) + package['classifiers'] = classifiers + + if file_list: + package['files'] = sorted(file_list) + yield package + + +def print_results(distributions, list_files=False, verbose=False): + """ + Print the informations from installed distributions found. + """ + results_printed = False + for i, dist in enumerate(distributions): + results_printed = True + if i > 0: + write_output("---") + + write_output("Name: %s", dist.get('name', '')) + write_output("Version: %s", dist.get('version', '')) + write_output("Summary: %s", dist.get('summary', '')) + write_output("Home-page: %s", dist.get('home-page', '')) + write_output("Author: %s", dist.get('author', '')) + write_output("Author-email: %s", dist.get('author-email', '')) + write_output("License: %s", dist.get('license', '')) + write_output("Location: %s", dist.get('location', '')) + write_output("Requires: %s", ', '.join(dist.get('requires', []))) + write_output("Required-by: %s", ', '.join(dist.get('required_by', []))) + + if verbose: + write_output("Metadata-Version: %s", + dist.get('metadata-version', '')) + write_output("Installer: %s", dist.get('installer', '')) + write_output("Classifiers:") + for classifier in dist.get('classifiers', []): + write_output(" %s", classifier) + write_output("Entry-points:") + for entry in dist.get('entry_points', []): + write_output(" %s", entry.strip()) + if list_files: + write_output("Files:") + for line in dist.get('files', []): + write_output(" %s", line.strip()) + if "files" not in dist: + write_output("Cannot locate installed-files.txt") + return results_printed diff --git a/Lib/site-packages/pip/_internal/commands/uninstall.py b/Lib/site-packages/pip/_internal/commands/uninstall.py new file mode 100644 index 0000000..1bde414 --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/uninstall.py @@ -0,0 +1,82 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.cli.base_command import Command +from pip._internal.cli.req_command import SessionCommandMixin +from pip._internal.exceptions import InstallationError +from pip._internal.req import parse_requirements +from pip._internal.req.constructors import install_req_from_line +from pip._internal.utils.misc import protect_pip_from_modification_on_windows + + +class UninstallCommand(Command, SessionCommandMixin): + """ + Uninstall packages. + + pip is able to uninstall most installed packages. Known exceptions are: + + - Pure distutils packages installed with ``python setup.py install``, which + leave behind no metadata to determine what files were installed. + - Script wrappers installed by ``python setup.py develop``. + """ + + usage = """ + %prog [options] ... + %prog [options] -r ...""" + + def __init__(self, *args, **kw): + super(UninstallCommand, self).__init__(*args, **kw) + self.cmd_opts.add_option( + '-r', '--requirement', + dest='requirements', + action='append', + default=[], + metavar='file', + help='Uninstall all the packages listed in the given requirements ' + 'file. This option can be used multiple times.', + ) + self.cmd_opts.add_option( + '-y', '--yes', + dest='yes', + action='store_true', + help="Don't ask for confirmation of uninstall deletions.") + + self.parser.insert_option_group(0, self.cmd_opts) + + def run(self, options, args): + session = self.get_default_session(options) + + reqs_to_uninstall = {} + for name in args: + req = install_req_from_line( + name, isolated=options.isolated_mode, + ) + if req.name: + reqs_to_uninstall[canonicalize_name(req.name)] = req + for filename in options.requirements: + for req in parse_requirements( + filename, + options=options, + session=session): + if req.name: + reqs_to_uninstall[canonicalize_name(req.name)] = req + if not reqs_to_uninstall: + raise InstallationError( + 'You must give at least one requirement to %(name)s (see ' + '"pip help %(name)s")' % dict(name=self.name) + ) + + protect_pip_from_modification_on_windows( + modifying_pip="pip" in reqs_to_uninstall + ) + + for req in reqs_to_uninstall.values(): + uninstall_pathset = req.uninstall( + auto_confirm=options.yes, verbose=self.verbosity > 0, + ) + if uninstall_pathset: + uninstall_pathset.commit() diff --git a/Lib/site-packages/pip/_internal/commands/wheel.py b/Lib/site-packages/pip/_internal/commands/wheel.py new file mode 100644 index 0000000..eb44bce --- /dev/null +++ b/Lib/site-packages/pip/_internal/commands/wheel.py @@ -0,0 +1,197 @@ +# -*- coding: utf-8 -*- + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import os +import shutil + +from pip._internal.cache import WheelCache +from pip._internal.cli import cmdoptions +from pip._internal.cli.req_command import RequirementCommand +from pip._internal.exceptions import CommandError, PreviousBuildDirError +from pip._internal.req import RequirementSet +from pip._internal.req.req_tracker import get_requirement_tracker +from pip._internal.utils.misc import ensure_dir, normalize_path +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.wheel_builder import build, should_build_for_wheel_command + +if MYPY_CHECK_RUNNING: + from optparse import Values + from typing import Any, List + + +logger = logging.getLogger(__name__) + + +class WheelCommand(RequirementCommand): + """ + Build Wheel archives for your requirements and dependencies. + + Wheel is a built-package format, and offers the advantage of not + recompiling your software during every install. For more details, see the + wheel docs: https://wheel.readthedocs.io/en/latest/ + + Requirements: setuptools>=0.8, and wheel. + + 'pip wheel' uses the bdist_wheel setuptools extension from the wheel + package to build individual wheels. + + """ + + usage = """ + %prog [options] ... + %prog [options] -r ... + %prog [options] [-e] ... + %prog [options] [-e] ... + %prog [options] ...""" + + def __init__(self, *args, **kw): + super(WheelCommand, self).__init__(*args, **kw) + + cmd_opts = self.cmd_opts + + cmd_opts.add_option( + '-w', '--wheel-dir', + dest='wheel_dir', + metavar='dir', + default=os.curdir, + help=("Build wheels into , where the default is the " + "current working directory."), + ) + cmd_opts.add_option(cmdoptions.no_binary()) + cmd_opts.add_option(cmdoptions.only_binary()) + cmd_opts.add_option(cmdoptions.prefer_binary()) + cmd_opts.add_option( + '--build-option', + dest='build_options', + metavar='options', + action='append', + help="Extra arguments to be supplied to 'setup.py bdist_wheel'.", + ) + cmd_opts.add_option(cmdoptions.no_build_isolation()) + cmd_opts.add_option(cmdoptions.use_pep517()) + cmd_opts.add_option(cmdoptions.no_use_pep517()) + cmd_opts.add_option(cmdoptions.constraints()) + cmd_opts.add_option(cmdoptions.editable()) + cmd_opts.add_option(cmdoptions.requirements()) + cmd_opts.add_option(cmdoptions.src()) + cmd_opts.add_option(cmdoptions.ignore_requires_python()) + cmd_opts.add_option(cmdoptions.no_deps()) + cmd_opts.add_option(cmdoptions.build_dir()) + cmd_opts.add_option(cmdoptions.progress_bar()) + + cmd_opts.add_option( + '--global-option', + dest='global_options', + action='append', + metavar='options', + help="Extra global options to be supplied to the setup.py " + "call before the 'bdist_wheel' command.") + + cmd_opts.add_option( + '--pre', + action='store_true', + default=False, + help=("Include pre-release and development versions. By default, " + "pip only finds stable versions."), + ) + + cmd_opts.add_option(cmdoptions.no_clean()) + cmd_opts.add_option(cmdoptions.require_hashes()) + + index_opts = cmdoptions.make_option_group( + cmdoptions.index_group, + self.parser, + ) + + self.parser.insert_option_group(0, index_opts) + self.parser.insert_option_group(0, cmd_opts) + + def run(self, options, args): + # type: (Values, List[Any]) -> None + cmdoptions.check_install_build_global(options) + + session = self.get_default_session(options) + + finder = self._build_package_finder(options, session) + build_delete = (not (options.no_clean or options.build_dir)) + wheel_cache = WheelCache(options.cache_dir, options.format_control) + + options.wheel_dir = normalize_path(options.wheel_dir) + ensure_dir(options.wheel_dir) + + with get_requirement_tracker() as req_tracker, TempDirectory( + options.build_dir, delete=build_delete, kind="wheel" + ) as directory: + + requirement_set = RequirementSet() + + try: + self.populate_requirement_set( + requirement_set, args, options, finder, session, + wheel_cache + ) + + preparer = self.make_requirement_preparer( + temp_build_dir=directory, + options=options, + req_tracker=req_tracker, + session=session, + finder=finder, + wheel_download_dir=options.wheel_dir, + use_user_site=False, + ) + + resolver = self.make_resolver( + preparer=preparer, + finder=finder, + options=options, + wheel_cache=wheel_cache, + ignore_requires_python=options.ignore_requires_python, + use_pep517=options.use_pep517, + ) + + self.trace_basic_info(finder) + + resolver.resolve(requirement_set) + + reqs_to_build = [ + r for r in requirement_set.requirements.values() + if should_build_for_wheel_command(r) + ] + + # build wheels + build_successes, build_failures = build( + reqs_to_build, + wheel_cache=wheel_cache, + build_options=options.build_options or [], + global_options=options.global_options or [], + ) + for req in build_successes: + assert req.link and req.link.is_wheel + assert req.local_file_path + # copy from cache to target directory + try: + shutil.copy(req.local_file_path, options.wheel_dir) + except OSError as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, e, + ) + build_failures.append(req) + if len(build_failures) != 0: + raise CommandError( + "Failed to build one or more wheels" + ) + except PreviousBuildDirError: + options.no_clean = True + raise + finally: + if not options.no_clean: + requirement_set.cleanup_files() + wheel_cache.cleanup() diff --git a/Lib/site-packages/pip/_internal/configuration.py b/Lib/site-packages/pip/_internal/configuration.py new file mode 100644 index 0000000..f09a1ae --- /dev/null +++ b/Lib/site-packages/pip/_internal/configuration.py @@ -0,0 +1,422 @@ +"""Configuration management setup + +Some terminology: +- name + As written in config files. +- value + Value associated with a name +- key + Name combined with it's section (section.name) +- variant + A single word describing where the configuration key-value pair came from +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import locale +import logging +import os +import sys + +from pip._vendor.six.moves import configparser + +from pip._internal.exceptions import ( + ConfigurationError, + ConfigurationFileCouldNotBeLoaded, +) +from pip._internal.utils import appdirs +from pip._internal.utils.compat import WINDOWS, expanduser +from pip._internal.utils.misc import ensure_dir, enum +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import ( + Any, Dict, Iterable, List, NewType, Optional, Tuple + ) + + RawConfigParser = configparser.RawConfigParser # Shorthand + Kind = NewType("Kind", str) + +logger = logging.getLogger(__name__) + + +# NOTE: Maybe use the optionx attribute to normalize keynames. +def _normalize_name(name): + # type: (str) -> str + """Make a name consistent regardless of source (environment or file) + """ + name = name.lower().replace('_', '-') + if name.startswith('--'): + name = name[2:] # only prefer long opts + return name + + +def _disassemble_key(name): + # type: (str) -> List[str] + if "." not in name: + error_message = ( + "Key does not contain dot separated section and key. " + "Perhaps you wanted to use 'global.{}' instead?" + ).format(name) + raise ConfigurationError(error_message) + return name.split(".", 1) + + +# The kinds of configurations there are. +kinds = enum( + USER="user", # User Specific + GLOBAL="global", # System Wide + SITE="site", # [Virtual] Environment Specific + ENV="env", # from PIP_CONFIG_FILE + ENV_VAR="env-var", # from Environment Variables +) + + +CONFIG_BASENAME = 'pip.ini' if WINDOWS else 'pip.conf' + + +def get_configuration_files(): + # type: () -> Dict[Kind, List[str]] + global_config_files = [ + os.path.join(path, CONFIG_BASENAME) + for path in appdirs.site_config_dirs('pip') + ] + + site_config_file = os.path.join(sys.prefix, CONFIG_BASENAME) + legacy_config_file = os.path.join( + expanduser('~'), + 'pip' if WINDOWS else '.pip', + CONFIG_BASENAME, + ) + new_config_file = os.path.join( + appdirs.user_config_dir("pip"), CONFIG_BASENAME + ) + return { + kinds.GLOBAL: global_config_files, + kinds.SITE: [site_config_file], + kinds.USER: [legacy_config_file, new_config_file], + } + + +class Configuration(object): + """Handles management of configuration. + + Provides an interface to accessing and managing configuration files. + + This class converts provides an API that takes "section.key-name" style + keys and stores the value associated with it as "key-name" under the + section "section". + + This allows for a clean interface wherein the both the section and the + key-name are preserved in an easy to manage form in the configuration files + and the data stored is also nice. + """ + + def __init__(self, isolated, load_only=None): + # type: (bool, Kind) -> None + super(Configuration, self).__init__() + + _valid_load_only = [kinds.USER, kinds.GLOBAL, kinds.SITE, None] + if load_only not in _valid_load_only: + raise ConfigurationError( + "Got invalid value for load_only - should be one of {}".format( + ", ".join(map(repr, _valid_load_only[:-1])) + ) + ) + self.isolated = isolated # type: bool + self.load_only = load_only # type: Optional[Kind] + + # The order here determines the override order. + self._override_order = [ + kinds.GLOBAL, kinds.USER, kinds.SITE, kinds.ENV, kinds.ENV_VAR + ] + + self._ignore_env_names = ["version", "help"] + + # Because we keep track of where we got the data from + self._parsers = { + variant: [] for variant in self._override_order + } # type: Dict[Kind, List[Tuple[str, RawConfigParser]]] + self._config = { + variant: {} for variant in self._override_order + } # type: Dict[Kind, Dict[str, Any]] + self._modified_parsers = [] # type: List[Tuple[str, RawConfigParser]] + + def load(self): + # type: () -> None + """Loads configuration from configuration files and environment + """ + self._load_config_files() + if not self.isolated: + self._load_environment_vars() + + def get_file_to_edit(self): + # type: () -> Optional[str] + """Returns the file with highest priority in configuration + """ + assert self.load_only is not None, \ + "Need to be specified a file to be editing" + + try: + return self._get_parser_to_modify()[0] + except IndexError: + return None + + def items(self): + # type: () -> Iterable[Tuple[str, Any]] + """Returns key-value pairs like dict.items() representing the loaded + configuration + """ + return self._dictionary.items() + + def get_value(self, key): + # type: (str) -> Any + """Get a value from the configuration. + """ + try: + return self._dictionary[key] + except KeyError: + raise ConfigurationError("No such key - {}".format(key)) + + def set_value(self, key, value): + # type: (str, Any) -> None + """Modify a value in the configuration. + """ + self._ensure_have_load_only() + + fname, parser = self._get_parser_to_modify() + + if parser is not None: + section, name = _disassemble_key(key) + + # Modify the parser and the configuration + if not parser.has_section(section): + parser.add_section(section) + parser.set(section, name, value) + + self._config[self.load_only][key] = value + self._mark_as_modified(fname, parser) + + def unset_value(self, key): + # type: (str) -> None + """Unset a value in the configuration. + """ + self._ensure_have_load_only() + + if key not in self._config[self.load_only]: + raise ConfigurationError("No such key - {}".format(key)) + + fname, parser = self._get_parser_to_modify() + + if parser is not None: + section, name = _disassemble_key(key) + + # Remove the key in the parser + modified_something = False + if parser.has_section(section): + # Returns whether the option was removed or not + modified_something = parser.remove_option(section, name) + + if modified_something: + # name removed from parser, section may now be empty + section_iter = iter(parser.items(section)) + try: + val = next(section_iter) + except StopIteration: + val = None + + if val is None: + parser.remove_section(section) + + self._mark_as_modified(fname, parser) + else: + raise ConfigurationError( + "Fatal Internal error [id=1]. Please report as a bug." + ) + + del self._config[self.load_only][key] + + def save(self): + # type: () -> None + """Save the current in-memory state. + """ + self._ensure_have_load_only() + + for fname, parser in self._modified_parsers: + logger.info("Writing to %s", fname) + + # Ensure directory exists. + ensure_dir(os.path.dirname(fname)) + + with open(fname, "w") as f: + parser.write(f) + + # + # Private routines + # + + def _ensure_have_load_only(self): + # type: () -> None + if self.load_only is None: + raise ConfigurationError("Needed a specific file to be modifying.") + logger.debug("Will be working with %s variant only", self.load_only) + + @property + def _dictionary(self): + # type: () -> Dict[str, Any] + """A dictionary representing the loaded configuration. + """ + # NOTE: Dictionaries are not populated if not loaded. So, conditionals + # are not needed here. + retval = {} + + for variant in self._override_order: + retval.update(self._config[variant]) + + return retval + + def _load_config_files(self): + # type: () -> None + """Loads configuration from configuration files + """ + config_files = dict(self._iter_config_files()) + if config_files[kinds.ENV][0:1] == [os.devnull]: + logger.debug( + "Skipping loading configuration files due to " + "environment's PIP_CONFIG_FILE being os.devnull" + ) + return + + for variant, files in config_files.items(): + for fname in files: + # If there's specific variant set in `load_only`, load only + # that variant, not the others. + if self.load_only is not None and variant != self.load_only: + logger.debug( + "Skipping file '%s' (variant: %s)", fname, variant + ) + continue + + parser = self._load_file(variant, fname) + + # Keeping track of the parsers used + self._parsers[variant].append((fname, parser)) + + def _load_file(self, variant, fname): + # type: (Kind, str) -> RawConfigParser + logger.debug("For variant '%s', will try loading '%s'", variant, fname) + parser = self._construct_parser(fname) + + for section in parser.sections(): + items = parser.items(section) + self._config[variant].update(self._normalized_keys(section, items)) + + return parser + + def _construct_parser(self, fname): + # type: (str) -> RawConfigParser + parser = configparser.RawConfigParser() + # If there is no such file, don't bother reading it but create the + # parser anyway, to hold the data. + # Doing this is useful when modifying and saving files, where we don't + # need to construct a parser. + if os.path.exists(fname): + try: + parser.read(fname) + except UnicodeDecodeError: + # See https://github.com/pypa/pip/issues/4963 + raise ConfigurationFileCouldNotBeLoaded( + reason="contains invalid {} characters".format( + locale.getpreferredencoding(False) + ), + fname=fname, + ) + except configparser.Error as error: + # See https://github.com/pypa/pip/issues/4893 + raise ConfigurationFileCouldNotBeLoaded(error=error) + return parser + + def _load_environment_vars(self): + # type: () -> None + """Loads configuration from environment variables + """ + self._config[kinds.ENV_VAR].update( + self._normalized_keys(":env:", self._get_environ_vars()) + ) + + def _normalized_keys(self, section, items): + # type: (str, Iterable[Tuple[str, Any]]) -> Dict[str, Any] + """Normalizes items to construct a dictionary with normalized keys. + + This routine is where the names become keys and are made the same + regardless of source - configuration files or environment. + """ + normalized = {} + for name, val in items: + key = section + "." + _normalize_name(name) + normalized[key] = val + return normalized + + def _get_environ_vars(self): + # type: () -> Iterable[Tuple[str, str]] + """Returns a generator with all environmental vars with prefix PIP_""" + for key, val in os.environ.items(): + should_be_yielded = ( + key.startswith("PIP_") and + key[4:].lower() not in self._ignore_env_names + ) + if should_be_yielded: + yield key[4:].lower(), val + + # XXX: This is patched in the tests. + def _iter_config_files(self): + # type: () -> Iterable[Tuple[Kind, List[str]]] + """Yields variant and configuration files associated with it. + + This should be treated like items of a dictionary. + """ + # SMELL: Move the conditions out of this function + + # environment variables have the lowest priority + config_file = os.environ.get('PIP_CONFIG_FILE', None) + if config_file is not None: + yield kinds.ENV, [config_file] + else: + yield kinds.ENV, [] + + config_files = get_configuration_files() + + # at the base we have any global configuration + yield kinds.GLOBAL, config_files[kinds.GLOBAL] + + # per-user configuration next + should_load_user_config = not self.isolated and not ( + config_file and os.path.exists(config_file) + ) + if should_load_user_config: + # The legacy config file is overridden by the new config file + yield kinds.USER, config_files[kinds.USER] + + # finally virtualenv configuration first trumping others + yield kinds.SITE, config_files[kinds.SITE] + + def _get_parser_to_modify(self): + # type: () -> Tuple[str, RawConfigParser] + # Determine which parser to modify + parsers = self._parsers[self.load_only] + if not parsers: + # This should not happen if everything works correctly. + raise ConfigurationError( + "Fatal Internal error [id=2]. Please report as a bug." + ) + + # Use the highest priority parser. + return parsers[-1] + + # XXX: This is patched in the tests. + def _mark_as_modified(self, fname, parser): + # type: (str, RawConfigParser) -> None + file_parser_tuple = (fname, parser) + if file_parser_tuple not in self._modified_parsers: + self._modified_parsers.append(file_parser_tuple) diff --git a/Lib/site-packages/pip/_internal/distributions/__init__.py b/Lib/site-packages/pip/_internal/distributions/__init__.py new file mode 100644 index 0000000..d5c1afc --- /dev/null +++ b/Lib/site-packages/pip/_internal/distributions/__init__.py @@ -0,0 +1,24 @@ +from pip._internal.distributions.sdist import SourceDistribution +from pip._internal.distributions.wheel import WheelDistribution +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from pip._internal.distributions.base import AbstractDistribution + from pip._internal.req.req_install import InstallRequirement + + +def make_distribution_for_install_requirement(install_req): + # type: (InstallRequirement) -> AbstractDistribution + """Returns a Distribution for the given InstallRequirement + """ + # Editable requirements will always be source distributions. They use the + # legacy logic until we create a modern standard for them. + if install_req.editable: + return SourceDistribution(install_req) + + # If it's a wheel, it's a WheelDistribution + if install_req.is_wheel: + return WheelDistribution(install_req) + + # Otherwise, a SourceDistribution + return SourceDistribution(install_req) diff --git a/Lib/site-packages/pip/_internal/distributions/base.py b/Lib/site-packages/pip/_internal/distributions/base.py new file mode 100644 index 0000000..b836b98 --- /dev/null +++ b/Lib/site-packages/pip/_internal/distributions/base.py @@ -0,0 +1,45 @@ +import abc + +from pip._vendor.six import add_metaclass + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional + + from pip._vendor.pkg_resources import Distribution + from pip._internal.req import InstallRequirement + from pip._internal.index.package_finder import PackageFinder + + +@add_metaclass(abc.ABCMeta) +class AbstractDistribution(object): + """A base class for handling installable artifacts. + + The requirements for anything installable are as follows: + + - we must be able to determine the requirement name + (or we can't correctly handle the non-upgrade case). + + - for packages with setup requirements, we must also be able + to determine their requirements without installing additional + packages (for the same reason as run-time dependencies) + + - we must be able to create a Distribution object exposing the + above metadata. + """ + + def __init__(self, req): + # type: (InstallRequirement) -> None + super(AbstractDistribution, self).__init__() + self.req = req + + @abc.abstractmethod + def get_pkg_resources_distribution(self): + # type: () -> Optional[Distribution] + raise NotImplementedError() + + @abc.abstractmethod + def prepare_distribution_metadata(self, finder, build_isolation): + # type: (PackageFinder, bool) -> None + raise NotImplementedError() diff --git a/Lib/site-packages/pip/_internal/distributions/installed.py b/Lib/site-packages/pip/_internal/distributions/installed.py new file mode 100644 index 0000000..0d15bf4 --- /dev/null +++ b/Lib/site-packages/pip/_internal/distributions/installed.py @@ -0,0 +1,24 @@ +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional + + from pip._vendor.pkg_resources import Distribution + from pip._internal.index.package_finder import PackageFinder + + +class InstalledDistribution(AbstractDistribution): + """Represents an installed package. + + This does not need any preparation as the required information has already + been computed. + """ + + def get_pkg_resources_distribution(self): + # type: () -> Optional[Distribution] + return self.req.satisfied_by + + def prepare_distribution_metadata(self, finder, build_isolation): + # type: (PackageFinder, bool) -> None + pass diff --git a/Lib/site-packages/pip/_internal/distributions/sdist.py b/Lib/site-packages/pip/_internal/distributions/sdist.py new file mode 100644 index 0000000..be3d7d9 --- /dev/null +++ b/Lib/site-packages/pip/_internal/distributions/sdist.py @@ -0,0 +1,104 @@ +import logging + +from pip._internal.build_env import BuildEnvironment +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.exceptions import InstallationError +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Set, Tuple + + from pip._vendor.pkg_resources import Distribution + from pip._internal.index.package_finder import PackageFinder + + +logger = logging.getLogger(__name__) + + +class SourceDistribution(AbstractDistribution): + """Represents a source distribution. + + The preparation step for these needs metadata for the packages to be + generated, either using PEP 517 or using the legacy `setup.py egg_info`. + """ + + def get_pkg_resources_distribution(self): + # type: () -> Distribution + return self.req.get_dist() + + def prepare_distribution_metadata(self, finder, build_isolation): + # type: (PackageFinder, bool) -> None + # Load pyproject.toml, to determine whether PEP 517 is to be used + self.req.load_pyproject_toml() + + # Set up the build isolation, if this requirement should be isolated + should_isolate = self.req.use_pep517 and build_isolation + if should_isolate: + self._setup_isolation(finder) + + self.req.prepare_metadata() + + def _setup_isolation(self, finder): + # type: (PackageFinder) -> None + def _raise_conflicts(conflicting_with, conflicting_reqs): + # type: (str, Set[Tuple[str, str]]) -> None + format_string = ( + "Some build dependencies for {requirement} " + "conflict with {conflicting_with}: {description}." + ) + error_message = format_string.format( + requirement=self.req, + conflicting_with=conflicting_with, + description=', '.join( + '{} is incompatible with {}'.format(installed, wanted) + for installed, wanted in sorted(conflicting) + ) + ) + raise InstallationError(error_message) + + # Isolate in a BuildEnvironment and install the build-time + # requirements. + pyproject_requires = self.req.pyproject_requires + assert pyproject_requires is not None + + self.req.build_env = BuildEnvironment() + self.req.build_env.install_requirements( + finder, pyproject_requires, 'overlay', + "Installing build dependencies" + ) + conflicting, missing = self.req.build_env.check_requirements( + self.req.requirements_to_check + ) + if conflicting: + _raise_conflicts("PEP 517/518 supported requirements", + conflicting) + if missing: + logger.warning( + "Missing build requirements in pyproject.toml for %s.", + self.req, + ) + logger.warning( + "The project does not specify a build backend, and " + "pip cannot fall back to setuptools without %s.", + " and ".join(map(repr, sorted(missing))) + ) + # Install any extra build dependencies that the backend requests. + # This must be done in a second pass, as the pyproject.toml + # dependencies must be installed before we can call the backend. + with self.req.build_env: + runner = runner_with_spinner_message( + "Getting requirements to build wheel" + ) + backend = self.req.pep517_backend + assert backend is not None + with backend.subprocess_runner(runner): + reqs = backend.get_requires_for_build_wheel() + + conflicting, missing = self.req.build_env.check_requirements(reqs) + if conflicting: + _raise_conflicts("the backend dependencies", conflicting) + self.req.build_env.install_requirements( + finder, missing, 'normal', + "Installing backend dependencies" + ) diff --git a/Lib/site-packages/pip/_internal/distributions/wheel.py b/Lib/site-packages/pip/_internal/distributions/wheel.py new file mode 100644 index 0000000..bf3482b --- /dev/null +++ b/Lib/site-packages/pip/_internal/distributions/wheel.py @@ -0,0 +1,36 @@ +from zipfile import ZipFile + +from pip._internal.distributions.base import AbstractDistribution +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.wheel import pkg_resources_distribution_for_wheel + +if MYPY_CHECK_RUNNING: + from pip._vendor.pkg_resources import Distribution + from pip._internal.index.package_finder import PackageFinder + + +class WheelDistribution(AbstractDistribution): + """Represents a wheel distribution. + + This does not need any preparation as wheels can be directly unpacked. + """ + + def get_pkg_resources_distribution(self): + # type: () -> Distribution + """Loads the metadata from the wheel file into memory and returns a + Distribution that uses it, not relying on the wheel file or + requirement. + """ + # Set as part of preparation during download. + assert self.req.local_file_path + # Wheels are never unnamed. + assert self.req.name + + with ZipFile(self.req.local_file_path, allowZip64=True) as z: + return pkg_resources_distribution_for_wheel( + z, self.req.name, self.req.local_file_path + ) + + def prepare_distribution_metadata(self, finder, build_isolation): + # type: (PackageFinder, bool) -> None + pass diff --git a/Lib/site-packages/pip/_internal/exceptions.py b/Lib/site-packages/pip/_internal/exceptions.py new file mode 100644 index 0000000..dddec78 --- /dev/null +++ b/Lib/site-packages/pip/_internal/exceptions.py @@ -0,0 +1,308 @@ +"""Exceptions used throughout package""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +from itertools import chain, groupby, repeat + +from pip._vendor.six import iteritems + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional + from pip._vendor.pkg_resources import Distribution + from pip._internal.req.req_install import InstallRequirement + + +class PipError(Exception): + """Base pip exception""" + + +class ConfigurationError(PipError): + """General exception in configuration""" + + +class InstallationError(PipError): + """General exception during installation""" + + +class UninstallationError(PipError): + """General exception during uninstallation""" + + +class NoneMetadataError(PipError): + """ + Raised when accessing "METADATA" or "PKG-INFO" metadata for a + pip._vendor.pkg_resources.Distribution object and + `dist.has_metadata('METADATA')` returns True but + `dist.get_metadata('METADATA')` returns None (and similarly for + "PKG-INFO"). + """ + + def __init__(self, dist, metadata_name): + # type: (Distribution, str) -> None + """ + :param dist: A Distribution object. + :param metadata_name: The name of the metadata being accessed + (can be "METADATA" or "PKG-INFO"). + """ + self.dist = dist + self.metadata_name = metadata_name + + def __str__(self): + # type: () -> str + # Use `dist` in the error message because its stringification + # includes more information, like the version and location. + return ( + 'None {} metadata found for distribution: {}'.format( + self.metadata_name, self.dist, + ) + ) + + +class DistributionNotFound(InstallationError): + """Raised when a distribution cannot be found to satisfy a requirement""" + + +class RequirementsFileParseError(InstallationError): + """Raised when a general error occurs parsing a requirements file line.""" + + +class BestVersionAlreadyInstalled(PipError): + """Raised when the most up-to-date version of a package is already + installed.""" + + +class BadCommand(PipError): + """Raised when virtualenv or a command is not found""" + + +class CommandError(PipError): + """Raised when there is an error in command-line arguments""" + + +class PreviousBuildDirError(PipError): + """Raised when there's a previous conflicting build directory""" + + +class InvalidWheelFilename(InstallationError): + """Invalid wheel filename.""" + + +class UnsupportedWheel(InstallationError): + """Unsupported wheel.""" + + +class HashErrors(InstallationError): + """Multiple HashError instances rolled into one for reporting""" + + def __init__(self): + self.errors = [] + + def append(self, error): + self.errors.append(error) + + def __str__(self): + lines = [] + self.errors.sort(key=lambda e: e.order) + for cls, errors_of_cls in groupby(self.errors, lambda e: e.__class__): + lines.append(cls.head) + lines.extend(e.body() for e in errors_of_cls) + if lines: + return '\n'.join(lines) + + def __nonzero__(self): + return bool(self.errors) + + def __bool__(self): + return self.__nonzero__() + + +class HashError(InstallationError): + """ + A failure to verify a package against known-good hashes + + :cvar order: An int sorting hash exception classes by difficulty of + recovery (lower being harder), so the user doesn't bother fretting + about unpinned packages when he has deeper issues, like VCS + dependencies, to deal with. Also keeps error reports in a + deterministic order. + :cvar head: A section heading for display above potentially many + exceptions of this kind + :ivar req: The InstallRequirement that triggered this error. This is + pasted on after the exception is instantiated, because it's not + typically available earlier. + + """ + req = None # type: Optional[InstallRequirement] + head = '' + + def body(self): + """Return a summary of me for display under the heading. + + This default implementation simply prints a description of the + triggering requirement. + + :param req: The InstallRequirement that provoked this error, with + populate_link() having already been called + + """ + return ' %s' % self._requirement_name() + + def __str__(self): + return '%s\n%s' % (self.head, self.body()) + + def _requirement_name(self): + """Return a description of the requirement that triggered me. + + This default implementation returns long description of the req, with + line numbers + + """ + return str(self.req) if self.req else 'unknown package' + + +class VcsHashUnsupported(HashError): + """A hash was provided for a version-control-system-based requirement, but + we don't have a method for hashing those.""" + + order = 0 + head = ("Can't verify hashes for these requirements because we don't " + "have a way to hash version control repositories:") + + +class DirectoryUrlHashUnsupported(HashError): + """A hash was provided for a version-control-system-based requirement, but + we don't have a method for hashing those.""" + + order = 1 + head = ("Can't verify hashes for these file:// requirements because they " + "point to directories:") + + +class HashMissing(HashError): + """A hash was needed for a requirement but is absent.""" + + order = 2 + head = ('Hashes are required in --require-hashes mode, but they are ' + 'missing from some requirements. Here is a list of those ' + 'requirements along with the hashes their downloaded archives ' + 'actually had. Add lines like these to your requirements files to ' + 'prevent tampering. (If you did not enable --require-hashes ' + 'manually, note that it turns on automatically when any package ' + 'has a hash.)') + + def __init__(self, gotten_hash): + """ + :param gotten_hash: The hash of the (possibly malicious) archive we + just downloaded + """ + self.gotten_hash = gotten_hash + + def body(self): + # Dodge circular import. + from pip._internal.utils.hashes import FAVORITE_HASH + + package = None + if self.req: + # In the case of URL-based requirements, display the original URL + # seen in the requirements file rather than the package name, + # so the output can be directly copied into the requirements file. + package = (self.req.original_link if self.req.original_link + # In case someone feeds something downright stupid + # to InstallRequirement's constructor. + else getattr(self.req, 'req', None)) + return ' %s --hash=%s:%s' % (package or 'unknown package', + FAVORITE_HASH, + self.gotten_hash) + + +class HashUnpinned(HashError): + """A requirement had a hash specified but was not pinned to a specific + version.""" + + order = 3 + head = ('In --require-hashes mode, all requirements must have their ' + 'versions pinned with ==. These do not:') + + +class HashMismatch(HashError): + """ + Distribution file hash values don't match. + + :ivar package_name: The name of the package that triggered the hash + mismatch. Feel free to write to this after the exception is raise to + improve its error message. + + """ + order = 4 + head = ('THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS ' + 'FILE. If you have updated the package versions, please update ' + 'the hashes. Otherwise, examine the package contents carefully; ' + 'someone may have tampered with them.') + + def __init__(self, allowed, gots): + """ + :param allowed: A dict of algorithm names pointing to lists of allowed + hex digests + :param gots: A dict of algorithm names pointing to hashes we + actually got from the files under suspicion + """ + self.allowed = allowed + self.gots = gots + + def body(self): + return ' %s:\n%s' % (self._requirement_name(), + self._hash_comparison()) + + def _hash_comparison(self): + """ + Return a comparison of actual and expected hash values. + + Example:: + + Expected sha256 abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde + or 123451234512345123451234512345123451234512345 + Got bcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdefbcdef + + """ + def hash_then_or(hash_name): + # For now, all the decent hashes have 6-char names, so we can get + # away with hard-coding space literals. + return chain([hash_name], repeat(' or')) + + lines = [] + for hash_name, expecteds in iteritems(self.allowed): + prefix = hash_then_or(hash_name) + lines.extend((' Expected %s %s' % (next(prefix), e)) + for e in expecteds) + lines.append(' Got %s\n' % + self.gots[hash_name].hexdigest()) + return '\n'.join(lines) + + +class UnsupportedPythonVersion(InstallationError): + """Unsupported python version according to Requires-Python package + metadata.""" + + +class ConfigurationFileCouldNotBeLoaded(ConfigurationError): + """When there are errors while loading a configuration file + """ + + def __init__(self, reason="could not be loaded", fname=None, error=None): + super(ConfigurationFileCouldNotBeLoaded, self).__init__(error) + self.reason = reason + self.fname = fname + self.error = error + + def __str__(self): + if self.fname is not None: + message_part = " in {}.".format(self.fname) + else: + assert self.error is not None + message_part = ".\n{}\n".format(self.error.message) + return "Configuration file {}{}".format(self.reason, message_part) diff --git a/Lib/site-packages/pip/_internal/index/__init__.py b/Lib/site-packages/pip/_internal/index/__init__.py new file mode 100644 index 0000000..7a17b7b --- /dev/null +++ b/Lib/site-packages/pip/_internal/index/__init__.py @@ -0,0 +1,2 @@ +"""Index interaction code +""" diff --git a/Lib/site-packages/pip/_internal/index/collector.py b/Lib/site-packages/pip/_internal/index/collector.py new file mode 100644 index 0000000..8330793 --- /dev/null +++ b/Lib/site-packages/pip/_internal/index/collector.py @@ -0,0 +1,544 @@ +""" +The main purpose of this module is to expose LinkCollector.collect_links(). +""" + +import cgi +import itertools +import logging +import mimetypes +import os +from collections import OrderedDict + +from pip._vendor import html5lib, requests +from pip._vendor.distlib.compat import unescape +from pip._vendor.requests.exceptions import HTTPError, RetryError, SSLError +from pip._vendor.six.moves.urllib import parse as urllib_parse +from pip._vendor.six.moves.urllib import request as urllib_request + +from pip._internal.models.link import Link +from pip._internal.utils.filetypes import ARCHIVE_EXTENSIONS +from pip._internal.utils.misc import redact_auth_from_url +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import path_to_url, url_to_path +from pip._internal.vcs import is_url, vcs + +if MYPY_CHECK_RUNNING: + from typing import ( + Callable, Iterable, List, MutableMapping, Optional, Sequence, Tuple, + Union, + ) + import xml.etree.ElementTree + + from pip._vendor.requests import Response + + from pip._internal.models.search_scope import SearchScope + from pip._internal.network.session import PipSession + + HTMLElement = xml.etree.ElementTree.Element + ResponseHeaders = MutableMapping[str, str] + + +logger = logging.getLogger(__name__) + + +def _match_vcs_scheme(url): + # type: (str) -> Optional[str] + """Look for VCS schemes in the URL. + + Returns the matched VCS scheme, or None if there's no match. + """ + for scheme in vcs.schemes: + if url.lower().startswith(scheme) and url[len(scheme)] in '+:': + return scheme + return None + + +def _is_url_like_archive(url): + # type: (str) -> bool + """Return whether the URL looks like an archive. + """ + filename = Link(url).filename + for bad_ext in ARCHIVE_EXTENSIONS: + if filename.endswith(bad_ext): + return True + return False + + +class _NotHTML(Exception): + def __init__(self, content_type, request_desc): + # type: (str, str) -> None + super(_NotHTML, self).__init__(content_type, request_desc) + self.content_type = content_type + self.request_desc = request_desc + + +def _ensure_html_header(response): + # type: (Response) -> None + """Check the Content-Type header to ensure the response contains HTML. + + Raises `_NotHTML` if the content type is not text/html. + """ + content_type = response.headers.get("Content-Type", "") + if not content_type.lower().startswith("text/html"): + raise _NotHTML(content_type, response.request.method) + + +class _NotHTTP(Exception): + pass + + +def _ensure_html_response(url, session): + # type: (str, PipSession) -> None + """Send a HEAD request to the URL, and ensure the response contains HTML. + + Raises `_NotHTTP` if the URL is not available for a HEAD request, or + `_NotHTML` if the content type is not text/html. + """ + scheme, netloc, path, query, fragment = urllib_parse.urlsplit(url) + if scheme not in {'http', 'https'}: + raise _NotHTTP() + + resp = session.head(url, allow_redirects=True) + resp.raise_for_status() + + _ensure_html_header(resp) + + +def _get_html_response(url, session): + # type: (str, PipSession) -> Response + """Access an HTML page with GET, and return the response. + + This consists of three parts: + + 1. If the URL looks suspiciously like an archive, send a HEAD first to + check the Content-Type is HTML, to avoid downloading a large file. + Raise `_NotHTTP` if the content type cannot be determined, or + `_NotHTML` if it is not HTML. + 2. Actually perform the request. Raise HTTP exceptions on network failures. + 3. Check the Content-Type header to make sure we got HTML, and raise + `_NotHTML` otherwise. + """ + if _is_url_like_archive(url): + _ensure_html_response(url, session=session) + + logger.debug('Getting page %s', redact_auth_from_url(url)) + + resp = session.get( + url, + headers={ + "Accept": "text/html", + # We don't want to blindly returned cached data for + # /simple/, because authors generally expecting that + # twine upload && pip install will function, but if + # they've done a pip install in the last ~10 minutes + # it won't. Thus by setting this to zero we will not + # blindly use any cached data, however the benefit of + # using max-age=0 instead of no-cache, is that we will + # still support conditional requests, so we will still + # minimize traffic sent in cases where the page hasn't + # changed at all, we will just always incur the round + # trip for the conditional GET now instead of only + # once per 10 minutes. + # For more information, please see pypa/pip#5670. + "Cache-Control": "max-age=0", + }, + ) + resp.raise_for_status() + + # The check for archives above only works if the url ends with + # something that looks like an archive. However that is not a + # requirement of an url. Unless we issue a HEAD request on every + # url we cannot know ahead of time for sure if something is HTML + # or not. However we can check after we've downloaded it. + _ensure_html_header(resp) + + return resp + + +def _get_encoding_from_headers(headers): + # type: (ResponseHeaders) -> Optional[str] + """Determine if we have any encoding information in our headers. + """ + if headers and "Content-Type" in headers: + content_type, params = cgi.parse_header(headers["Content-Type"]) + if "charset" in params: + return params['charset'] + return None + + +def _determine_base_url(document, page_url): + # type: (HTMLElement, str) -> str + """Determine the HTML document's base URL. + + This looks for a ```` tag in the HTML document. If present, its href + attribute denotes the base URL of anchor tags in the document. If there is + no such tag (or if it does not have a valid href attribute), the HTML + file's URL is used as the base URL. + + :param document: An HTML document representation. The current + implementation expects the result of ``html5lib.parse()``. + :param page_url: The URL of the HTML document. + """ + for base in document.findall(".//base"): + href = base.get("href") + if href is not None: + return href + return page_url + + +def _clean_link(url): + # type: (str) -> str + """Makes sure a link is fully encoded. That is, if a ' ' shows up in + the link, it will be rewritten to %20 (while not over-quoting + % or other characters).""" + # Split the URL into parts according to the general structure + # `scheme://netloc/path;parameters?query#fragment`. Note that the + # `netloc` can be empty and the URI will then refer to a local + # filesystem path. + result = urllib_parse.urlparse(url) + # In both cases below we unquote prior to quoting to make sure + # nothing is double quoted. + if result.netloc == "": + # On Windows the path part might contain a drive letter which + # should not be quoted. On Linux where drive letters do not + # exist, the colon should be quoted. We rely on urllib.request + # to do the right thing here. + path = urllib_request.pathname2url( + urllib_request.url2pathname(result.path)) + else: + # In addition to the `/` character we protect `@` so that + # revision strings in VCS URLs are properly parsed. + path = urllib_parse.quote(urllib_parse.unquote(result.path), safe="/@") + return urllib_parse.urlunparse(result._replace(path=path)) + + +def _create_link_from_element( + anchor, # type: HTMLElement + page_url, # type: str + base_url, # type: str +): + # type: (...) -> Optional[Link] + """ + Convert an anchor element in a simple repository page to a Link. + """ + href = anchor.get("href") + if not href: + return None + + url = _clean_link(urllib_parse.urljoin(base_url, href)) + pyrequire = anchor.get('data-requires-python') + pyrequire = unescape(pyrequire) if pyrequire else None + + yanked_reason = anchor.get('data-yanked') + if yanked_reason: + # This is a unicode string in Python 2 (and 3). + yanked_reason = unescape(yanked_reason) + + link = Link( + url, + comes_from=page_url, + requires_python=pyrequire, + yanked_reason=yanked_reason, + ) + + return link + + +def parse_links(page): + # type: (HTMLPage) -> Iterable[Link] + """ + Parse an HTML document, and yield its anchor elements as Link objects. + """ + document = html5lib.parse( + page.content, + transport_encoding=page.encoding, + namespaceHTMLElements=False, + ) + + url = page.url + base_url = _determine_base_url(document, url) + for anchor in document.findall(".//a"): + link = _create_link_from_element( + anchor, + page_url=url, + base_url=base_url, + ) + if link is None: + continue + yield link + + +class HTMLPage(object): + """Represents one page, along with its URL""" + + def __init__( + self, + content, # type: bytes + encoding, # type: Optional[str] + url, # type: str + ): + # type: (...) -> None + """ + :param encoding: the encoding to decode the given content. + :param url: the URL from which the HTML was downloaded. + """ + self.content = content + self.encoding = encoding + self.url = url + + def __str__(self): + # type: () -> str + return redact_auth_from_url(self.url) + + +def _handle_get_page_fail( + link, # type: Link + reason, # type: Union[str, Exception] + meth=None # type: Optional[Callable[..., None]] +): + # type: (...) -> None + if meth is None: + meth = logger.debug + meth("Could not fetch URL %s: %s - skipping", link, reason) + + +def _make_html_page(response): + # type: (Response) -> HTMLPage + encoding = _get_encoding_from_headers(response.headers) + return HTMLPage(response.content, encoding=encoding, url=response.url) + + +def _get_html_page(link, session=None): + # type: (Link, Optional[PipSession]) -> Optional[HTMLPage] + if session is None: + raise TypeError( + "_get_html_page() missing 1 required keyword argument: 'session'" + ) + + url = link.url.split('#', 1)[0] + + # Check for VCS schemes that do not support lookup as web pages. + vcs_scheme = _match_vcs_scheme(url) + if vcs_scheme: + logger.debug('Cannot look at %s URL %s', vcs_scheme, link) + return None + + # Tack index.html onto file:// URLs that point to directories + scheme, _, path, _, _, _ = urllib_parse.urlparse(url) + if (scheme == 'file' and os.path.isdir(urllib_request.url2pathname(path))): + # add trailing slash if not present so urljoin doesn't trim + # final segment + if not url.endswith('/'): + url += '/' + url = urllib_parse.urljoin(url, 'index.html') + logger.debug(' file: URL is directory, getting %s', url) + + try: + resp = _get_html_response(url, session=session) + except _NotHTTP: + logger.debug( + 'Skipping page %s because it looks like an archive, and cannot ' + 'be checked by HEAD.', link, + ) + except _NotHTML as exc: + logger.debug( + 'Skipping page %s because the %s request got Content-Type: %s', + link, exc.request_desc, exc.content_type, + ) + except HTTPError as exc: + _handle_get_page_fail(link, exc) + except RetryError as exc: + _handle_get_page_fail(link, exc) + except SSLError as exc: + reason = "There was a problem confirming the ssl certificate: " + reason += str(exc) + _handle_get_page_fail(link, reason, meth=logger.info) + except requests.ConnectionError as exc: + _handle_get_page_fail(link, "connection error: %s" % exc) + except requests.Timeout: + _handle_get_page_fail(link, "timed out") + else: + return _make_html_page(resp) + return None + + +def _remove_duplicate_links(links): + # type: (Iterable[Link]) -> List[Link] + """ + Return a list of links, with duplicates removed and ordering preserved. + """ + # We preserve the ordering when removing duplicates because we can. + return list(OrderedDict.fromkeys(links)) + + +def group_locations(locations, expand_dir=False): + # type: (Sequence[str], bool) -> Tuple[List[str], List[str]] + """ + Divide a list of locations into two groups: "files" (archives) and "urls." + + :return: A pair of lists (files, urls). + """ + files = [] + urls = [] + + # puts the url for the given file path into the appropriate list + def sort_path(path): + # type: (str) -> None + url = path_to_url(path) + if mimetypes.guess_type(url, strict=False)[0] == 'text/html': + urls.append(url) + else: + files.append(url) + + for url in locations: + + is_local_path = os.path.exists(url) + is_file_url = url.startswith('file:') + + if is_local_path or is_file_url: + if is_local_path: + path = url + else: + path = url_to_path(url) + if os.path.isdir(path): + if expand_dir: + path = os.path.realpath(path) + for item in os.listdir(path): + sort_path(os.path.join(path, item)) + elif is_file_url: + urls.append(url) + else: + logger.warning( + "Path '{0}' is ignored: " + "it is a directory.".format(path), + ) + elif os.path.isfile(path): + sort_path(path) + else: + logger.warning( + "Url '%s' is ignored: it is neither a file " + "nor a directory.", url, + ) + elif is_url(url): + # Only add url with clear scheme + urls.append(url) + else: + logger.warning( + "Url '%s' is ignored. It is either a non-existing " + "path or lacks a specific scheme.", url, + ) + + return files, urls + + +class CollectedLinks(object): + + """ + Encapsulates the return value of a call to LinkCollector.collect_links(). + + The return value includes both URLs to project pages containing package + links, as well as individual package Link objects collected from other + sources. + + This info is stored separately as: + + (1) links from the configured file locations, + (2) links from the configured find_links, and + (3) urls to HTML project pages, as described by the PEP 503 simple + repository API. + """ + + def __init__( + self, + files, # type: List[Link] + find_links, # type: List[Link] + project_urls, # type: List[Link] + ): + # type: (...) -> None + """ + :param files: Links from file locations. + :param find_links: Links from find_links. + :param project_urls: URLs to HTML project pages, as described by + the PEP 503 simple repository API. + """ + self.files = files + self.find_links = find_links + self.project_urls = project_urls + + +class LinkCollector(object): + + """ + Responsible for collecting Link objects from all configured locations, + making network requests as needed. + + The class's main method is its collect_links() method. + """ + + def __init__( + self, + session, # type: PipSession + search_scope, # type: SearchScope + ): + # type: (...) -> None + self.search_scope = search_scope + self.session = session + + @property + def find_links(self): + # type: () -> List[str] + return self.search_scope.find_links + + def fetch_page(self, location): + # type: (Link) -> Optional[HTMLPage] + """ + Fetch an HTML page containing package links. + """ + return _get_html_page(location, session=self.session) + + def collect_links(self, project_name): + # type: (str) -> CollectedLinks + """Find all available links for the given project name. + + :return: All the Link objects (unfiltered), as a CollectedLinks object. + """ + search_scope = self.search_scope + index_locations = search_scope.get_index_urls_locations(project_name) + index_file_loc, index_url_loc = group_locations(index_locations) + fl_file_loc, fl_url_loc = group_locations( + self.find_links, expand_dir=True, + ) + + file_links = [ + Link(url) for url in itertools.chain(index_file_loc, fl_file_loc) + ] + + # We trust every directly linked archive in find_links + find_link_links = [Link(url, '-f') for url in self.find_links] + + # We trust every url that the user has given us whether it was given + # via --index-url or --find-links. + # We want to filter out anything that does not have a secure origin. + url_locations = [ + link for link in itertools.chain( + (Link(url) for url in index_url_loc), + (Link(url) for url in fl_url_loc), + ) + if self.session.is_secure_origin(link) + ] + + url_locations = _remove_duplicate_links(url_locations) + lines = [ + '{} location(s) to search for versions of {}:'.format( + len(url_locations), project_name, + ), + ] + for link in url_locations: + lines.append('* {}'.format(link)) + logger.debug('\n'.join(lines)) + + return CollectedLinks( + files=file_links, + find_links=find_link_links, + project_urls=url_locations, + ) diff --git a/Lib/site-packages/pip/_internal/index/package_finder.py b/Lib/site-packages/pip/_internal/index/package_finder.py new file mode 100644 index 0000000..a74d78d --- /dev/null +++ b/Lib/site-packages/pip/_internal/index/package_finder.py @@ -0,0 +1,1013 @@ +"""Routines related to PyPI, indexes""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import logging +import re + +from pip._vendor.packaging import specifiers +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.exceptions import ( + BestVersionAlreadyInstalled, + DistributionNotFound, + InvalidWheelFilename, + UnsupportedWheel, +) +from pip._internal.index.collector import parse_links +from pip._internal.models.candidate import InstallationCandidate +from pip._internal.models.format_control import FormatControl +from pip._internal.models.link import Link +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.models.target_python import TargetPython +from pip._internal.models.wheel import Wheel +from pip._internal.utils.filetypes import WHEEL_EXTENSION +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import build_netloc +from pip._internal.utils.packaging import check_requires_python +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.unpacking import SUPPORTED_EXTENSIONS +from pip._internal.utils.urls import url_to_path + +if MYPY_CHECK_RUNNING: + from typing import ( + FrozenSet, Iterable, List, Optional, Set, Text, Tuple, Union, + ) + + from pip._vendor.packaging.tags import Tag + from pip._vendor.packaging.version import _BaseVersion + + from pip._internal.index.collector import LinkCollector + from pip._internal.models.search_scope import SearchScope + from pip._internal.req import InstallRequirement + from pip._internal.utils.hashes import Hashes + + BuildTag = Union[Tuple[()], Tuple[int, str]] + CandidateSortingKey = ( + Tuple[int, int, int, _BaseVersion, BuildTag, Optional[int]] + ) + + +__all__ = ['FormatControl', 'BestCandidateResult', 'PackageFinder'] + + +logger = logging.getLogger(__name__) + + +def _check_link_requires_python( + link, # type: Link + version_info, # type: Tuple[int, int, int] + ignore_requires_python=False, # type: bool +): + # type: (...) -> bool + """ + Return whether the given Python version is compatible with a link's + "Requires-Python" value. + + :param version_info: A 3-tuple of ints representing the Python + major-minor-micro version to check. + :param ignore_requires_python: Whether to ignore the "Requires-Python" + value if the given Python version isn't compatible. + """ + try: + is_compatible = check_requires_python( + link.requires_python, version_info=version_info, + ) + except specifiers.InvalidSpecifier: + logger.debug( + "Ignoring invalid Requires-Python (%r) for link: %s", + link.requires_python, link, + ) + else: + if not is_compatible: + version = '.'.join(map(str, version_info)) + if not ignore_requires_python: + logger.debug( + 'Link requires a different Python (%s not in: %r): %s', + version, link.requires_python, link, + ) + return False + + logger.debug( + 'Ignoring failed Requires-Python check (%s not in: %r) ' + 'for link: %s', + version, link.requires_python, link, + ) + + return True + + +class LinkEvaluator(object): + + """ + Responsible for evaluating links for a particular project. + """ + + _py_version_re = re.compile(r'-py([123]\.?[0-9]?)$') + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + def __init__( + self, + project_name, # type: str + canonical_name, # type: str + formats, # type: FrozenSet[str] + target_python, # type: TargetPython + allow_yanked, # type: bool + ignore_requires_python=None, # type: Optional[bool] + ): + # type: (...) -> None + """ + :param project_name: The user supplied package name. + :param canonical_name: The canonical package name. + :param formats: The formats allowed for this package. Should be a set + with 'binary' or 'source' or both in it. + :param target_python: The target Python interpreter to use when + evaluating link compatibility. This is used, for example, to + check wheel compatibility, as well as when checking the Python + version, e.g. the Python version embedded in a link filename + (or egg fragment) and against an HTML link's optional PEP 503 + "data-requires-python" attribute. + :param allow_yanked: Whether files marked as yanked (in the sense + of PEP 592) are permitted to be candidates for install. + :param ignore_requires_python: Whether to ignore incompatible + PEP 503 "data-requires-python" values in HTML links. Defaults + to False. + """ + if ignore_requires_python is None: + ignore_requires_python = False + + self._allow_yanked = allow_yanked + self._canonical_name = canonical_name + self._ignore_requires_python = ignore_requires_python + self._formats = formats + self._target_python = target_python + + self.project_name = project_name + + def evaluate_link(self, link): + # type: (Link) -> Tuple[bool, Optional[Text]] + """ + Determine whether a link is a candidate for installation. + + :return: A tuple (is_candidate, result), where `result` is (1) a + version string if `is_candidate` is True, and (2) if + `is_candidate` is False, an optional string to log the reason + the link fails to qualify. + """ + version = None + if link.is_yanked and not self._allow_yanked: + reason = link.yanked_reason or '' + # Mark this as a unicode string to prevent "UnicodeEncodeError: + # 'ascii' codec can't encode character" in Python 2 when + # the reason contains non-ascii characters. + return (False, u'yanked for reason: {}'.format(reason)) + + if link.egg_fragment: + egg_info = link.egg_fragment + ext = link.ext + else: + egg_info, ext = link.splitext() + if not ext: + return (False, 'not a file') + if ext not in SUPPORTED_EXTENSIONS: + return (False, 'unsupported archive format: %s' % ext) + if "binary" not in self._formats and ext == WHEEL_EXTENSION: + reason = 'No binaries permitted for %s' % self.project_name + return (False, reason) + if "macosx10" in link.path and ext == '.zip': + return (False, 'macosx10 one') + if ext == WHEEL_EXTENSION: + try: + wheel = Wheel(link.filename) + except InvalidWheelFilename: + return (False, 'invalid wheel filename') + if canonicalize_name(wheel.name) != self._canonical_name: + reason = 'wrong project name (not %s)' % self.project_name + return (False, reason) + + supported_tags = self._target_python.get_tags() + if not wheel.supported(supported_tags): + # Include the wheel's tags in the reason string to + # simplify troubleshooting compatibility issues. + file_tags = wheel.get_formatted_file_tags() + reason = ( + "none of the wheel's tags match: {}".format( + ', '.join(file_tags) + ) + ) + return (False, reason) + + version = wheel.version + + # This should be up by the self.ok_binary check, but see issue 2700. + if "source" not in self._formats and ext != WHEEL_EXTENSION: + return (False, 'No sources permitted for %s' % self.project_name) + + if not version: + version = _extract_version_from_fragment( + egg_info, self._canonical_name, + ) + if not version: + return ( + False, 'Missing project version for %s' % self.project_name, + ) + + match = self._py_version_re.search(version) + if match: + version = version[:match.start()] + py_version = match.group(1) + if py_version != self._target_python.py_version: + return (False, 'Python version is incorrect') + + supports_python = _check_link_requires_python( + link, version_info=self._target_python.py_version_info, + ignore_requires_python=self._ignore_requires_python, + ) + if not supports_python: + # Return None for the reason text to suppress calling + # _log_skipped_link(). + return (False, None) + + logger.debug('Found link %s, version: %s', link, version) + + return (True, version) + + +def filter_unallowed_hashes( + candidates, # type: List[InstallationCandidate] + hashes, # type: Hashes + project_name, # type: str +): + # type: (...) -> List[InstallationCandidate] + """ + Filter out candidates whose hashes aren't allowed, and return a new + list of candidates. + + If at least one candidate has an allowed hash, then all candidates with + either an allowed hash or no hash specified are returned. Otherwise, + the given candidates are returned. + + Including the candidates with no hash specified when there is a match + allows a warning to be logged if there is a more preferred candidate + with no hash specified. Returning all candidates in the case of no + matches lets pip report the hash of the candidate that would otherwise + have been installed (e.g. permitting the user to more easily update + their requirements file with the desired hash). + """ + if not hashes: + logger.debug( + 'Given no hashes to check %s links for project %r: ' + 'discarding no candidates', + len(candidates), + project_name, + ) + # Make sure we're not returning back the given value. + return list(candidates) + + matches_or_no_digest = [] + # Collect the non-matches for logging purposes. + non_matches = [] + match_count = 0 + for candidate in candidates: + link = candidate.link + if not link.has_hash: + pass + elif link.is_hash_allowed(hashes=hashes): + match_count += 1 + else: + non_matches.append(candidate) + continue + + matches_or_no_digest.append(candidate) + + if match_count: + filtered = matches_or_no_digest + else: + # Make sure we're not returning back the given value. + filtered = list(candidates) + + if len(filtered) == len(candidates): + discard_message = 'discarding no candidates' + else: + discard_message = 'discarding {} non-matches:\n {}'.format( + len(non_matches), + '\n '.join(str(candidate.link) for candidate in non_matches) + ) + + logger.debug( + 'Checked %s links for project %r against %s hashes ' + '(%s matches, %s no digest): %s', + len(candidates), + project_name, + hashes.digest_count, + match_count, + len(matches_or_no_digest) - match_count, + discard_message + ) + + return filtered + + +class CandidatePreferences(object): + + """ + Encapsulates some of the preferences for filtering and sorting + InstallationCandidate objects. + """ + + def __init__( + self, + prefer_binary=False, # type: bool + allow_all_prereleases=False, # type: bool + ): + # type: (...) -> None + """ + :param allow_all_prereleases: Whether to allow all pre-releases. + """ + self.allow_all_prereleases = allow_all_prereleases + self.prefer_binary = prefer_binary + + +class BestCandidateResult(object): + """A collection of candidates, returned by `PackageFinder.find_best_candidate`. + + This class is only intended to be instantiated by CandidateEvaluator's + `compute_best_candidate()` method. + """ + + def __init__( + self, + candidates, # type: List[InstallationCandidate] + applicable_candidates, # type: List[InstallationCandidate] + best_candidate, # type: Optional[InstallationCandidate] + ): + # type: (...) -> None + """ + :param candidates: A sequence of all available candidates found. + :param applicable_candidates: The applicable candidates. + :param best_candidate: The most preferred candidate found, or None + if no applicable candidates were found. + """ + assert set(applicable_candidates) <= set(candidates) + + if best_candidate is None: + assert not applicable_candidates + else: + assert best_candidate in applicable_candidates + + self._applicable_candidates = applicable_candidates + self._candidates = candidates + + self.best_candidate = best_candidate + + def iter_all(self): + # type: () -> Iterable[InstallationCandidate] + """Iterate through all candidates. + """ + return iter(self._candidates) + + def iter_applicable(self): + # type: () -> Iterable[InstallationCandidate] + """Iterate through the applicable candidates. + """ + return iter(self._applicable_candidates) + + +class CandidateEvaluator(object): + + """ + Responsible for filtering and sorting candidates for installation based + on what tags are valid. + """ + + @classmethod + def create( + cls, + project_name, # type: str + target_python=None, # type: Optional[TargetPython] + prefer_binary=False, # type: bool + allow_all_prereleases=False, # type: bool + specifier=None, # type: Optional[specifiers.BaseSpecifier] + hashes=None, # type: Optional[Hashes] + ): + # type: (...) -> CandidateEvaluator + """Create a CandidateEvaluator object. + + :param target_python: The target Python interpreter to use when + checking compatibility. If None (the default), a TargetPython + object will be constructed from the running Python. + :param specifier: An optional object implementing `filter` + (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable + versions. + :param hashes: An optional collection of allowed hashes. + """ + if target_python is None: + target_python = TargetPython() + if specifier is None: + specifier = specifiers.SpecifierSet() + + supported_tags = target_python.get_tags() + + return cls( + project_name=project_name, + supported_tags=supported_tags, + specifier=specifier, + prefer_binary=prefer_binary, + allow_all_prereleases=allow_all_prereleases, + hashes=hashes, + ) + + def __init__( + self, + project_name, # type: str + supported_tags, # type: List[Tag] + specifier, # type: specifiers.BaseSpecifier + prefer_binary=False, # type: bool + allow_all_prereleases=False, # type: bool + hashes=None, # type: Optional[Hashes] + ): + # type: (...) -> None + """ + :param supported_tags: The PEP 425 tags supported by the target + Python in order of preference (most preferred first). + """ + self._allow_all_prereleases = allow_all_prereleases + self._hashes = hashes + self._prefer_binary = prefer_binary + self._project_name = project_name + self._specifier = specifier + self._supported_tags = supported_tags + + def get_applicable_candidates( + self, + candidates, # type: List[InstallationCandidate] + ): + # type: (...) -> List[InstallationCandidate] + """ + Return the applicable candidates from a list of candidates. + """ + # Using None infers from the specifier instead. + allow_prereleases = self._allow_all_prereleases or None + specifier = self._specifier + versions = { + str(v) for v in specifier.filter( + # We turn the version object into a str here because otherwise + # when we're debundled but setuptools isn't, Python will see + # packaging.version.Version and + # pkg_resources._vendor.packaging.version.Version as different + # types. This way we'll use a str as a common data interchange + # format. If we stop using the pkg_resources provided specifier + # and start using our own, we can drop the cast to str(). + (str(c.version) for c in candidates), + prereleases=allow_prereleases, + ) + } + + # Again, converting version to str to deal with debundling. + applicable_candidates = [ + c for c in candidates if str(c.version) in versions + ] + + filtered_applicable_candidates = filter_unallowed_hashes( + candidates=applicable_candidates, + hashes=self._hashes, + project_name=self._project_name, + ) + + return sorted(filtered_applicable_candidates, key=self._sort_key) + + def _sort_key(self, candidate): + # type: (InstallationCandidate) -> CandidateSortingKey + """ + Function to pass as the `key` argument to a call to sorted() to sort + InstallationCandidates by preference. + + Returns a tuple such that tuples sorting as greater using Python's + default comparison operator are more preferred. + + The preference is as follows: + + First and foremost, candidates with allowed (matching) hashes are + always preferred over candidates without matching hashes. This is + because e.g. if the only candidate with an allowed hash is yanked, + we still want to use that candidate. + + Second, excepting hash considerations, candidates that have been + yanked (in the sense of PEP 592) are always less preferred than + candidates that haven't been yanked. Then: + + If not finding wheels, they are sorted by version only. + If finding wheels, then the sort order is by version, then: + 1. existing installs + 2. wheels ordered via Wheel.support_index_min(self._supported_tags) + 3. source archives + If prefer_binary was set, then all wheels are sorted above sources. + + Note: it was considered to embed this logic into the Link + comparison operators, but then different sdist links + with the same version, would have to be considered equal + """ + valid_tags = self._supported_tags + support_num = len(valid_tags) + build_tag = () # type: BuildTag + binary_preference = 0 + link = candidate.link + if link.is_wheel: + # can raise InvalidWheelFilename + wheel = Wheel(link.filename) + if not wheel.supported(valid_tags): + raise UnsupportedWheel( + "%s is not a supported wheel for this platform. It " + "can't be sorted." % wheel.filename + ) + if self._prefer_binary: + binary_preference = 1 + pri = -(wheel.support_index_min(valid_tags)) + if wheel.build_tag is not None: + match = re.match(r'^(\d+)(.*)$', wheel.build_tag) + build_tag_groups = match.groups() + build_tag = (int(build_tag_groups[0]), build_tag_groups[1]) + else: # sdist + pri = -(support_num) + has_allowed_hash = int(link.is_hash_allowed(self._hashes)) + yank_value = -1 * int(link.is_yanked) # -1 for yanked. + return ( + has_allowed_hash, yank_value, binary_preference, candidate.version, + build_tag, pri, + ) + + def sort_best_candidate( + self, + candidates, # type: List[InstallationCandidate] + ): + # type: (...) -> Optional[InstallationCandidate] + """ + Return the best candidate per the instance's sort order, or None if + no candidate is acceptable. + """ + if not candidates: + return None + + best_candidate = max(candidates, key=self._sort_key) + + # Log a warning per PEP 592 if necessary before returning. + link = best_candidate.link + if link.is_yanked: + reason = link.yanked_reason or '' + msg = ( + # Mark this as a unicode string to prevent + # "UnicodeEncodeError: 'ascii' codec can't encode character" + # in Python 2 when the reason contains non-ascii characters. + u'The candidate selected for download or install is a ' + 'yanked version: {candidate}\n' + 'Reason for being yanked: {reason}' + ).format(candidate=best_candidate, reason=reason) + logger.warning(msg) + + return best_candidate + + def compute_best_candidate( + self, + candidates, # type: List[InstallationCandidate] + ): + # type: (...) -> BestCandidateResult + """ + Compute and return a `BestCandidateResult` instance. + """ + applicable_candidates = self.get_applicable_candidates(candidates) + + best_candidate = self.sort_best_candidate(applicable_candidates) + + return BestCandidateResult( + candidates, + applicable_candidates=applicable_candidates, + best_candidate=best_candidate, + ) + + +class PackageFinder(object): + """This finds packages. + + This is meant to match easy_install's technique for looking for + packages, by reading pages and looking for appropriate links. + """ + + def __init__( + self, + link_collector, # type: LinkCollector + target_python, # type: TargetPython + allow_yanked, # type: bool + format_control=None, # type: Optional[FormatControl] + candidate_prefs=None, # type: CandidatePreferences + ignore_requires_python=None, # type: Optional[bool] + ): + # type: (...) -> None + """ + This constructor is primarily meant to be used by the create() class + method and from tests. + + :param format_control: A FormatControl object, used to control + the selection of source packages / binary packages when consulting + the index and links. + :param candidate_prefs: Options to use when creating a + CandidateEvaluator object. + """ + if candidate_prefs is None: + candidate_prefs = CandidatePreferences() + + format_control = format_control or FormatControl(set(), set()) + + self._allow_yanked = allow_yanked + self._candidate_prefs = candidate_prefs + self._ignore_requires_python = ignore_requires_python + self._link_collector = link_collector + self._target_python = target_python + + self.format_control = format_control + + # These are boring links that have already been logged somehow. + self._logged_links = set() # type: Set[Link] + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + @classmethod + def create( + cls, + link_collector, # type: LinkCollector + selection_prefs, # type: SelectionPreferences + target_python=None, # type: Optional[TargetPython] + ): + # type: (...) -> PackageFinder + """Create a PackageFinder. + + :param selection_prefs: The candidate selection preferences, as a + SelectionPreferences object. + :param target_python: The target Python interpreter to use when + checking compatibility. If None (the default), a TargetPython + object will be constructed from the running Python. + """ + if target_python is None: + target_python = TargetPython() + + candidate_prefs = CandidatePreferences( + prefer_binary=selection_prefs.prefer_binary, + allow_all_prereleases=selection_prefs.allow_all_prereleases, + ) + + return cls( + candidate_prefs=candidate_prefs, + link_collector=link_collector, + target_python=target_python, + allow_yanked=selection_prefs.allow_yanked, + format_control=selection_prefs.format_control, + ignore_requires_python=selection_prefs.ignore_requires_python, + ) + + @property + def search_scope(self): + # type: () -> SearchScope + return self._link_collector.search_scope + + @search_scope.setter + def search_scope(self, search_scope): + # type: (SearchScope) -> None + self._link_collector.search_scope = search_scope + + @property + def find_links(self): + # type: () -> List[str] + return self._link_collector.find_links + + @property + def index_urls(self): + # type: () -> List[str] + return self.search_scope.index_urls + + @property + def trusted_hosts(self): + # type: () -> Iterable[str] + for host_port in self._link_collector.session.pip_trusted_origins: + yield build_netloc(*host_port) + + @property + def allow_all_prereleases(self): + # type: () -> bool + return self._candidate_prefs.allow_all_prereleases + + def set_allow_all_prereleases(self): + # type: () -> None + self._candidate_prefs.allow_all_prereleases = True + + def make_link_evaluator(self, project_name): + # type: (str) -> LinkEvaluator + canonical_name = canonicalize_name(project_name) + formats = self.format_control.get_allowed_formats(canonical_name) + + return LinkEvaluator( + project_name=project_name, + canonical_name=canonical_name, + formats=formats, + target_python=self._target_python, + allow_yanked=self._allow_yanked, + ignore_requires_python=self._ignore_requires_python, + ) + + def _sort_links(self, links): + # type: (Iterable[Link]) -> List[Link] + """ + Returns elements of links in order, non-egg links first, egg links + second, while eliminating duplicates + """ + eggs, no_eggs = [], [] + seen = set() # type: Set[Link] + for link in links: + if link not in seen: + seen.add(link) + if link.egg_fragment: + eggs.append(link) + else: + no_eggs.append(link) + return no_eggs + eggs + + def _log_skipped_link(self, link, reason): + # type: (Link, Text) -> None + if link not in self._logged_links: + # Mark this as a unicode string to prevent "UnicodeEncodeError: + # 'ascii' codec can't encode character" in Python 2 when + # the reason contains non-ascii characters. + # Also, put the link at the end so the reason is more visible + # and because the link string is usually very long. + logger.debug(u'Skipping link: %s: %s', reason, link) + self._logged_links.add(link) + + def get_install_candidate(self, link_evaluator, link): + # type: (LinkEvaluator, Link) -> Optional[InstallationCandidate] + """ + If the link is a candidate for install, convert it to an + InstallationCandidate and return it. Otherwise, return None. + """ + is_candidate, result = link_evaluator.evaluate_link(link) + if not is_candidate: + if result: + self._log_skipped_link(link, reason=result) + return None + + return InstallationCandidate( + name=link_evaluator.project_name, + link=link, + # Convert the Text result to str since InstallationCandidate + # accepts str. + version=str(result), + ) + + def evaluate_links(self, link_evaluator, links): + # type: (LinkEvaluator, Iterable[Link]) -> List[InstallationCandidate] + """ + Convert links that are candidates to InstallationCandidate objects. + """ + candidates = [] + for link in self._sort_links(links): + candidate = self.get_install_candidate(link_evaluator, link) + if candidate is not None: + candidates.append(candidate) + + return candidates + + def process_project_url(self, project_url, link_evaluator): + # type: (Link, LinkEvaluator) -> List[InstallationCandidate] + logger.debug( + 'Fetching project page and analyzing links: %s', project_url, + ) + html_page = self._link_collector.fetch_page(project_url) + if html_page is None: + return [] + + page_links = list(parse_links(html_page)) + + with indent_log(): + package_links = self.evaluate_links( + link_evaluator, + links=page_links, + ) + + return package_links + + def find_all_candidates(self, project_name): + # type: (str) -> List[InstallationCandidate] + """Find all available InstallationCandidate for project_name + + This checks index_urls and find_links. + All versions found are returned as an InstallationCandidate list. + + See LinkEvaluator.evaluate_link() for details on which files + are accepted. + """ + collected_links = self._link_collector.collect_links(project_name) + + link_evaluator = self.make_link_evaluator(project_name) + + find_links_versions = self.evaluate_links( + link_evaluator, + links=collected_links.find_links, + ) + + page_versions = [] + for project_url in collected_links.project_urls: + package_links = self.process_project_url( + project_url, link_evaluator=link_evaluator, + ) + page_versions.extend(package_links) + + file_versions = self.evaluate_links( + link_evaluator, + links=collected_links.files, + ) + if file_versions: + file_versions.sort(reverse=True) + logger.debug( + 'Local files found: %s', + ', '.join([ + url_to_path(candidate.link.url) + for candidate in file_versions + ]) + ) + + # This is an intentional priority ordering + return file_versions + find_links_versions + page_versions + + def make_candidate_evaluator( + self, + project_name, # type: str + specifier=None, # type: Optional[specifiers.BaseSpecifier] + hashes=None, # type: Optional[Hashes] + ): + # type: (...) -> CandidateEvaluator + """Create a CandidateEvaluator object to use. + """ + candidate_prefs = self._candidate_prefs + return CandidateEvaluator.create( + project_name=project_name, + target_python=self._target_python, + prefer_binary=candidate_prefs.prefer_binary, + allow_all_prereleases=candidate_prefs.allow_all_prereleases, + specifier=specifier, + hashes=hashes, + ) + + def find_best_candidate( + self, + project_name, # type: str + specifier=None, # type: Optional[specifiers.BaseSpecifier] + hashes=None, # type: Optional[Hashes] + ): + # type: (...) -> BestCandidateResult + """Find matches for the given project and specifier. + + :param specifier: An optional object implementing `filter` + (e.g. `packaging.specifiers.SpecifierSet`) to filter applicable + versions. + + :return: A `BestCandidateResult` instance. + """ + candidates = self.find_all_candidates(project_name) + candidate_evaluator = self.make_candidate_evaluator( + project_name=project_name, + specifier=specifier, + hashes=hashes, + ) + return candidate_evaluator.compute_best_candidate(candidates) + + def find_requirement(self, req, upgrade): + # type: (InstallRequirement, bool) -> Optional[Link] + """Try to find a Link matching req + + Expects req, an InstallRequirement and upgrade, a boolean + Returns a Link if found, + Raises DistributionNotFound or BestVersionAlreadyInstalled otherwise + """ + hashes = req.hashes(trust_internet=False) + best_candidate_result = self.find_best_candidate( + req.name, specifier=req.specifier, hashes=hashes, + ) + best_candidate = best_candidate_result.best_candidate + + installed_version = None # type: Optional[_BaseVersion] + if req.satisfied_by is not None: + installed_version = parse_version(req.satisfied_by.version) + + def _format_versions(cand_iter): + # type: (Iterable[InstallationCandidate]) -> str + # This repeated parse_version and str() conversion is needed to + # handle different vendoring sources from pip and pkg_resources. + # If we stop using the pkg_resources provided specifier and start + # using our own, we can drop the cast to str(). + return ", ".join(sorted( + {str(c.version) for c in cand_iter}, + key=parse_version, + )) or "none" + + if installed_version is None and best_candidate is None: + logger.critical( + 'Could not find a version that satisfies the requirement %s ' + '(from versions: %s)', + req, + _format_versions(best_candidate_result.iter_all()), + ) + + raise DistributionNotFound( + 'No matching distribution found for %s' % req + ) + + best_installed = False + if installed_version and ( + best_candidate is None or + best_candidate.version <= installed_version): + best_installed = True + + if not upgrade and installed_version is not None: + if best_installed: + logger.debug( + 'Existing installed version (%s) is most up-to-date and ' + 'satisfies requirement', + installed_version, + ) + else: + logger.debug( + 'Existing installed version (%s) satisfies requirement ' + '(most up-to-date version is %s)', + installed_version, + best_candidate.version, + ) + return None + + if best_installed: + # We have an existing version, and its the best version + logger.debug( + 'Installed version (%s) is most up-to-date (past versions: ' + '%s)', + installed_version, + _format_versions(best_candidate_result.iter_applicable()), + ) + raise BestVersionAlreadyInstalled + + logger.debug( + 'Using version %s (newest of versions: %s)', + best_candidate.version, + _format_versions(best_candidate_result.iter_applicable()), + ) + return best_candidate.link + + +def _find_name_version_sep(fragment, canonical_name): + # type: (str, str) -> int + """Find the separator's index based on the package's canonical name. + + :param fragment: A + filename "fragment" (stem) or + egg fragment. + :param canonical_name: The package's canonical name. + + This function is needed since the canonicalized name does not necessarily + have the same length as the egg info's name part. An example:: + + >>> fragment = 'foo__bar-1.0' + >>> canonical_name = 'foo-bar' + >>> _find_name_version_sep(fragment, canonical_name) + 8 + """ + # Project name and version must be separated by one single dash. Find all + # occurrences of dashes; if the string in front of it matches the canonical + # name, this is the one separating the name and version parts. + for i, c in enumerate(fragment): + if c != "-": + continue + if canonicalize_name(fragment[:i]) == canonical_name: + return i + raise ValueError("{} does not match {}".format(fragment, canonical_name)) + + +def _extract_version_from_fragment(fragment, canonical_name): + # type: (str, str) -> Optional[str] + """Parse the version string from a + filename + "fragment" (stem) or egg fragment. + + :param fragment: The string to parse. E.g. foo-2.1 + :param canonical_name: The canonicalized name of the package this + belongs to. + """ + try: + version_start = _find_name_version_sep(fragment, canonical_name) + 1 + except ValueError: + return None + version = fragment[version_start:] + if not version: + return None + return version diff --git a/Lib/site-packages/pip/_internal/legacy_resolve.py b/Lib/site-packages/pip/_internal/legacy_resolve.py new file mode 100644 index 0000000..ca26912 --- /dev/null +++ b/Lib/site-packages/pip/_internal/legacy_resolve.py @@ -0,0 +1,430 @@ +"""Dependency Resolution + +The dependency resolution in pip is performed as follows: + +for top-level requirements: + a. only one spec allowed per project, regardless of conflicts or not. + otherwise a "double requirement" exception is raised + b. they override sub-dependency requirements. +for sub-dependencies + a. "first found, wins" (where the order is breadth first) +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False +# mypy: disallow-untyped-defs=False + +import logging +import sys +from collections import defaultdict +from itertools import chain + +from pip._vendor.packaging import specifiers + +from pip._internal.exceptions import ( + BestVersionAlreadyInstalled, + DistributionNotFound, + HashError, + HashErrors, + UnsupportedPythonVersion, +) +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import dist_in_usersite, normalize_version_info +from pip._internal.utils.packaging import ( + check_requires_python, + get_requires_python, +) +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Callable, DefaultDict, List, Optional, Set, Tuple + from pip._vendor import pkg_resources + + from pip._internal.distributions import AbstractDistribution + from pip._internal.index.package_finder import PackageFinder + from pip._internal.operations.prepare import RequirementPreparer + from pip._internal.req.req_install import InstallRequirement + from pip._internal.req.req_set import RequirementSet + + InstallRequirementProvider = Callable[ + [str, InstallRequirement], InstallRequirement + ] + DiscoveredDependencies = DefaultDict[str, List[InstallRequirement]] + +logger = logging.getLogger(__name__) + + +def _check_dist_requires_python( + dist, # type: pkg_resources.Distribution + version_info, # type: Tuple[int, int, int] + ignore_requires_python=False, # type: bool +): + # type: (...) -> None + """ + Check whether the given Python version is compatible with a distribution's + "Requires-Python" value. + + :param version_info: A 3-tuple of ints representing the Python + major-minor-micro version to check. + :param ignore_requires_python: Whether to ignore the "Requires-Python" + value if the given Python version isn't compatible. + + :raises UnsupportedPythonVersion: When the given Python version isn't + compatible. + """ + requires_python = get_requires_python(dist) + try: + is_compatible = check_requires_python( + requires_python, version_info=version_info, + ) + except specifiers.InvalidSpecifier as exc: + logger.warning( + "Package %r has an invalid Requires-Python: %s", + dist.project_name, exc, + ) + return + + if is_compatible: + return + + version = '.'.join(map(str, version_info)) + if ignore_requires_python: + logger.debug( + 'Ignoring failed Requires-Python check for package %r: ' + '%s not in %r', + dist.project_name, version, requires_python, + ) + return + + raise UnsupportedPythonVersion( + 'Package {!r} requires a different Python: {} not in {!r}'.format( + dist.project_name, version, requires_python, + )) + + +class Resolver(object): + """Resolves which packages need to be installed/uninstalled to perform \ + the requested operation without breaking the requirements of any package. + """ + + _allowed_strategies = {"eager", "only-if-needed", "to-satisfy-only"} + + def __init__( + self, + preparer, # type: RequirementPreparer + finder, # type: PackageFinder + make_install_req, # type: InstallRequirementProvider + use_user_site, # type: bool + ignore_dependencies, # type: bool + ignore_installed, # type: bool + ignore_requires_python, # type: bool + force_reinstall, # type: bool + upgrade_strategy, # type: str + py_version_info=None, # type: Optional[Tuple[int, ...]] + ): + # type: (...) -> None + super(Resolver, self).__init__() + assert upgrade_strategy in self._allowed_strategies + + if py_version_info is None: + py_version_info = sys.version_info[:3] + else: + py_version_info = normalize_version_info(py_version_info) + + self._py_version_info = py_version_info + + self.preparer = preparer + self.finder = finder + + self.upgrade_strategy = upgrade_strategy + self.force_reinstall = force_reinstall + self.ignore_dependencies = ignore_dependencies + self.ignore_installed = ignore_installed + self.ignore_requires_python = ignore_requires_python + self.use_user_site = use_user_site + self._make_install_req = make_install_req + + self._discovered_dependencies = \ + defaultdict(list) # type: DiscoveredDependencies + + def resolve(self, requirement_set): + # type: (RequirementSet) -> None + """Resolve what operations need to be done + + As a side-effect of this method, the packages (and their dependencies) + are downloaded, unpacked and prepared for installation. This + preparation is done by ``pip.operations.prepare``. + + Once PyPI has static dependency metadata available, it would be + possible to move the preparation to become a step separated from + dependency resolution. + """ + # If any top-level requirement has a hash specified, enter + # hash-checking mode, which requires hashes from all. + root_reqs = ( + requirement_set.unnamed_requirements + + list(requirement_set.requirements.values()) + ) + + # Actually prepare the files, and collect any exceptions. Most hash + # exceptions cannot be checked ahead of time, because + # req.populate_link() needs to be called before we can make decisions + # based on link type. + discovered_reqs = [] # type: List[InstallRequirement] + hash_errors = HashErrors() + for req in chain(root_reqs, discovered_reqs): + try: + discovered_reqs.extend(self._resolve_one(requirement_set, req)) + except HashError as exc: + exc.req = req + hash_errors.append(exc) + + if hash_errors: + raise hash_errors + + def _is_upgrade_allowed(self, req): + # type: (InstallRequirement) -> bool + if self.upgrade_strategy == "to-satisfy-only": + return False + elif self.upgrade_strategy == "eager": + return True + else: + assert self.upgrade_strategy == "only-if-needed" + return req.is_direct + + def _set_req_to_reinstall(self, req): + # type: (InstallRequirement) -> None + """ + Set a requirement to be installed. + """ + # Don't uninstall the conflict if doing a user install and the + # conflict is not a user install. + if not self.use_user_site or dist_in_usersite(req.satisfied_by): + req.should_reinstall = True + req.satisfied_by = None + + def _check_skip_installed(self, req_to_install): + # type: (InstallRequirement) -> Optional[str] + """Check if req_to_install should be skipped. + + This will check if the req is installed, and whether we should upgrade + or reinstall it, taking into account all the relevant user options. + + After calling this req_to_install will only have satisfied_by set to + None if the req_to_install is to be upgraded/reinstalled etc. Any + other value will be a dist recording the current thing installed that + satisfies the requirement. + + Note that for vcs urls and the like we can't assess skipping in this + routine - we simply identify that we need to pull the thing down, + then later on it is pulled down and introspected to assess upgrade/ + reinstalls etc. + + :return: A text reason for why it was skipped, or None. + """ + if self.ignore_installed: + return None + + req_to_install.check_if_exists(self.use_user_site) + if not req_to_install.satisfied_by: + return None + + if self.force_reinstall: + self._set_req_to_reinstall(req_to_install) + return None + + if not self._is_upgrade_allowed(req_to_install): + if self.upgrade_strategy == "only-if-needed": + return 'already satisfied, skipping upgrade' + return 'already satisfied' + + # Check for the possibility of an upgrade. For link-based + # requirements we have to pull the tree down and inspect to assess + # the version #, so it's handled way down. + if not req_to_install.link: + try: + self.finder.find_requirement(req_to_install, upgrade=True) + except BestVersionAlreadyInstalled: + # Then the best version is installed. + return 'already up-to-date' + except DistributionNotFound: + # No distribution found, so we squash the error. It will + # be raised later when we re-try later to do the install. + # Why don't we just raise here? + pass + + self._set_req_to_reinstall(req_to_install) + return None + + def _get_abstract_dist_for(self, req): + # type: (InstallRequirement) -> AbstractDistribution + """Takes a InstallRequirement and returns a single AbstractDist \ + representing a prepared variant of the same. + """ + if req.editable: + return self.preparer.prepare_editable_requirement(req) + + # satisfied_by is only evaluated by calling _check_skip_installed, + # so it must be None here. + assert req.satisfied_by is None + skip_reason = self._check_skip_installed(req) + + if req.satisfied_by: + return self.preparer.prepare_installed_requirement( + req, skip_reason + ) + + upgrade_allowed = self._is_upgrade_allowed(req) + + # We eagerly populate the link, since that's our "legacy" behavior. + require_hashes = self.preparer.require_hashes + req.populate_link(self.finder, upgrade_allowed, require_hashes) + abstract_dist = self.preparer.prepare_linked_requirement(req) + + # NOTE + # The following portion is for determining if a certain package is + # going to be re-installed/upgraded or not and reporting to the user. + # This should probably get cleaned up in a future refactor. + + # req.req is only avail after unpack for URL + # pkgs repeat check_if_exists to uninstall-on-upgrade + # (#14) + if not self.ignore_installed: + req.check_if_exists(self.use_user_site) + + if req.satisfied_by: + should_modify = ( + self.upgrade_strategy != "to-satisfy-only" or + self.force_reinstall or + self.ignore_installed or + req.link.scheme == 'file' + ) + if should_modify: + self._set_req_to_reinstall(req) + else: + logger.info( + 'Requirement already satisfied (use --upgrade to upgrade):' + ' %s', req, + ) + + return abstract_dist + + def _resolve_one( + self, + requirement_set, # type: RequirementSet + req_to_install, # type: InstallRequirement + ): + # type: (...) -> List[InstallRequirement] + """Prepare a single requirements file. + + :return: A list of additional InstallRequirements to also install. + """ + # Tell user what we are doing for this requirement: + # obtain (editable), skipping, processing (local url), collecting + # (remote url or package name) + if req_to_install.constraint or req_to_install.prepared: + return [] + + req_to_install.prepared = True + + # register tmp src for cleanup in case something goes wrong + requirement_set.reqs_to_cleanup.append(req_to_install) + + abstract_dist = self._get_abstract_dist_for(req_to_install) + + # Parse and return dependencies + dist = abstract_dist.get_pkg_resources_distribution() + # This will raise UnsupportedPythonVersion if the given Python + # version isn't compatible with the distribution's Requires-Python. + _check_dist_requires_python( + dist, version_info=self._py_version_info, + ignore_requires_python=self.ignore_requires_python, + ) + + more_reqs = [] # type: List[InstallRequirement] + + def add_req(subreq, extras_requested): + sub_install_req = self._make_install_req( + str(subreq), + req_to_install, + ) + parent_req_name = req_to_install.name + to_scan_again, add_to_parent = requirement_set.add_requirement( + sub_install_req, + parent_req_name=parent_req_name, + extras_requested=extras_requested, + ) + if parent_req_name and add_to_parent: + self._discovered_dependencies[parent_req_name].append( + add_to_parent + ) + more_reqs.extend(to_scan_again) + + with indent_log(): + # We add req_to_install before its dependencies, so that we + # can refer to it when adding dependencies. + if not requirement_set.has_requirement(req_to_install.name): + # 'unnamed' requirements will get added here + # 'unnamed' requirements can only come from being directly + # provided by the user. + assert req_to_install.is_direct + requirement_set.add_requirement( + req_to_install, parent_req_name=None, + ) + + if not self.ignore_dependencies: + if req_to_install.extras: + logger.debug( + "Installing extra requirements: %r", + ','.join(req_to_install.extras), + ) + missing_requested = sorted( + set(req_to_install.extras) - set(dist.extras) + ) + for missing in missing_requested: + logger.warning( + '%s does not provide the extra \'%s\'', + dist, missing + ) + + available_requested = sorted( + set(dist.extras) & set(req_to_install.extras) + ) + for subreq in dist.requires(available_requested): + add_req(subreq, extras_requested=available_requested) + + if not req_to_install.editable and not req_to_install.satisfied_by: + # XXX: --no-install leads this to report 'Successfully + # downloaded' for only non-editable reqs, even though we took + # action on them. + requirement_set.successfully_downloaded.append(req_to_install) + + return more_reqs + + def get_installation_order(self, req_set): + # type: (RequirementSet) -> List[InstallRequirement] + """Create the installation order. + + The installation order is topological - requirements are installed + before the requiring thing. We break cycles at an arbitrary point, + and make no other guarantees. + """ + # The current implementation, which we may change at any point + # installs the user specified things in the order given, except when + # dependencies must come earlier to achieve topological order. + order = [] + ordered_reqs = set() # type: Set[InstallRequirement] + + def schedule(req): + if req.satisfied_by or req in ordered_reqs: + return + if req.constraint: + return + ordered_reqs.add(req) + for dep in self._discovered_dependencies[req.name]: + schedule(dep) + order.append(req) + + for install_req in req_set.requirements.values(): + schedule(install_req) + return order diff --git a/Lib/site-packages/pip/_internal/locations.py b/Lib/site-packages/pip/_internal/locations.py new file mode 100644 index 0000000..0c11553 --- /dev/null +++ b/Lib/site-packages/pip/_internal/locations.py @@ -0,0 +1,194 @@ +"""Locations where we look for configs, install stuff, etc""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import os +import os.path +import platform +import site +import sys +import sysconfig +from distutils import sysconfig as distutils_sysconfig +from distutils.command.install import SCHEME_KEYS # type: ignore +from distutils.command.install import install as distutils_install_command + +from pip._internal.models.scheme import Scheme +from pip._internal.utils import appdirs +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.typing import MYPY_CHECK_RUNNING, cast +from pip._internal.utils.virtualenv import running_under_virtualenv + +if MYPY_CHECK_RUNNING: + from typing import Dict, List, Optional, Union + + from distutils.cmd import Command as DistutilsCommand + + +# Application Directories +USER_CACHE_DIR = appdirs.user_cache_dir("pip") + + +def get_major_minor_version(): + # type: () -> str + """ + Return the major-minor version of the current Python as a string, e.g. + "3.7" or "3.10". + """ + return '{}.{}'.format(*sys.version_info) + + +def get_src_prefix(): + # type: () -> str + if running_under_virtualenv(): + src_prefix = os.path.join(sys.prefix, 'src') + else: + # FIXME: keep src in cwd for now (it is not a temporary folder) + try: + src_prefix = os.path.join(os.getcwd(), 'src') + except OSError: + # In case the current working directory has been renamed or deleted + sys.exit( + "The folder you are executing pip from can no longer be found." + ) + + # under macOS + virtualenv sys.prefix is not properly resolved + # it is something like /path/to/python/bin/.. + return os.path.abspath(src_prefix) + + +# FIXME doesn't account for venv linked to global site-packages + +site_packages = sysconfig.get_path("purelib") # type: Optional[str] + +# This is because of a bug in PyPy's sysconfig module, see +# https://bitbucket.org/pypy/pypy/issues/2506/sysconfig-returns-incorrect-paths +# for more information. +if platform.python_implementation().lower() == "pypy": + site_packages = distutils_sysconfig.get_python_lib() +try: + # Use getusersitepackages if this is present, as it ensures that the + # value is initialised properly. + user_site = site.getusersitepackages() +except AttributeError: + user_site = site.USER_SITE + +if WINDOWS: + bin_py = os.path.join(sys.prefix, 'Scripts') + bin_user = os.path.join(user_site, 'Scripts') + # buildout uses 'bin' on Windows too? + if not os.path.exists(bin_py): + bin_py = os.path.join(sys.prefix, 'bin') + bin_user = os.path.join(user_site, 'bin') +else: + bin_py = os.path.join(sys.prefix, 'bin') + bin_user = os.path.join(user_site, 'bin') + + # Forcing to use /usr/local/bin for standard macOS framework installs + # Also log to ~/Library/Logs/ for use with the Console.app log viewer + if sys.platform[:6] == 'darwin' and sys.prefix[:16] == '/System/Library/': + bin_py = '/usr/local/bin' + + +def distutils_scheme( + dist_name, user=False, home=None, root=None, isolated=False, prefix=None +): + # type:(str, bool, str, str, bool, str) -> Dict[str, str] + """ + Return a distutils install scheme + """ + from distutils.dist import Distribution + + dist_args = {'name': dist_name} # type: Dict[str, Union[str, List[str]]] + if isolated: + dist_args["script_args"] = ["--no-user-cfg"] + + d = Distribution(dist_args) + d.parse_config_files() + obj = None # type: Optional[DistutilsCommand] + obj = d.get_command_obj('install', create=True) + assert obj is not None + i = cast(distutils_install_command, obj) + # NOTE: setting user or home has the side-effect of creating the home dir + # or user base for installations during finalize_options() + # ideally, we'd prefer a scheme class that has no side-effects. + assert not (user and prefix), "user={} prefix={}".format(user, prefix) + assert not (home and prefix), "home={} prefix={}".format(home, prefix) + i.user = user or i.user + if user or home: + i.prefix = "" + i.prefix = prefix or i.prefix + i.home = home or i.home + i.root = root or i.root + i.finalize_options() + + scheme = {} + for key in SCHEME_KEYS: + scheme[key] = getattr(i, 'install_' + key) + + # install_lib specified in setup.cfg should install *everything* + # into there (i.e. it takes precedence over both purelib and + # platlib). Note, i.install_lib is *always* set after + # finalize_options(); we only want to override here if the user + # has explicitly requested it hence going back to the config + if 'install_lib' in d.get_option_dict('install'): + scheme.update(dict(purelib=i.install_lib, platlib=i.install_lib)) + + if running_under_virtualenv(): + scheme['headers'] = os.path.join( + sys.prefix, + 'include', + 'site', + 'python{}'.format(get_major_minor_version()), + dist_name, + ) + + if root is not None: + path_no_drive = os.path.splitdrive( + os.path.abspath(scheme["headers"]))[1] + scheme["headers"] = os.path.join( + root, + path_no_drive[1:], + ) + + return scheme + + +def get_scheme( + dist_name, # type: str + user=False, # type: bool + home=None, # type: Optional[str] + root=None, # type: Optional[str] + isolated=False, # type: bool + prefix=None, # type: Optional[str] +): + # type: (...) -> Scheme + """ + Get the "scheme" corresponding to the input parameters. The distutils + documentation provides the context for the available schemes: + https://docs.python.org/3/install/index.html#alternate-installation + + :param dist_name: the name of the package to retrieve the scheme for, used + in the headers scheme path + :param user: indicates to use the "user" scheme + :param home: indicates to use the "home" scheme and provides the base + directory for the same + :param root: root under which other directories are re-based + :param isolated: equivalent to --no-user-cfg, i.e. do not consider + ~/.pydistutils.cfg (posix) or ~/pydistutils.cfg (non-posix) for + scheme paths + :param prefix: indicates to use the "prefix" scheme and provides the + base directory for the same + """ + scheme = distutils_scheme( + dist_name, user, home, root, isolated, prefix + ) + return Scheme( + platlib=scheme["platlib"], + purelib=scheme["purelib"], + headers=scheme["headers"], + scripts=scheme["scripts"], + data=scheme["data"], + ) diff --git a/Lib/site-packages/pip/_internal/main.py b/Lib/site-packages/pip/_internal/main.py new file mode 100644 index 0000000..3208d5b --- /dev/null +++ b/Lib/site-packages/pip/_internal/main.py @@ -0,0 +1,16 @@ +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional, List + + +def main(args=None): + # type: (Optional[List[str]]) -> int + """This is preserved for old console scripts that may still be referencing + it. + + For additional details, see https://github.com/pypa/pip/issues/7498. + """ + from pip._internal.utils.entrypoints import _wrapper + + return _wrapper(args) diff --git a/Lib/site-packages/pip/_internal/models/__init__.py b/Lib/site-packages/pip/_internal/models/__init__.py new file mode 100644 index 0000000..7855226 --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/__init__.py @@ -0,0 +1,2 @@ +"""A package that contains models that represent entities. +""" diff --git a/Lib/site-packages/pip/_internal/models/candidate.py b/Lib/site-packages/pip/_internal/models/candidate.py new file mode 100644 index 0000000..1dc1a57 --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/candidate.py @@ -0,0 +1,36 @@ +from pip._vendor.packaging.version import parse as parse_version + +from pip._internal.utils.models import KeyBasedCompareMixin +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from pip._vendor.packaging.version import _BaseVersion + from pip._internal.models.link import Link + + +class InstallationCandidate(KeyBasedCompareMixin): + """Represents a potential "candidate" for installation. + """ + + def __init__(self, name, version, link): + # type: (str, str, Link) -> None + self.name = name + self.version = parse_version(version) # type: _BaseVersion + self.link = link + + super(InstallationCandidate, self).__init__( + key=(self.name, self.version, self.link), + defining_class=InstallationCandidate + ) + + def __repr__(self): + # type: () -> str + return "".format( + self.name, self.version, self.link, + ) + + def __str__(self): + # type: () -> str + return '{!r} candidate (version {} at {})'.format( + self.name, self.version, self.link, + ) diff --git a/Lib/site-packages/pip/_internal/models/format_control.py b/Lib/site-packages/pip/_internal/models/format_control.py new file mode 100644 index 0000000..2e13727 --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/format_control.py @@ -0,0 +1,84 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal.exceptions import CommandError +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional, Set, FrozenSet + + +class FormatControl(object): + """Helper for managing formats from which a package can be installed. + """ + + def __init__(self, no_binary=None, only_binary=None): + # type: (Optional[Set[str]], Optional[Set[str]]) -> None + if no_binary is None: + no_binary = set() + if only_binary is None: + only_binary = set() + + self.no_binary = no_binary + self.only_binary = only_binary + + def __eq__(self, other): + # type: (object) -> bool + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + # type: (object) -> bool + return not self.__eq__(other) + + def __repr__(self): + # type: () -> str + return "{}({}, {})".format( + self.__class__.__name__, + self.no_binary, + self.only_binary + ) + + @staticmethod + def handle_mutual_excludes(value, target, other): + # type: (str, Optional[Set[str]], Optional[Set[str]]) -> None + if value.startswith('-'): + raise CommandError( + "--no-binary / --only-binary option requires 1 argument." + ) + new = value.split(',') + while ':all:' in new: + other.clear() + target.clear() + target.add(':all:') + del new[:new.index(':all:') + 1] + # Without a none, we want to discard everything as :all: covers it + if ':none:' not in new: + return + for name in new: + if name == ':none:': + target.clear() + continue + name = canonicalize_name(name) + other.discard(name) + target.add(name) + + def get_allowed_formats(self, canonical_name): + # type: (str) -> FrozenSet[str] + result = {"binary", "source"} + if canonical_name in self.only_binary: + result.discard('source') + elif canonical_name in self.no_binary: + result.discard('binary') + elif ':all:' in self.only_binary: + result.discard('source') + elif ':all:' in self.no_binary: + result.discard('binary') + return frozenset(result) + + def disallow_binaries(self): + # type: () -> None + self.handle_mutual_excludes( + ':all:', self.no_binary, self.only_binary, + ) diff --git a/Lib/site-packages/pip/_internal/models/index.py b/Lib/site-packages/pip/_internal/models/index.py new file mode 100644 index 0000000..ead1efb --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/index.py @@ -0,0 +1,31 @@ +from pip._vendor.six.moves.urllib import parse as urllib_parse + + +class PackageIndex(object): + """Represents a Package Index and provides easier access to endpoints + """ + + def __init__(self, url, file_storage_domain): + # type: (str, str) -> None + super(PackageIndex, self).__init__() + self.url = url + self.netloc = urllib_parse.urlsplit(url).netloc + self.simple_url = self._url_for_path('simple') + self.pypi_url = self._url_for_path('pypi') + + # This is part of a temporary hack used to block installs of PyPI + # packages which depend on external urls only necessary until PyPI can + # block such packages themselves + self.file_storage_domain = file_storage_domain + + def _url_for_path(self, path): + # type: (str) -> str + return urllib_parse.urljoin(self.url, path) + + +PyPI = PackageIndex( + 'https://pypi.org/', file_storage_domain='files.pythonhosted.org' +) +TestPyPI = PackageIndex( + 'https://test.pypi.org/', file_storage_domain='test-files.pythonhosted.org' +) diff --git a/Lib/site-packages/pip/_internal/models/link.py b/Lib/site-packages/pip/_internal/models/link.py new file mode 100644 index 0000000..34fbcbf --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/link.py @@ -0,0 +1,227 @@ +import os +import posixpath +import re + +from pip._vendor.six.moves.urllib import parse as urllib_parse + +from pip._internal.utils.filetypes import WHEEL_EXTENSION +from pip._internal.utils.misc import ( + redact_auth_from_url, + split_auth_from_netloc, + splitext, +) +from pip._internal.utils.models import KeyBasedCompareMixin +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import path_to_url, url_to_path + +if MYPY_CHECK_RUNNING: + from typing import Optional, Text, Tuple, Union + from pip._internal.index.collector import HTMLPage + from pip._internal.utils.hashes import Hashes + + +class Link(KeyBasedCompareMixin): + """Represents a parsed link from a Package Index's simple URL + """ + + def __init__( + self, + url, # type: str + comes_from=None, # type: Optional[Union[str, HTMLPage]] + requires_python=None, # type: Optional[str] + yanked_reason=None, # type: Optional[Text] + ): + # type: (...) -> None + """ + :param url: url of the resource pointed to (href of the link) + :param comes_from: instance of HTMLPage where the link was found, + or string. + :param requires_python: String containing the `Requires-Python` + metadata field, specified in PEP 345. This may be specified by + a data-requires-python attribute in the HTML link tag, as + described in PEP 503. + :param yanked_reason: the reason the file has been yanked, if the + file has been yanked, or None if the file hasn't been yanked. + This is the value of the "data-yanked" attribute, if present, in + a simple repository HTML link. If the file has been yanked but + no reason was provided, this should be the empty string. See + PEP 592 for more information and the specification. + """ + + # url can be a UNC windows share + if url.startswith('\\\\'): + url = path_to_url(url) + + self._parsed_url = urllib_parse.urlsplit(url) + # Store the url as a private attribute to prevent accidentally + # trying to set a new value. + self._url = url + + self.comes_from = comes_from + self.requires_python = requires_python if requires_python else None + self.yanked_reason = yanked_reason + + super(Link, self).__init__(key=url, defining_class=Link) + + def __str__(self): + # type: () -> str + if self.requires_python: + rp = ' (requires-python:%s)' % self.requires_python + else: + rp = '' + if self.comes_from: + return '%s (from %s)%s' % (redact_auth_from_url(self._url), + self.comes_from, rp) + else: + return redact_auth_from_url(str(self._url)) + + def __repr__(self): + # type: () -> str + return '' % self + + @property + def url(self): + # type: () -> str + return self._url + + @property + def filename(self): + # type: () -> str + path = self.path.rstrip('/') + name = posixpath.basename(path) + if not name: + # Make sure we don't leak auth information if the netloc + # includes a username and password. + netloc, user_pass = split_auth_from_netloc(self.netloc) + return netloc + + name = urllib_parse.unquote(name) + assert name, ('URL %r produced no filename' % self._url) + return name + + @property + def file_path(self): + # type: () -> str + return url_to_path(self.url) + + @property + def scheme(self): + # type: () -> str + return self._parsed_url.scheme + + @property + def netloc(self): + # type: () -> str + """ + This can contain auth information. + """ + return self._parsed_url.netloc + + @property + def path(self): + # type: () -> str + return urllib_parse.unquote(self._parsed_url.path) + + def splitext(self): + # type: () -> Tuple[str, str] + return splitext(posixpath.basename(self.path.rstrip('/'))) + + @property + def ext(self): + # type: () -> str + return self.splitext()[1] + + @property + def url_without_fragment(self): + # type: () -> str + scheme, netloc, path, query, fragment = self._parsed_url + return urllib_parse.urlunsplit((scheme, netloc, path, query, None)) + + _egg_fragment_re = re.compile(r'[#&]egg=([^&]*)') + + @property + def egg_fragment(self): + # type: () -> Optional[str] + match = self._egg_fragment_re.search(self._url) + if not match: + return None + return match.group(1) + + _subdirectory_fragment_re = re.compile(r'[#&]subdirectory=([^&]*)') + + @property + def subdirectory_fragment(self): + # type: () -> Optional[str] + match = self._subdirectory_fragment_re.search(self._url) + if not match: + return None + return match.group(1) + + _hash_re = re.compile( + r'(sha1|sha224|sha384|sha256|sha512|md5)=([a-f0-9]+)' + ) + + @property + def hash(self): + # type: () -> Optional[str] + match = self._hash_re.search(self._url) + if match: + return match.group(2) + return None + + @property + def hash_name(self): + # type: () -> Optional[str] + match = self._hash_re.search(self._url) + if match: + return match.group(1) + return None + + @property + def show_url(self): + # type: () -> str + return posixpath.basename(self._url.split('#', 1)[0].split('?', 1)[0]) + + @property + def is_file(self): + # type: () -> bool + return self.scheme == 'file' + + def is_existing_dir(self): + # type: () -> bool + return self.is_file and os.path.isdir(self.file_path) + + @property + def is_wheel(self): + # type: () -> bool + return self.ext == WHEEL_EXTENSION + + @property + def is_vcs(self): + # type: () -> bool + from pip._internal.vcs import vcs + + return self.scheme in vcs.all_schemes + + @property + def is_yanked(self): + # type: () -> bool + return self.yanked_reason is not None + + @property + def has_hash(self): + # type: () -> bool + return self.hash_name is not None + + def is_hash_allowed(self, hashes): + # type: (Optional[Hashes]) -> bool + """ + Return True if the link has a hash and it is allowed. + """ + if hashes is None or not self.has_hash: + return False + # Assert non-None so mypy knows self.hash_name and self.hash are str. + assert self.hash_name is not None + assert self.hash is not None + + return hashes.is_hash_allowed(self.hash_name, hex_digest=self.hash) diff --git a/Lib/site-packages/pip/_internal/models/scheme.py b/Lib/site-packages/pip/_internal/models/scheme.py new file mode 100644 index 0000000..af07b40 --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/scheme.py @@ -0,0 +1,25 @@ +""" +For types associated with installation schemes. + +For a general overview of available schemes and their context, see +https://docs.python.org/3/install/index.html#alternate-installation. +""" + + +class Scheme(object): + """A Scheme holds paths which are used as the base directories for + artifacts associated with a Python package. + """ + def __init__( + self, + platlib, # type: str + purelib, # type: str + headers, # type: str + scripts, # type: str + data, # type: str + ): + self.platlib = platlib + self.purelib = purelib + self.headers = headers + self.scripts = scripts + self.data = data diff --git a/Lib/site-packages/pip/_internal/models/search_scope.py b/Lib/site-packages/pip/_internal/models/search_scope.py new file mode 100644 index 0000000..138d1b6 --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/search_scope.py @@ -0,0 +1,114 @@ +import itertools +import logging +import os +import posixpath + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.six.moves.urllib import parse as urllib_parse + +from pip._internal.models.index import PyPI +from pip._internal.utils.compat import has_tls +from pip._internal.utils.misc import normalize_path, redact_auth_from_url +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List + + +logger = logging.getLogger(__name__) + + +class SearchScope(object): + + """ + Encapsulates the locations that pip is configured to search. + """ + + @classmethod + def create( + cls, + find_links, # type: List[str] + index_urls, # type: List[str] + ): + # type: (...) -> SearchScope + """ + Create a SearchScope object after normalizing the `find_links`. + """ + # Build find_links. If an argument starts with ~, it may be + # a local file relative to a home directory. So try normalizing + # it and if it exists, use the normalized version. + # This is deliberately conservative - it might be fine just to + # blindly normalize anything starting with a ~... + built_find_links = [] # type: List[str] + for link in find_links: + if link.startswith('~'): + new_link = normalize_path(link) + if os.path.exists(new_link): + link = new_link + built_find_links.append(link) + + # If we don't have TLS enabled, then WARN if anyplace we're looking + # relies on TLS. + if not has_tls(): + for link in itertools.chain(index_urls, built_find_links): + parsed = urllib_parse.urlparse(link) + if parsed.scheme == 'https': + logger.warning( + 'pip is configured with locations that require ' + 'TLS/SSL, however the ssl module in Python is not ' + 'available.' + ) + break + + return cls( + find_links=built_find_links, + index_urls=index_urls, + ) + + def __init__( + self, + find_links, # type: List[str] + index_urls, # type: List[str] + ): + # type: (...) -> None + self.find_links = find_links + self.index_urls = index_urls + + def get_formatted_locations(self): + # type: () -> str + lines = [] + if self.index_urls and self.index_urls != [PyPI.simple_url]: + lines.append( + 'Looking in indexes: {}'.format(', '.join( + redact_auth_from_url(url) for url in self.index_urls)) + ) + if self.find_links: + lines.append( + 'Looking in links: {}'.format(', '.join( + redact_auth_from_url(url) for url in self.find_links)) + ) + return '\n'.join(lines) + + def get_index_urls_locations(self, project_name): + # type: (str) -> List[str] + """Returns the locations found via self.index_urls + + Checks the url_name on the main (first in the list) index and + use this url_name to produce all locations + """ + + def mkurl_pypi_url(url): + # type: (str) -> str + loc = posixpath.join( + url, + urllib_parse.quote(canonicalize_name(project_name))) + # For maximum compatibility with easy_install, ensure the path + # ends in a trailing slash. Although this isn't in the spec + # (and PyPI can handle it without the slash) some other index + # implementations might break if they relied on easy_install's + # behavior. + if not loc.endswith('/'): + loc = loc + '/' + return loc + + return [mkurl_pypi_url(url) for url in self.index_urls] diff --git a/Lib/site-packages/pip/_internal/models/selection_prefs.py b/Lib/site-packages/pip/_internal/models/selection_prefs.py new file mode 100644 index 0000000..f58fdce --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/selection_prefs.py @@ -0,0 +1,47 @@ +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional + from pip._internal.models.format_control import FormatControl + + +class SelectionPreferences(object): + + """ + Encapsulates the candidate selection preferences for downloading + and installing files. + """ + + # Don't include an allow_yanked default value to make sure each call + # site considers whether yanked releases are allowed. This also causes + # that decision to be made explicit in the calling code, which helps + # people when reading the code. + def __init__( + self, + allow_yanked, # type: bool + allow_all_prereleases=False, # type: bool + format_control=None, # type: Optional[FormatControl] + prefer_binary=False, # type: bool + ignore_requires_python=None, # type: Optional[bool] + ): + # type: (...) -> None + """Create a SelectionPreferences object. + + :param allow_yanked: Whether files marked as yanked (in the sense + of PEP 592) are permitted to be candidates for install. + :param format_control: A FormatControl object or None. Used to control + the selection of source packages / binary packages when consulting + the index and links. + :param prefer_binary: Whether to prefer an old, but valid, binary + dist over a new source dist. + :param ignore_requires_python: Whether to ignore incompatible + "Requires-Python" values in links. Defaults to False. + """ + if ignore_requires_python is None: + ignore_requires_python = False + + self.allow_yanked = allow_yanked + self.allow_all_prereleases = allow_all_prereleases + self.format_control = format_control + self.prefer_binary = prefer_binary + self.ignore_requires_python = ignore_requires_python diff --git a/Lib/site-packages/pip/_internal/models/target_python.py b/Lib/site-packages/pip/_internal/models/target_python.py new file mode 100644 index 0000000..97ae85a --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/target_python.py @@ -0,0 +1,107 @@ +import sys + +from pip._internal.pep425tags import get_supported, version_info_to_nodot +from pip._internal.utils.misc import normalize_version_info +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional, Tuple + + from pip._vendor.packaging.tags import Tag + + +class TargetPython(object): + + """ + Encapsulates the properties of a Python interpreter one is targeting + for a package install, download, etc. + """ + + def __init__( + self, + platform=None, # type: Optional[str] + py_version_info=None, # type: Optional[Tuple[int, ...]] + abi=None, # type: Optional[str] + implementation=None, # type: Optional[str] + ): + # type: (...) -> None + """ + :param platform: A string or None. If None, searches for packages + that are supported by the current system. Otherwise, will find + packages that can be built on the platform passed in. These + packages will only be downloaded for distribution: they will + not be built locally. + :param py_version_info: An optional tuple of ints representing the + Python version information to use (e.g. `sys.version_info[:3]`). + This can have length 1, 2, or 3 when provided. + :param abi: A string or None. This is passed to pep425tags.py's + get_supported() function as is. + :param implementation: A string or None. This is passed to + pep425tags.py's get_supported() function as is. + """ + # Store the given py_version_info for when we call get_supported(). + self._given_py_version_info = py_version_info + + if py_version_info is None: + py_version_info = sys.version_info[:3] + else: + py_version_info = normalize_version_info(py_version_info) + + py_version = '.'.join(map(str, py_version_info[:2])) + + self.abi = abi + self.implementation = implementation + self.platform = platform + self.py_version = py_version + self.py_version_info = py_version_info + + # This is used to cache the return value of get_tags(). + self._valid_tags = None # type: Optional[List[Tag]] + + def format_given(self): + # type: () -> str + """ + Format the given, non-None attributes for display. + """ + display_version = None + if self._given_py_version_info is not None: + display_version = '.'.join( + str(part) for part in self._given_py_version_info + ) + + key_values = [ + ('platform', self.platform), + ('version_info', display_version), + ('abi', self.abi), + ('implementation', self.implementation), + ] + return ' '.join( + '{}={!r}'.format(key, value) for key, value in key_values + if value is not None + ) + + def get_tags(self): + # type: () -> List[Tag] + """ + Return the supported PEP 425 tags to check wheel candidates against. + + The tags are returned in order of preference (most preferred first). + """ + if self._valid_tags is None: + # Pass versions=None if no py_version_info was given since + # versions=None uses special default logic. + py_version_info = self._given_py_version_info + if py_version_info is None: + version = None + else: + version = version_info_to_nodot(py_version_info) + + tags = get_supported( + version=version, + platform=self.platform, + abi=self.abi, + impl=self.implementation, + ) + self._valid_tags = tags + + return self._valid_tags diff --git a/Lib/site-packages/pip/_internal/models/wheel.py b/Lib/site-packages/pip/_internal/models/wheel.py new file mode 100644 index 0000000..f1e3f44 --- /dev/null +++ b/Lib/site-packages/pip/_internal/models/wheel.py @@ -0,0 +1,78 @@ +"""Represents a wheel file and provides access to the various parts of the +name that have meaning. +""" +import re + +from pip._vendor.packaging.tags import Tag + +from pip._internal.exceptions import InvalidWheelFilename +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List + + +class Wheel(object): + """A wheel file""" + + wheel_file_re = re.compile( + r"""^(?P(?P.+?)-(?P.*?)) + ((-(?P\d[^-]*?))?-(?P.+?)-(?P.+?)-(?P.+?) + \.whl|\.dist-info)$""", + re.VERBOSE + ) + + def __init__(self, filename): + # type: (str) -> None + """ + :raises InvalidWheelFilename: when the filename is invalid for a wheel + """ + wheel_info = self.wheel_file_re.match(filename) + if not wheel_info: + raise InvalidWheelFilename( + "%s is not a valid wheel filename." % filename + ) + self.filename = filename + self.name = wheel_info.group('name').replace('_', '-') + # we'll assume "_" means "-" due to wheel naming scheme + # (https://github.com/pypa/pip/issues/1150) + self.version = wheel_info.group('ver').replace('_', '-') + self.build_tag = wheel_info.group('build') + self.pyversions = wheel_info.group('pyver').split('.') + self.abis = wheel_info.group('abi').split('.') + self.plats = wheel_info.group('plat').split('.') + + # All the tag combinations from this file + self.file_tags = { + Tag(x, y, z) for x in self.pyversions + for y in self.abis for z in self.plats + } + + def get_formatted_file_tags(self): + # type: () -> List[str] + """Return the wheel's tags as a sorted list of strings.""" + return sorted(str(tag) for tag in self.file_tags) + + def support_index_min(self, tags): + # type: (List[Tag]) -> int + """Return the lowest index that one of the wheel's file_tag combinations + achieves in the given list of supported tags. + + For example, if there are 8 supported tags and one of the file tags + is first in the list, then return 0. + + :param tags: the PEP 425 tags to check the wheel against, in order + with most preferred first. + + :raises ValueError: If none of the wheel's file tags match one of + the supported tags. + """ + return min(tags.index(tag) for tag in self.file_tags if tag in tags) + + def supported(self, tags): + # type: (List[Tag]) -> bool + """Return whether the wheel is compatible with one of the given tags. + + :param tags: the PEP 425 tags to check the wheel against. + """ + return not self.file_tags.isdisjoint(tags) diff --git a/Lib/site-packages/pip/_internal/network/__init__.py b/Lib/site-packages/pip/_internal/network/__init__.py new file mode 100644 index 0000000..b51bde9 --- /dev/null +++ b/Lib/site-packages/pip/_internal/network/__init__.py @@ -0,0 +1,2 @@ +"""Contains purely network-related utilities. +""" diff --git a/Lib/site-packages/pip/_internal/network/auth.py b/Lib/site-packages/pip/_internal/network/auth.py new file mode 100644 index 0000000..1e1da54 --- /dev/null +++ b/Lib/site-packages/pip/_internal/network/auth.py @@ -0,0 +1,298 @@ +"""Network Authentication Helpers + +Contains interface (MultiDomainBasicAuth) and associated glue code for +providing credentials in the context of network requests. +""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +import logging + +from pip._vendor.requests.auth import AuthBase, HTTPBasicAuth +from pip._vendor.requests.utils import get_netrc_auth +from pip._vendor.six.moves.urllib import parse as urllib_parse + +from pip._internal.utils.misc import ( + ask, + ask_input, + ask_password, + remove_auth_from_url, + split_auth_netloc_from_url, +) +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from optparse import Values + from typing import Dict, Optional, Tuple + + from pip._internal.vcs.versioncontrol import AuthInfo + + Credentials = Tuple[str, str, str] + +logger = logging.getLogger(__name__) + +try: + import keyring # noqa +except ImportError: + keyring = None +except Exception as exc: + logger.warning( + "Keyring is skipped due to an exception: %s", str(exc), + ) + keyring = None + + +def get_keyring_auth(url, username): + """Return the tuple auth for a given url from keyring.""" + if not url or not keyring: + return None + + try: + try: + get_credential = keyring.get_credential + except AttributeError: + pass + else: + logger.debug("Getting credentials from keyring for %s", url) + cred = get_credential(url, username) + if cred is not None: + return cred.username, cred.password + return None + + if username: + logger.debug("Getting password from keyring for %s", url) + password = keyring.get_password(url, username) + if password: + return username, password + + except Exception as exc: + logger.warning( + "Keyring is skipped due to an exception: %s", str(exc), + ) + + +class MultiDomainBasicAuth(AuthBase): + + def __init__(self, prompting=True, index_urls=None): + # type: (bool, Optional[Values]) -> None + self.prompting = prompting + self.index_urls = index_urls + self.passwords = {} # type: Dict[str, AuthInfo] + # When the user is prompted to enter credentials and keyring is + # available, we will offer to save them. If the user accepts, + # this value is set to the credentials they entered. After the + # request authenticates, the caller should call + # ``save_credentials`` to save these. + self._credentials_to_save = None # type: Optional[Credentials] + + def _get_index_url(self, url): + """Return the original index URL matching the requested URL. + + Cached or dynamically generated credentials may work against + the original index URL rather than just the netloc. + + The provided url should have had its username and password + removed already. If the original index url had credentials then + they will be included in the return value. + + Returns None if no matching index was found, or if --no-index + was specified by the user. + """ + if not url or not self.index_urls: + return None + + for u in self.index_urls: + prefix = remove_auth_from_url(u).rstrip("/") + "/" + if url.startswith(prefix): + return u + + def _get_new_credentials(self, original_url, allow_netrc=True, + allow_keyring=True): + """Find and return credentials for the specified URL.""" + # Split the credentials and netloc from the url. + url, netloc, url_user_password = split_auth_netloc_from_url( + original_url, + ) + + # Start with the credentials embedded in the url + username, password = url_user_password + if username is not None and password is not None: + logger.debug("Found credentials in url for %s", netloc) + return url_user_password + + # Find a matching index url for this request + index_url = self._get_index_url(url) + if index_url: + # Split the credentials from the url. + index_info = split_auth_netloc_from_url(index_url) + if index_info: + index_url, _, index_url_user_password = index_info + logger.debug("Found index url %s", index_url) + + # If an index URL was found, try its embedded credentials + if index_url and index_url_user_password[0] is not None: + username, password = index_url_user_password + if username is not None and password is not None: + logger.debug("Found credentials in index url for %s", netloc) + return index_url_user_password + + # Get creds from netrc if we still don't have them + if allow_netrc: + netrc_auth = get_netrc_auth(original_url) + if netrc_auth: + logger.debug("Found credentials in netrc for %s", netloc) + return netrc_auth + + # If we don't have a password and keyring is available, use it. + if allow_keyring: + # The index url is more specific than the netloc, so try it first + kr_auth = ( + get_keyring_auth(index_url, username) or + get_keyring_auth(netloc, username) + ) + if kr_auth: + logger.debug("Found credentials in keyring for %s", netloc) + return kr_auth + + return username, password + + def _get_url_and_credentials(self, original_url): + """Return the credentials to use for the provided URL. + + If allowed, netrc and keyring may be used to obtain the + correct credentials. + + Returns (url_without_credentials, username, password). Note + that even if the original URL contains credentials, this + function may return a different username and password. + """ + url, netloc, _ = split_auth_netloc_from_url(original_url) + + # Use any stored credentials that we have for this netloc + username, password = self.passwords.get(netloc, (None, None)) + + if username is None and password is None: + # No stored credentials. Acquire new credentials without prompting + # the user. (e.g. from netrc, keyring, or the URL itself) + username, password = self._get_new_credentials(original_url) + + if username is not None or password is not None: + # Convert the username and password if they're None, so that + # this netloc will show up as "cached" in the conditional above. + # Further, HTTPBasicAuth doesn't accept None, so it makes sense to + # cache the value that is going to be used. + username = username or "" + password = password or "" + + # Store any acquired credentials. + self.passwords[netloc] = (username, password) + + assert ( + # Credentials were found + (username is not None and password is not None) or + # Credentials were not found + (username is None and password is None) + ), "Could not load credentials from url: {}".format(original_url) + + return url, username, password + + def __call__(self, req): + # Get credentials for this request + url, username, password = self._get_url_and_credentials(req.url) + + # Set the url of the request to the url without any credentials + req.url = url + + if username is not None and password is not None: + # Send the basic auth with this request + req = HTTPBasicAuth(username, password)(req) + + # Attach a hook to handle 401 responses + req.register_hook("response", self.handle_401) + + return req + + # Factored out to allow for easy patching in tests + def _prompt_for_password(self, netloc): + username = ask_input("User for %s: " % netloc) + if not username: + return None, None + auth = get_keyring_auth(netloc, username) + if auth: + return auth[0], auth[1], False + password = ask_password("Password: ") + return username, password, True + + # Factored out to allow for easy patching in tests + def _should_save_password_to_keyring(self): + if not keyring: + return False + return ask("Save credentials to keyring [y/N]: ", ["y", "n"]) == "y" + + def handle_401(self, resp, **kwargs): + # We only care about 401 responses, anything else we want to just + # pass through the actual response + if resp.status_code != 401: + return resp + + # We are not able to prompt the user so simply return the response + if not self.prompting: + return resp + + parsed = urllib_parse.urlparse(resp.url) + + # Prompt the user for a new username and password + username, password, save = self._prompt_for_password(parsed.netloc) + + # Store the new username and password to use for future requests + self._credentials_to_save = None + if username is not None and password is not None: + self.passwords[parsed.netloc] = (username, password) + + # Prompt to save the password to keyring + if save and self._should_save_password_to_keyring(): + self._credentials_to_save = (parsed.netloc, username, password) + + # Consume content and release the original connection to allow our new + # request to reuse the same one. + resp.content + resp.raw.release_conn() + + # Add our new username and password to the request + req = HTTPBasicAuth(username or "", password or "")(resp.request) + req.register_hook("response", self.warn_on_401) + + # On successful request, save the credentials that were used to + # keyring. (Note that if the user responded "no" above, this member + # is not set and nothing will be saved.) + if self._credentials_to_save: + req.register_hook("response", self.save_credentials) + + # Send our new request + new_resp = resp.connection.send(req, **kwargs) + new_resp.history.append(resp) + + return new_resp + + def warn_on_401(self, resp, **kwargs): + """Response callback to warn about incorrect credentials.""" + if resp.status_code == 401: + logger.warning( + '401 Error, Credentials not correct for %s', resp.request.url, + ) + + def save_credentials(self, resp, **kwargs): + """Response callback to save credentials on success.""" + assert keyring is not None, "should never reach here without keyring" + if not keyring: + return + + creds = self._credentials_to_save + self._credentials_to_save = None + if creds and resp.status_code < 400: + try: + logger.info('Saving credentials to keyring') + keyring.set_password(*creds) + except Exception: + logger.exception('Failed to save credentials') diff --git a/Lib/site-packages/pip/_internal/network/cache.py b/Lib/site-packages/pip/_internal/network/cache.py new file mode 100644 index 0000000..c9386e1 --- /dev/null +++ b/Lib/site-packages/pip/_internal/network/cache.py @@ -0,0 +1,81 @@ +"""HTTP cache implementation. +""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +import os +from contextlib import contextmanager + +from pip._vendor.cachecontrol.cache import BaseCache +from pip._vendor.cachecontrol.caches import FileCache +from pip._vendor.requests.models import Response + +from pip._internal.utils.filesystem import adjacent_tmp_file, replace +from pip._internal.utils.misc import ensure_dir +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional + + +def is_from_cache(response): + # type: (Response) -> bool + return getattr(response, "from_cache", False) + + +@contextmanager +def suppressed_cache_errors(): + """If we can't access the cache then we can just skip caching and process + requests as if caching wasn't enabled. + """ + try: + yield + except (OSError, IOError): + pass + + +class SafeFileCache(BaseCache): + """ + A file based cache which is safe to use even when the target directory may + not be accessible or writable. + """ + + def __init__(self, directory): + # type: (str) -> None + assert directory is not None, "Cache directory must not be None." + super(SafeFileCache, self).__init__() + self.directory = directory + + def _get_cache_path(self, name): + # type: (str) -> str + # From cachecontrol.caches.file_cache.FileCache._fn, brought into our + # class for backwards-compatibility and to avoid using a non-public + # method. + hashed = FileCache.encode(name) + parts = list(hashed[:5]) + [hashed] + return os.path.join(self.directory, *parts) + + def get(self, key): + # type: (str) -> Optional[bytes] + path = self._get_cache_path(key) + with suppressed_cache_errors(): + with open(path, 'rb') as f: + return f.read() + + def set(self, key, value): + # type: (str, bytes) -> None + path = self._get_cache_path(key) + with suppressed_cache_errors(): + ensure_dir(os.path.dirname(path)) + + with adjacent_tmp_file(path) as f: + f.write(value) + + replace(f.name, path) + + def delete(self, key): + # type: (str) -> None + path = self._get_cache_path(key) + with suppressed_cache_errors(): + os.remove(path) diff --git a/Lib/site-packages/pip/_internal/network/download.py b/Lib/site-packages/pip/_internal/network/download.py new file mode 100644 index 0000000..c90c4bf --- /dev/null +++ b/Lib/site-packages/pip/_internal/network/download.py @@ -0,0 +1,200 @@ +"""Download files with progress indicators. +""" +import cgi +import logging +import mimetypes +import os + +from pip._vendor import requests +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE + +from pip._internal.models.index import PyPI +from pip._internal.network.cache import is_from_cache +from pip._internal.network.utils import response_chunks +from pip._internal.utils.misc import ( + format_size, + redact_auth_from_url, + splitext, +) +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.ui import DownloadProgressProvider + +if MYPY_CHECK_RUNNING: + from typing import Iterable, Optional + + from pip._vendor.requests.models import Response + + from pip._internal.models.link import Link + from pip._internal.network.session import PipSession + +logger = logging.getLogger(__name__) + + +def _get_http_response_size(resp): + # type: (Response) -> Optional[int] + try: + return int(resp.headers['content-length']) + except (ValueError, KeyError, TypeError): + return None + + +def _prepare_download( + resp, # type: Response + link, # type: Link + progress_bar # type: str +): + # type: (...) -> Iterable[bytes] + total_length = _get_http_response_size(resp) + + if link.netloc == PyPI.file_storage_domain: + url = link.show_url + else: + url = link.url_without_fragment + + logged_url = redact_auth_from_url(url) + + if total_length: + logged_url = '{} ({})'.format(logged_url, format_size(total_length)) + + if is_from_cache(resp): + logger.info("Using cached %s", logged_url) + else: + logger.info("Downloading %s", logged_url) + + if logger.getEffectiveLevel() > logging.INFO: + show_progress = False + elif is_from_cache(resp): + show_progress = False + elif not total_length: + show_progress = True + elif total_length > (40 * 1000): + show_progress = True + else: + show_progress = False + + chunks = response_chunks(resp, CONTENT_CHUNK_SIZE) + + if not show_progress: + return chunks + + return DownloadProgressProvider( + progress_bar, max=total_length + )(chunks) + + +def sanitize_content_filename(filename): + # type: (str) -> str + """ + Sanitize the "filename" value from a Content-Disposition header. + """ + return os.path.basename(filename) + + +def parse_content_disposition(content_disposition, default_filename): + # type: (str, str) -> str + """ + Parse the "filename" value from a Content-Disposition header, and + return the default filename if the result is empty. + """ + _type, params = cgi.parse_header(content_disposition) + filename = params.get('filename') + if filename: + # We need to sanitize the filename to prevent directory traversal + # in case the filename contains ".." path parts. + filename = sanitize_content_filename(filename) + return filename or default_filename + + +def _get_http_response_filename(resp, link): + # type: (Response, Link) -> str + """Get an ideal filename from the given HTTP response, falling back to + the link filename if not provided. + """ + filename = link.filename # fallback + # Have a look at the Content-Disposition header for a better guess + content_disposition = resp.headers.get('content-disposition') + if content_disposition: + filename = parse_content_disposition(content_disposition, filename) + ext = splitext(filename)[1] # type: Optional[str] + if not ext: + ext = mimetypes.guess_extension( + resp.headers.get('content-type', '') + ) + if ext: + filename += ext + if not ext and link.url != resp.url: + ext = os.path.splitext(resp.url)[1] + if ext: + filename += ext + return filename + + +def _http_get_download(session, link): + # type: (PipSession, Link) -> Response + target_url = link.url.split('#', 1)[0] + resp = session.get( + target_url, + # We use Accept-Encoding: identity here because requests + # defaults to accepting compressed responses. This breaks in + # a variety of ways depending on how the server is configured. + # - Some servers will notice that the file isn't a compressible + # file and will leave the file alone and with an empty + # Content-Encoding + # - Some servers will notice that the file is already + # compressed and will leave the file alone and will add a + # Content-Encoding: gzip header + # - Some servers won't notice anything at all and will take + # a file that's already been compressed and compress it again + # and set the Content-Encoding: gzip header + # By setting this to request only the identity encoding We're + # hoping to eliminate the third case. Hopefully there does not + # exist a server which when given a file will notice it is + # already compressed and that you're not asking for a + # compressed file and will then decompress it before sending + # because if that's the case I don't think it'll ever be + # possible to make this work. + headers={"Accept-Encoding": "identity"}, + stream=True, + ) + resp.raise_for_status() + return resp + + +class Download(object): + def __init__( + self, + response, # type: Response + filename, # type: str + chunks, # type: Iterable[bytes] + ): + # type: (...) -> None + self.response = response + self.filename = filename + self.chunks = chunks + + +class Downloader(object): + def __init__( + self, + session, # type: PipSession + progress_bar, # type: str + ): + # type: (...) -> None + self._session = session + self._progress_bar = progress_bar + + def __call__(self, link): + # type: (Link) -> Download + try: + resp = _http_get_download(self._session, link) + except requests.HTTPError as e: + logger.critical( + "HTTP error %s while getting %s", e.response.status_code, link + ) + raise + + return Download( + resp, + _get_http_response_filename(resp, link), + _prepare_download(resp, link, self._progress_bar), + ) diff --git a/Lib/site-packages/pip/_internal/network/session.py b/Lib/site-packages/pip/_internal/network/session.py new file mode 100644 index 0000000..f5eb15e --- /dev/null +++ b/Lib/site-packages/pip/_internal/network/session.py @@ -0,0 +1,405 @@ +"""PipSession and supporting code, containing all pip-specific +network request configuration and behavior. +""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +import email.utils +import json +import logging +import mimetypes +import os +import platform +import sys +import warnings + +from pip._vendor import requests, six, urllib3 +from pip._vendor.cachecontrol import CacheControlAdapter +from pip._vendor.requests.adapters import BaseAdapter, HTTPAdapter +from pip._vendor.requests.models import Response +from pip._vendor.requests.structures import CaseInsensitiveDict +from pip._vendor.six.moves.urllib import parse as urllib_parse +from pip._vendor.urllib3.exceptions import InsecureRequestWarning + +from pip import __version__ +from pip._internal.network.auth import MultiDomainBasicAuth +from pip._internal.network.cache import SafeFileCache +# Import ssl from compat so the initial import occurs in only one place. +from pip._internal.utils.compat import has_tls, ipaddress +from pip._internal.utils.glibc import libc_ver +from pip._internal.utils.misc import ( + build_url_from_netloc, + get_installed_version, + parse_netloc, +) +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import url_to_path + +if MYPY_CHECK_RUNNING: + from typing import ( + Iterator, List, Optional, Tuple, Union, + ) + + from pip._internal.models.link import Link + + SecureOrigin = Tuple[str, str, Optional[Union[int, str]]] + + +logger = logging.getLogger(__name__) + + +# Ignore warning raised when using --trusted-host. +warnings.filterwarnings("ignore", category=InsecureRequestWarning) + + +SECURE_ORIGINS = [ + # protocol, hostname, port + # Taken from Chrome's list of secure origins (See: http://bit.ly/1qrySKC) + ("https", "*", "*"), + ("*", "localhost", "*"), + ("*", "127.0.0.0/8", "*"), + ("*", "::1/128", "*"), + ("file", "*", None), + # ssh is always secure. + ("ssh", "*", "*"), +] # type: List[SecureOrigin] + + +# These are environment variables present when running under various +# CI systems. For each variable, some CI systems that use the variable +# are indicated. The collection was chosen so that for each of a number +# of popular systems, at least one of the environment variables is used. +# This list is used to provide some indication of and lower bound for +# CI traffic to PyPI. Thus, it is okay if the list is not comprehensive. +# For more background, see: https://github.com/pypa/pip/issues/5499 +CI_ENVIRONMENT_VARIABLES = ( + # Azure Pipelines + 'BUILD_BUILDID', + # Jenkins + 'BUILD_ID', + # AppVeyor, CircleCI, Codeship, Gitlab CI, Shippable, Travis CI + 'CI', + # Explicit environment variable. + 'PIP_IS_CI', +) + + +def looks_like_ci(): + # type: () -> bool + """ + Return whether it looks like pip is running under CI. + """ + # We don't use the method of checking for a tty (e.g. using isatty()) + # because some CI systems mimic a tty (e.g. Travis CI). Thus that + # method doesn't provide definitive information in either direction. + return any(name in os.environ for name in CI_ENVIRONMENT_VARIABLES) + + +def user_agent(): + """ + Return a string representing the user agent. + """ + data = { + "installer": {"name": "pip", "version": __version__}, + "python": platform.python_version(), + "implementation": { + "name": platform.python_implementation(), + }, + } + + if data["implementation"]["name"] == 'CPython': + data["implementation"]["version"] = platform.python_version() + elif data["implementation"]["name"] == 'PyPy': + if sys.pypy_version_info.releaselevel == 'final': + pypy_version_info = sys.pypy_version_info[:3] + else: + pypy_version_info = sys.pypy_version_info + data["implementation"]["version"] = ".".join( + [str(x) for x in pypy_version_info] + ) + elif data["implementation"]["name"] == 'Jython': + # Complete Guess + data["implementation"]["version"] = platform.python_version() + elif data["implementation"]["name"] == 'IronPython': + # Complete Guess + data["implementation"]["version"] = platform.python_version() + + if sys.platform.startswith("linux"): + from pip._vendor import distro + distro_infos = dict(filter( + lambda x: x[1], + zip(["name", "version", "id"], distro.linux_distribution()), + )) + libc = dict(filter( + lambda x: x[1], + zip(["lib", "version"], libc_ver()), + )) + if libc: + distro_infos["libc"] = libc + if distro_infos: + data["distro"] = distro_infos + + if sys.platform.startswith("darwin") and platform.mac_ver()[0]: + data["distro"] = {"name": "macOS", "version": platform.mac_ver()[0]} + + if platform.system(): + data.setdefault("system", {})["name"] = platform.system() + + if platform.release(): + data.setdefault("system", {})["release"] = platform.release() + + if platform.machine(): + data["cpu"] = platform.machine() + + if has_tls(): + import _ssl as ssl + data["openssl_version"] = ssl.OPENSSL_VERSION + + setuptools_version = get_installed_version("setuptools") + if setuptools_version is not None: + data["setuptools_version"] = setuptools_version + + # Use None rather than False so as not to give the impression that + # pip knows it is not being run under CI. Rather, it is a null or + # inconclusive result. Also, we include some value rather than no + # value to make it easier to know that the check has been run. + data["ci"] = True if looks_like_ci() else None + + user_data = os.environ.get("PIP_USER_AGENT_USER_DATA") + if user_data is not None: + data["user_data"] = user_data + + return "{data[installer][name]}/{data[installer][version]} {json}".format( + data=data, + json=json.dumps(data, separators=(",", ":"), sort_keys=True), + ) + + +class LocalFSAdapter(BaseAdapter): + + def send(self, request, stream=None, timeout=None, verify=None, cert=None, + proxies=None): + pathname = url_to_path(request.url) + + resp = Response() + resp.status_code = 200 + resp.url = request.url + + try: + stats = os.stat(pathname) + except OSError as exc: + resp.status_code = 404 + resp.raw = exc + else: + modified = email.utils.formatdate(stats.st_mtime, usegmt=True) + content_type = mimetypes.guess_type(pathname)[0] or "text/plain" + resp.headers = CaseInsensitiveDict({ + "Content-Type": content_type, + "Content-Length": stats.st_size, + "Last-Modified": modified, + }) + + resp.raw = open(pathname, "rb") + resp.close = resp.raw.close + + return resp + + def close(self): + pass + + +class InsecureHTTPAdapter(HTTPAdapter): + + def cert_verify(self, conn, url, verify, cert): + super(InsecureHTTPAdapter, self).cert_verify( + conn=conn, url=url, verify=False, cert=cert + ) + + +class PipSession(requests.Session): + + timeout = None # type: Optional[int] + + def __init__(self, *args, **kwargs): + """ + :param trusted_hosts: Domains not to emit warnings for when not using + HTTPS. + """ + retries = kwargs.pop("retries", 0) + cache = kwargs.pop("cache", None) + trusted_hosts = kwargs.pop("trusted_hosts", []) # type: List[str] + index_urls = kwargs.pop("index_urls", None) + + super(PipSession, self).__init__(*args, **kwargs) + + # Namespace the attribute with "pip_" just in case to prevent + # possible conflicts with the base class. + self.pip_trusted_origins = [] # type: List[Tuple[str, Optional[int]]] + + # Attach our User Agent to the request + self.headers["User-Agent"] = user_agent() + + # Attach our Authentication handler to the session + self.auth = MultiDomainBasicAuth(index_urls=index_urls) + + # Create our urllib3.Retry instance which will allow us to customize + # how we handle retries. + retries = urllib3.Retry( + # Set the total number of retries that a particular request can + # have. + total=retries, + + # A 503 error from PyPI typically means that the Fastly -> Origin + # connection got interrupted in some way. A 503 error in general + # is typically considered a transient error so we'll go ahead and + # retry it. + # A 500 may indicate transient error in Amazon S3 + # A 520 or 527 - may indicate transient error in CloudFlare + status_forcelist=[500, 503, 520, 527], + + # Add a small amount of back off between failed requests in + # order to prevent hammering the service. + backoff_factor=0.25, + ) + + # We want to _only_ cache responses on securely fetched origins. We do + # this because we can't validate the response of an insecurely fetched + # origin, and we don't want someone to be able to poison the cache and + # require manual eviction from the cache to fix it. + if cache: + secure_adapter = CacheControlAdapter( + cache=SafeFileCache(cache), + max_retries=retries, + ) + else: + secure_adapter = HTTPAdapter(max_retries=retries) + + # Our Insecure HTTPAdapter disables HTTPS validation. It does not + # support caching (see above) so we'll use it for all http:// URLs as + # well as any https:// host that we've marked as ignoring TLS errors + # for. + insecure_adapter = InsecureHTTPAdapter(max_retries=retries) + # Save this for later use in add_insecure_host(). + self._insecure_adapter = insecure_adapter + + self.mount("https://", secure_adapter) + self.mount("http://", insecure_adapter) + + # Enable file:// urls + self.mount("file://", LocalFSAdapter()) + + for host in trusted_hosts: + self.add_trusted_host(host, suppress_logging=True) + + def add_trusted_host(self, host, source=None, suppress_logging=False): + # type: (str, Optional[str], bool) -> None + """ + :param host: It is okay to provide a host that has previously been + added. + :param source: An optional source string, for logging where the host + string came from. + """ + if not suppress_logging: + msg = 'adding trusted host: {!r}'.format(host) + if source is not None: + msg += ' (from {})'.format(source) + logger.info(msg) + + host_port = parse_netloc(host) + if host_port not in self.pip_trusted_origins: + self.pip_trusted_origins.append(host_port) + + self.mount(build_url_from_netloc(host) + '/', self._insecure_adapter) + if not host_port[1]: + # Mount wildcard ports for the same host. + self.mount( + build_url_from_netloc(host) + ':', + self._insecure_adapter + ) + + def iter_secure_origins(self): + # type: () -> Iterator[SecureOrigin] + for secure_origin in SECURE_ORIGINS: + yield secure_origin + for host, port in self.pip_trusted_origins: + yield ('*', host, '*' if port is None else port) + + def is_secure_origin(self, location): + # type: (Link) -> bool + # Determine if this url used a secure transport mechanism + parsed = urllib_parse.urlparse(str(location)) + origin_protocol, origin_host, origin_port = ( + parsed.scheme, parsed.hostname, parsed.port, + ) + + # The protocol to use to see if the protocol matches. + # Don't count the repository type as part of the protocol: in + # cases such as "git+ssh", only use "ssh". (I.e., Only verify against + # the last scheme.) + origin_protocol = origin_protocol.rsplit('+', 1)[-1] + + # Determine if our origin is a secure origin by looking through our + # hardcoded list of secure origins, as well as any additional ones + # configured on this PackageFinder instance. + for secure_origin in self.iter_secure_origins(): + secure_protocol, secure_host, secure_port = secure_origin + if origin_protocol != secure_protocol and secure_protocol != "*": + continue + + try: + addr = ipaddress.ip_address( + None + if origin_host is None + else six.ensure_text(origin_host) + ) + network = ipaddress.ip_network( + six.ensure_text(secure_host) + ) + except ValueError: + # We don't have both a valid address or a valid network, so + # we'll check this origin against hostnames. + if ( + origin_host and + origin_host.lower() != secure_host.lower() and + secure_host != "*" + ): + continue + else: + # We have a valid address and network, so see if the address + # is contained within the network. + if addr not in network: + continue + + # Check to see if the port matches. + if ( + origin_port != secure_port and + secure_port != "*" and + secure_port is not None + ): + continue + + # If we've gotten here, then this origin matches the current + # secure origin and we should return True + return True + + # If we've gotten to this point, then the origin isn't secure and we + # will not accept it as a valid location to search. We will however + # log a warning that we are ignoring it. + logger.warning( + "The repository located at %s is not a trusted or secure host and " + "is being ignored. If this repository is available via HTTPS we " + "recommend you use HTTPS instead, otherwise you may silence " + "this warning and allow it anyway with '--trusted-host %s'.", + origin_host, + origin_host, + ) + + return False + + def request(self, method, url, *args, **kwargs): + # Allow setting a default timeout on a session + kwargs.setdefault("timeout", self.timeout) + + # Dispatch the actual request + return super(PipSession, self).request(method, url, *args, **kwargs) diff --git a/Lib/site-packages/pip/_internal/network/utils.py b/Lib/site-packages/pip/_internal/network/utils.py new file mode 100644 index 0000000..a19050b --- /dev/null +++ b/Lib/site-packages/pip/_internal/network/utils.py @@ -0,0 +1,48 @@ +from pip._vendor.requests.models import CONTENT_CHUNK_SIZE, Response + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Iterator + + +def response_chunks(response, chunk_size=CONTENT_CHUNK_SIZE): + # type: (Response, int) -> Iterator[bytes] + """Given a requests Response, provide the data chunks. + """ + try: + # Special case for urllib3. + for chunk in response.raw.stream( + chunk_size, + # We use decode_content=False here because we don't + # want urllib3 to mess with the raw bytes we get + # from the server. If we decompress inside of + # urllib3 then we cannot verify the checksum + # because the checksum will be of the compressed + # file. This breakage will only occur if the + # server adds a Content-Encoding header, which + # depends on how the server was configured: + # - Some servers will notice that the file isn't a + # compressible file and will leave the file alone + # and with an empty Content-Encoding + # - Some servers will notice that the file is + # already compressed and will leave the file + # alone and will add a Content-Encoding: gzip + # header + # - Some servers won't notice anything at all and + # will take a file that's already been compressed + # and compress it again and set the + # Content-Encoding: gzip header + # + # By setting this not to decode automatically we + # hope to eliminate problems with the second case. + decode_content=False, + ): + yield chunk + except AttributeError: + # Standard file-like object. + while True: + chunk = response.raw.read(chunk_size) + if not chunk: + break + yield chunk diff --git a/Lib/site-packages/pip/_internal/network/xmlrpc.py b/Lib/site-packages/pip/_internal/network/xmlrpc.py new file mode 100644 index 0000000..121edd9 --- /dev/null +++ b/Lib/site-packages/pip/_internal/network/xmlrpc.py @@ -0,0 +1,44 @@ +"""xmlrpclib.Transport implementation +""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +import logging + +from pip._vendor import requests +# NOTE: XMLRPC Client is not annotated in typeshed as on 2017-07-17, which is +# why we ignore the type on this import +from pip._vendor.six.moves import xmlrpc_client # type: ignore +from pip._vendor.six.moves.urllib import parse as urllib_parse + +logger = logging.getLogger(__name__) + + +class PipXmlrpcTransport(xmlrpc_client.Transport): + """Provide a `xmlrpclib.Transport` implementation via a `PipSession` + object. + """ + + def __init__(self, index_url, session, use_datetime=False): + xmlrpc_client.Transport.__init__(self, use_datetime) + index_parts = urllib_parse.urlparse(index_url) + self._scheme = index_parts.scheme + self._session = session + + def request(self, host, handler, request_body, verbose=False): + parts = (self._scheme, host, handler, None, None, None) + url = urllib_parse.urlunparse(parts) + try: + headers = {'Content-Type': 'text/xml'} + response = self._session.post(url, data=request_body, + headers=headers, stream=True) + response.raise_for_status() + self.verbose = verbose + return self.parse_response(response.raw) + except requests.HTTPError as exc: + logger.critical( + "HTTP error %s while getting %s", + exc.response.status_code, url, + ) + raise diff --git a/Lib/site-packages/pip/_internal/operations/__init__.py b/Lib/site-packages/pip/_internal/operations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Lib/site-packages/pip/_internal/operations/build/__init__.py b/Lib/site-packages/pip/_internal/operations/build/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Lib/site-packages/pip/_internal/operations/build/metadata.py b/Lib/site-packages/pip/_internal/operations/build/metadata.py new file mode 100644 index 0000000..b13fbde --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/build/metadata.py @@ -0,0 +1,40 @@ +"""Metadata generation logic for source distributions. +""" + +import logging +import os + +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from pip._internal.build_env import BuildEnvironment + from pip._vendor.pep517.wrappers import Pep517HookCaller + +logger = logging.getLogger(__name__) + + +def generate_metadata(build_env, backend): + # type: (BuildEnvironment, Pep517HookCaller) -> str + """Generate metadata using mechanisms described in PEP 517. + + Returns the generated metadata directory. + """ + metadata_tmpdir = TempDirectory( + kind="modern-metadata", globally_managed=True + ) + + metadata_dir = metadata_tmpdir.path + + with build_env: + # Note that Pep517HookCaller implements a fallback for + # prepare_metadata_for_build_wheel, so we don't have to + # consider the possibility that this hook doesn't exist. + runner = runner_with_spinner_message("Preparing wheel metadata") + with backend.subprocess_runner(runner): + distinfo_dir = backend.prepare_metadata_for_build_wheel( + metadata_dir + ) + + return os.path.join(metadata_dir, distinfo_dir) diff --git a/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py b/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py new file mode 100644 index 0000000..b6813f8 --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py @@ -0,0 +1,122 @@ +"""Metadata generation logic for legacy source distributions. +""" + +import logging +import os + +from pip._internal.exceptions import InstallationError +from pip._internal.utils.misc import ensure_dir +from pip._internal.utils.setuptools_build import make_setuptools_egg_info_args +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.vcs import vcs + +if MYPY_CHECK_RUNNING: + from typing import List, Optional + + from pip._internal.build_env import BuildEnvironment + +logger = logging.getLogger(__name__) + + +def _find_egg_info(source_directory, is_editable): + # type: (str, bool) -> str + """Find an .egg-info in `source_directory`, based on `is_editable`. + """ + + def looks_like_virtual_env(path): + # type: (str) -> bool + return ( + os.path.lexists(os.path.join(path, 'bin', 'python')) or + os.path.exists(os.path.join(path, 'Scripts', 'Python.exe')) + ) + + def locate_editable_egg_info(base): + # type: (str) -> List[str] + candidates = [] # type: List[str] + for root, dirs, files in os.walk(base): + for dir_ in vcs.dirnames: + if dir_ in dirs: + dirs.remove(dir_) + # Iterate over a copy of ``dirs``, since mutating + # a list while iterating over it can cause trouble. + # (See https://github.com/pypa/pip/pull/462.) + for dir_ in list(dirs): + if looks_like_virtual_env(os.path.join(root, dir_)): + dirs.remove(dir_) + # Also don't search through tests + elif dir_ == 'test' or dir_ == 'tests': + dirs.remove(dir_) + candidates.extend(os.path.join(root, dir_) for dir_ in dirs) + return [f for f in candidates if f.endswith('.egg-info')] + + def depth_of_directory(dir_): + # type: (str) -> int + return ( + dir_.count(os.path.sep) + + (os.path.altsep and dir_.count(os.path.altsep) or 0) + ) + + base = source_directory + if is_editable: + filenames = locate_editable_egg_info(base) + else: + base = os.path.join(base, 'pip-egg-info') + filenames = os.listdir(base) + + if not filenames: + raise InstallationError( + "Files/directories not found in {}".format(base) + ) + + # If we have more than one match, we pick the toplevel one. This + # can easily be the case if there is a dist folder which contains + # an extracted tarball for testing purposes. + if len(filenames) > 1: + filenames.sort(key=depth_of_directory) + + return os.path.join(base, filenames[0]) + + +def generate_metadata( + build_env, # type: BuildEnvironment + setup_py_path, # type: str + source_dir, # type: str + editable, # type: bool + isolated, # type: bool + details, # type: str +): + # type: (...) -> str + """Generate metadata using setup.py-based defacto mechanisms. + + Returns the generated metadata directory. + """ + logger.debug( + 'Running setup.py (path:%s) egg_info for package %s', + setup_py_path, details, + ) + + egg_info_dir = None # type: Optional[str] + # For non-editable installs, don't put the .egg-info files at the root, + # to avoid confusion due to the source code being considered an installed + # egg. + if not editable: + egg_info_dir = os.path.join(source_dir, 'pip-egg-info') + # setuptools complains if the target directory does not exist. + ensure_dir(egg_info_dir) + + args = make_setuptools_egg_info_args( + setup_py_path, + egg_info_dir=egg_info_dir, + no_user_config=isolated, + ) + + with build_env: + call_subprocess( + args, + cwd=source_dir, + command_desc='python setup.py egg_info', + ) + + # Return the .egg-info directory. + return _find_egg_info(source_dir, editable) diff --git a/Lib/site-packages/pip/_internal/operations/build/wheel.py b/Lib/site-packages/pip/_internal/operations/build/wheel.py new file mode 100644 index 0000000..1266ce0 --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/build/wheel.py @@ -0,0 +1,46 @@ +import logging +import os + +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional + from pip._vendor.pep517.wrappers import Pep517HookCaller + +logger = logging.getLogger(__name__) + + +def build_wheel_pep517( + name, # type: str + backend, # type: Pep517HookCaller + metadata_directory, # type: str + build_options, # type: List[str] + tempd, # type: str +): + # type: (...) -> Optional[str] + """Build one InstallRequirement using the PEP 517 build process. + + Returns path to wheel if successfully built. Otherwise, returns None. + """ + assert metadata_directory is not None + if build_options: + # PEP 517 does not support --build-options + logger.error('Cannot build wheel for %s using PEP 517 when ' + '--build-option is present' % (name,)) + return None + try: + logger.debug('Destination directory: %s', tempd) + + runner = runner_with_spinner_message( + 'Building wheel for {} (PEP 517)'.format(name) + ) + with backend.subprocess_runner(runner): + wheel_name = backend.build_wheel( + tempd, + metadata_directory=metadata_directory, + ) + except Exception: + logger.error('Failed building wheel for %s', name) + return None + return os.path.join(tempd, wheel_name) diff --git a/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py b/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py new file mode 100644 index 0000000..3ebd9fe --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py @@ -0,0 +1,115 @@ +import logging +import os.path + +from pip._internal.utils.setuptools_build import ( + make_setuptools_bdist_wheel_args, +) +from pip._internal.utils.subprocess import ( + LOG_DIVIDER, + call_subprocess, + format_command_args, +) +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.ui import open_spinner + +if MYPY_CHECK_RUNNING: + from typing import List, Optional, Text + +logger = logging.getLogger(__name__) + + +def format_command_result( + command_args, # type: List[str] + command_output, # type: Text +): + # type: (...) -> str + """Format command information for logging.""" + command_desc = format_command_args(command_args) + text = 'Command arguments: {}\n'.format(command_desc) + + if not command_output: + text += 'Command output: None' + elif logger.getEffectiveLevel() > logging.DEBUG: + text += 'Command output: [use --verbose to show]' + else: + if not command_output.endswith('\n'): + command_output += '\n' + text += 'Command output:\n{}{}'.format(command_output, LOG_DIVIDER) + + return text + + +def get_legacy_build_wheel_path( + names, # type: List[str] + temp_dir, # type: str + name, # type: str + command_args, # type: List[str] + command_output, # type: Text +): + # type: (...) -> Optional[str] + """Return the path to the wheel in the temporary build directory.""" + # Sort for determinism. + names = sorted(names) + if not names: + msg = ( + 'Legacy build of wheel for {!r} created no files.\n' + ).format(name) + msg += format_command_result(command_args, command_output) + logger.warning(msg) + return None + + if len(names) > 1: + msg = ( + 'Legacy build of wheel for {!r} created more than one file.\n' + 'Filenames (choosing first): {}\n' + ).format(name, names) + msg += format_command_result(command_args, command_output) + logger.warning(msg) + + return os.path.join(temp_dir, names[0]) + + +def build_wheel_legacy( + name, # type: str + setup_py_path, # type: str + source_dir, # type: str + global_options, # type: List[str] + build_options, # type: List[str] + tempd, # type: str +): + # type: (...) -> Optional[str] + """Build one unpacked package using the "legacy" build process. + + Returns path to wheel if successfully built. Otherwise, returns None. + """ + wheel_args = make_setuptools_bdist_wheel_args( + setup_py_path, + global_options=global_options, + build_options=build_options, + destination_dir=tempd, + ) + + spin_message = 'Building wheel for %s (setup.py)' % (name,) + with open_spinner(spin_message) as spinner: + logger.debug('Destination directory: %s', tempd) + + try: + output = call_subprocess( + wheel_args, + cwd=source_dir, + spinner=spinner, + ) + except Exception: + spinner.finish("error") + logger.error('Failed building wheel for %s', name) + return None + + names = os.listdir(tempd) + wheel_path = get_legacy_build_wheel_path( + names=names, + temp_dir=tempd, + name=name, + command_args=wheel_args, + command_output=output, + ) + return wheel_path diff --git a/Lib/site-packages/pip/_internal/operations/check.py b/Lib/site-packages/pip/_internal/operations/check.py new file mode 100644 index 0000000..b85a123 --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/check.py @@ -0,0 +1,163 @@ +"""Validation of dependencies of packages +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False +# mypy: disallow-untyped-defs=False + +import logging +from collections import namedtuple + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.pkg_resources import RequirementParseError + +from pip._internal.distributions import ( + make_distribution_for_install_requirement, +) +from pip._internal.utils.misc import get_installed_distributions +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +logger = logging.getLogger(__name__) + +if MYPY_CHECK_RUNNING: + from pip._internal.req.req_install import InstallRequirement + from typing import ( + Any, Callable, Dict, Optional, Set, Tuple, List + ) + + # Shorthands + PackageSet = Dict[str, 'PackageDetails'] + Missing = Tuple[str, Any] + Conflicting = Tuple[str, str, Any] + + MissingDict = Dict[str, List[Missing]] + ConflictingDict = Dict[str, List[Conflicting]] + CheckResult = Tuple[MissingDict, ConflictingDict] + +PackageDetails = namedtuple('PackageDetails', ['version', 'requires']) + + +def create_package_set_from_installed(**kwargs): + # type: (**Any) -> Tuple[PackageSet, bool] + """Converts a list of distributions into a PackageSet. + """ + # Default to using all packages installed on the system + if kwargs == {}: + kwargs = {"local_only": False, "skip": ()} + + package_set = {} + problems = False + for dist in get_installed_distributions(**kwargs): + name = canonicalize_name(dist.project_name) + try: + package_set[name] = PackageDetails(dist.version, dist.requires()) + except RequirementParseError as e: + # Don't crash on broken metadata + logger.warning("Error parsing requirements for %s: %s", name, e) + problems = True + return package_set, problems + + +def check_package_set(package_set, should_ignore=None): + # type: (PackageSet, Optional[Callable[[str], bool]]) -> CheckResult + """Check if a package set is consistent + + If should_ignore is passed, it should be a callable that takes a + package name and returns a boolean. + """ + if should_ignore is None: + def should_ignore(name): + return False + + missing = {} + conflicting = {} + + for package_name in package_set: + # Info about dependencies of package_name + missing_deps = set() # type: Set[Missing] + conflicting_deps = set() # type: Set[Conflicting] + + if should_ignore(package_name): + continue + + for req in package_set[package_name].requires: + name = canonicalize_name(req.project_name) # type: str + + # Check if it's missing + if name not in package_set: + missed = True + if req.marker is not None: + missed = req.marker.evaluate() + if missed: + missing_deps.add((name, req)) + continue + + # Check if there's a conflict + version = package_set[name].version # type: str + if not req.specifier.contains(version, prereleases=True): + conflicting_deps.add((name, version, req)) + + if missing_deps: + missing[package_name] = sorted(missing_deps, key=str) + if conflicting_deps: + conflicting[package_name] = sorted(conflicting_deps, key=str) + + return missing, conflicting + + +def check_install_conflicts(to_install): + # type: (List[InstallRequirement]) -> Tuple[PackageSet, CheckResult] + """For checking if the dependency graph would be consistent after \ + installing given requirements + """ + # Start from the current state + package_set, _ = create_package_set_from_installed() + # Install packages + would_be_installed = _simulate_installation_of(to_install, package_set) + + # Only warn about directly-dependent packages; create a whitelist of them + whitelist = _create_whitelist(would_be_installed, package_set) + + return ( + package_set, + check_package_set( + package_set, should_ignore=lambda name: name not in whitelist + ) + ) + + +def _simulate_installation_of(to_install, package_set): + # type: (List[InstallRequirement], PackageSet) -> Set[str] + """Computes the version of packages after installing to_install. + """ + + # Keep track of packages that were installed + installed = set() + + # Modify it as installing requirement_set would (assuming no errors) + for inst_req in to_install: + abstract_dist = make_distribution_for_install_requirement(inst_req) + dist = abstract_dist.get_pkg_resources_distribution() + + name = canonicalize_name(dist.key) + package_set[name] = PackageDetails(dist.version, dist.requires()) + + installed.add(name) + + return installed + + +def _create_whitelist(would_be_installed, package_set): + # type: (Set[str], PackageSet) -> Set[str] + packages_affected = set(would_be_installed) + + for package_name in package_set: + if package_name in packages_affected: + continue + + for req in package_set[package_name].requires: + if canonicalize_name(req.name) in packages_affected: + packages_affected.add(package_name) + break + + return packages_affected diff --git a/Lib/site-packages/pip/_internal/operations/freeze.py b/Lib/site-packages/pip/_internal/operations/freeze.py new file mode 100644 index 0000000..36a5c33 --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/freeze.py @@ -0,0 +1,265 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import collections +import logging +import os +import re + +from pip._vendor import six +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.pkg_resources import RequirementParseError + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, +) +from pip._internal.req.req_file import COMMENT_RE +from pip._internal.utils.misc import ( + dist_is_editable, + get_installed_distributions, +) +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import ( + Iterator, Optional, List, Container, Set, Dict, Tuple, Iterable, Union + ) + from pip._internal.cache import WheelCache + from pip._vendor.pkg_resources import ( + Distribution, Requirement + ) + + RequirementInfo = Tuple[Optional[Union[str, Requirement]], bool, List[str]] + + +logger = logging.getLogger(__name__) + + +def freeze( + requirement=None, # type: Optional[List[str]] + find_links=None, # type: Optional[List[str]] + local_only=None, # type: Optional[bool] + user_only=None, # type: Optional[bool] + paths=None, # type: Optional[List[str]] + skip_regex=None, # type: Optional[str] + isolated=False, # type: bool + wheel_cache=None, # type: Optional[WheelCache] + exclude_editable=False, # type: bool + skip=() # type: Container[str] +): + # type: (...) -> Iterator[str] + find_links = find_links or [] + skip_match = None + + if skip_regex: + skip_match = re.compile(skip_regex).search + + for link in find_links: + yield '-f %s' % link + installations = {} # type: Dict[str, FrozenRequirement] + for dist in get_installed_distributions(local_only=local_only, + skip=(), + user_only=user_only, + paths=paths): + try: + req = FrozenRequirement.from_dist(dist) + except RequirementParseError as exc: + # We include dist rather than dist.project_name because the + # dist string includes more information, like the version and + # location. We also include the exception message to aid + # troubleshooting. + logger.warning( + 'Could not generate requirement for distribution %r: %s', + dist, exc + ) + continue + if exclude_editable and req.editable: + continue + installations[req.canonical_name] = req + + if requirement: + # the options that don't get turned into an InstallRequirement + # should only be emitted once, even if the same option is in multiple + # requirements files, so we need to keep track of what has been emitted + # so that we don't emit it again if it's seen again + emitted_options = set() # type: Set[str] + # keep track of which files a requirement is in so that we can + # give an accurate warning if a requirement appears multiple times. + req_files = collections.defaultdict(list) # type: Dict[str, List[str]] + for req_file_path in requirement: + with open(req_file_path) as req_file: + for line in req_file: + if (not line.strip() or + line.strip().startswith('#') or + (skip_match and skip_match(line)) or + line.startswith(( + '-r', '--requirement', + '-Z', '--always-unzip', + '-f', '--find-links', + '-i', '--index-url', + '--pre', + '--trusted-host', + '--process-dependency-links', + '--extra-index-url'))): + line = line.rstrip() + if line not in emitted_options: + emitted_options.add(line) + yield line + continue + + if line.startswith('-e') or line.startswith('--editable'): + if line.startswith('-e'): + line = line[2:].strip() + else: + line = line[len('--editable'):].strip().lstrip('=') + line_req = install_req_from_editable( + line, + isolated=isolated, + wheel_cache=wheel_cache, + ) + else: + line_req = install_req_from_line( + COMMENT_RE.sub('', line).strip(), + isolated=isolated, + wheel_cache=wheel_cache, + ) + + if not line_req.name: + logger.info( + "Skipping line in requirement file [%s] because " + "it's not clear what it would install: %s", + req_file_path, line.strip(), + ) + logger.info( + " (add #egg=PackageName to the URL to avoid" + " this warning)" + ) + else: + line_req_canonical_name = canonicalize_name( + line_req.name) + if line_req_canonical_name not in installations: + # either it's not installed, or it is installed + # but has been processed already + if not req_files[line_req.name]: + logger.warning( + "Requirement file [%s] contains %s, but " + "package %r is not installed", + req_file_path, + COMMENT_RE.sub('', line).strip(), + line_req.name + ) + else: + req_files[line_req.name].append(req_file_path) + else: + yield str(installations[ + line_req_canonical_name]).rstrip() + del installations[line_req_canonical_name] + req_files[line_req.name].append(req_file_path) + + # Warn about requirements that were included multiple times (in a + # single requirements file or in different requirements files). + for name, files in six.iteritems(req_files): + if len(files) > 1: + logger.warning("Requirement %s included multiple times [%s]", + name, ', '.join(sorted(set(files)))) + + yield( + '## The following requirements were added by ' + 'pip freeze:' + ) + for installation in sorted( + installations.values(), key=lambda x: x.name.lower()): + if installation.canonical_name not in skip: + yield str(installation).rstrip() + + +def get_requirement_info(dist): + # type: (Distribution) -> RequirementInfo + """ + Compute and return values (req, editable, comments) for use in + FrozenRequirement.from_dist(). + """ + if not dist_is_editable(dist): + return (None, False, []) + + location = os.path.normcase(os.path.abspath(dist.location)) + + from pip._internal.vcs import vcs, RemoteNotFoundError + vcs_backend = vcs.get_backend_for_dir(location) + + if vcs_backend is None: + req = dist.as_requirement() + logger.debug( + 'No VCS found for editable requirement "%s" in: %r', req, + location, + ) + comments = [ + '# Editable install with no version control ({})'.format(req) + ] + return (location, True, comments) + + try: + req = vcs_backend.get_src_requirement(location, dist.project_name) + except RemoteNotFoundError: + req = dist.as_requirement() + comments = [ + '# Editable {} install with no remote ({})'.format( + type(vcs_backend).__name__, req, + ) + ] + return (location, True, comments) + + except BadCommand: + logger.warning( + 'cannot determine version of editable source in %s ' + '(%s command not found in path)', + location, + vcs_backend.name, + ) + return (None, True, []) + + except InstallationError as exc: + logger.warning( + "Error when trying to get requirement for VCS system %s, " + "falling back to uneditable format", exc + ) + else: + if req is not None: + return (req, True, []) + + logger.warning( + 'Could not determine repository location of %s', location + ) + comments = ['## !! Could not determine repository location'] + + return (None, False, comments) + + +class FrozenRequirement(object): + def __init__(self, name, req, editable, comments=()): + # type: (str, Union[str, Requirement], bool, Iterable[str]) -> None + self.name = name + self.canonical_name = canonicalize_name(name) + self.req = req + self.editable = editable + self.comments = comments + + @classmethod + def from_dist(cls, dist): + # type: (Distribution) -> FrozenRequirement + req, editable, comments = get_requirement_info(dist) + if req is None: + req = dist.as_requirement() + + return cls(dist.project_name, req, editable, comments=comments) + + def __str__(self): + req = self.req + if self.editable: + req = '-e %s' % req + return '\n'.join(list(self.comments) + [str(req)]) + '\n' diff --git a/Lib/site-packages/pip/_internal/operations/install/__init__.py b/Lib/site-packages/pip/_internal/operations/install/__init__.py new file mode 100644 index 0000000..24d6a5d --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/install/__init__.py @@ -0,0 +1,2 @@ +"""For modules related to installing packages. +""" diff --git a/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py b/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py new file mode 100644 index 0000000..a668a61 --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py @@ -0,0 +1,52 @@ +"""Legacy editable installation process, i.e. `setup.py develop`. +""" +import logging + +from pip._internal.utils.logging import indent_log +from pip._internal.utils.setuptools_build import make_setuptools_develop_args +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional, Sequence + + from pip._internal.build_env import BuildEnvironment + + +logger = logging.getLogger(__name__) + + +def install_editable( + install_options, # type: List[str] + global_options, # type: Sequence[str] + prefix, # type: Optional[str] + home, # type: Optional[str] + use_user_site, # type: bool + name, # type: str + setup_py_path, # type: str + isolated, # type: bool + build_env, # type: BuildEnvironment + unpacked_source_directory, # type: str +): + # type: (...) -> None + """Install a package in editable mode. Most arguments are pass-through + to setuptools. + """ + logger.info('Running setup.py develop for %s', name) + + args = make_setuptools_develop_args( + setup_py_path, + global_options=global_options, + install_options=install_options, + no_user_config=isolated, + prefix=prefix, + home=home, + use_user_site=use_user_site, + ) + + with indent_log(): + with build_env: + call_subprocess( + args, + cwd=unpacked_source_directory, + ) diff --git a/Lib/site-packages/pip/_internal/operations/install/legacy.py b/Lib/site-packages/pip/_internal/operations/install/legacy.py new file mode 100644 index 0000000..2d4adc4 --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/install/legacy.py @@ -0,0 +1,129 @@ +"""Legacy installation process, i.e. `setup.py install`. +""" + +import logging +import os +from distutils.util import change_root + +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ensure_dir +from pip._internal.utils.setuptools_build import make_setuptools_install_args +from pip._internal.utils.subprocess import runner_with_spinner_message +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional, Sequence + + from pip._internal.models.scheme import Scheme + from pip._internal.req.req_install import InstallRequirement + + +logger = logging.getLogger(__name__) + + +def install( + install_req, # type: InstallRequirement + install_options, # type: List[str] + global_options, # type: Sequence[str] + root, # type: Optional[str] + home, # type: Optional[str] + prefix, # type: Optional[str] + use_user_site, # type: bool + pycompile, # type: bool + scheme, # type: Scheme +): + # type: (...) -> None + # Extend the list of global and install options passed on to + # the setup.py call with the ones from the requirements file. + # Options specified in requirements file override those + # specified on the command line, since the last option given + # to setup.py is the one that is used. + global_options = list(global_options) + \ + install_req.options.get('global_options', []) + install_options = list(install_options) + \ + install_req.options.get('install_options', []) + + header_dir = scheme.headers + + with TempDirectory(kind="record") as temp_dir: + record_filename = os.path.join(temp_dir.path, 'install-record.txt') + install_args = make_setuptools_install_args( + install_req.setup_py_path, + global_options=global_options, + install_options=install_options, + record_filename=record_filename, + root=root, + prefix=prefix, + header_dir=header_dir, + home=home, + use_user_site=use_user_site, + no_user_config=install_req.isolated, + pycompile=pycompile, + ) + + runner = runner_with_spinner_message( + "Running setup.py install for {}".format(install_req.name) + ) + with indent_log(), install_req.build_env: + runner( + cmd=install_args, + cwd=install_req.unpacked_source_directory, + ) + + if not os.path.exists(record_filename): + logger.debug('Record file %s not found', record_filename) + return + install_req.install_succeeded = True + + # We intentionally do not use any encoding to read the file because + # setuptools writes the file using distutils.file_util.write_file, + # which does not specify an encoding. + with open(record_filename) as f: + record_lines = f.read().splitlines() + + def prepend_root(path): + # type: (str) -> str + if root is None or not os.path.isabs(path): + return path + else: + return change_root(root, path) + + for line in record_lines: + directory = os.path.dirname(line) + if directory.endswith('.egg-info'): + egg_info_dir = prepend_root(directory) + break + else: + deprecated( + reason=( + "{} did not indicate that it installed an " + ".egg-info directory. Only setup.py projects " + "generating .egg-info directories are supported." + ).format(install_req), + replacement=( + "for maintainers: updating the setup.py of {0}. " + "For users: contact the maintainers of {0} to let " + "them know to update their setup.py.".format( + install_req.name + ) + ), + gone_in="20.2", + issue=6998, + ) + # FIXME: put the record somewhere + return + new_lines = [] + for line in record_lines: + filename = line.strip() + if os.path.isdir(filename): + filename += os.path.sep + new_lines.append( + os.path.relpath(prepend_root(filename), egg_info_dir) + ) + new_lines.sort() + ensure_dir(egg_info_dir) + inst_files_path = os.path.join(egg_info_dir, 'installed-files.txt') + with open(inst_files_path, 'w') as f: + f.write('\n'.join(new_lines) + '\n') diff --git a/Lib/site-packages/pip/_internal/operations/install/wheel.py b/Lib/site-packages/pip/_internal/operations/install/wheel.py new file mode 100644 index 0000000..aac975c --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/install/wheel.py @@ -0,0 +1,615 @@ +"""Support for installing and building the "wheel" binary package format. +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import collections +import compileall +import csv +import logging +import os.path +import re +import shutil +import stat +import sys +import warnings +from base64 import urlsafe_b64encode +from zipfile import ZipFile + +from pip._vendor import pkg_resources +from pip._vendor.distlib.scripts import ScriptMaker +from pip._vendor.distlib.util import get_export_entry +from pip._vendor.six import StringIO + +from pip._internal.exceptions import InstallationError +from pip._internal.locations import get_major_minor_version +from pip._internal.utils.misc import captured_stdout, ensure_dir, hash_file +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.unpacking import unpack_file +from pip._internal.utils.wheel import parse_wheel + +if MYPY_CHECK_RUNNING: + from email.message import Message + from typing import ( + Dict, List, Optional, Sequence, Tuple, IO, Text, Any, + Iterable, Callable, Set, + ) + + from pip._internal.models.scheme import Scheme + + InstalledCSVRow = Tuple[str, ...] + + +logger = logging.getLogger(__name__) + + +def normpath(src, p): + # type: (str, str) -> str + return os.path.relpath(src, p).replace(os.path.sep, '/') + + +def rehash(path, blocksize=1 << 20): + # type: (str, int) -> Tuple[str, str] + """Return (encoded_digest, length) for path using hashlib.sha256()""" + h, length = hash_file(path, blocksize) + digest = 'sha256=' + urlsafe_b64encode( + h.digest() + ).decode('latin1').rstrip('=') + # unicode/str python2 issues + return (digest, str(length)) # type: ignore + + +def open_for_csv(name, mode): + # type: (str, Text) -> IO[Any] + if sys.version_info[0] < 3: + nl = {} # type: Dict[str, Any] + bin = 'b' + else: + nl = {'newline': ''} # type: Dict[str, Any] + bin = '' + return open(name, mode + bin, **nl) + + +def fix_script(path): + # type: (str) -> Optional[bool] + """Replace #!python with #!/path/to/python + Return True if file was changed. + """ + # XXX RECORD hashes will need to be updated + if os.path.isfile(path): + with open(path, 'rb') as script: + firstline = script.readline() + if not firstline.startswith(b'#!python'): + return False + exename = sys.executable.encode(sys.getfilesystemencoding()) + firstline = b'#!' + exename + os.linesep.encode("ascii") + rest = script.read() + with open(path, 'wb') as script: + script.write(firstline) + script.write(rest) + return True + return None + + +def wheel_root_is_purelib(metadata): + # type: (Message) -> bool + return metadata.get("Root-Is-Purelib", "").lower() == "true" + + +def get_entrypoints(filename): + # type: (str) -> Tuple[Dict[str, str], Dict[str, str]] + if not os.path.exists(filename): + return {}, {} + + # This is done because you can pass a string to entry_points wrappers which + # means that they may or may not be valid INI files. The attempt here is to + # strip leading and trailing whitespace in order to make them valid INI + # files. + with open(filename) as fp: + data = StringIO() + for line in fp: + data.write(line.strip()) + data.write("\n") + data.seek(0) + + # get the entry points and then the script names + entry_points = pkg_resources.EntryPoint.parse_map(data) + console = entry_points.get('console_scripts', {}) + gui = entry_points.get('gui_scripts', {}) + + def _split_ep(s): + # type: (pkg_resources.EntryPoint) -> Tuple[str, str] + """get the string representation of EntryPoint, + remove space and split on '=' + """ + split_parts = str(s).replace(" ", "").split("=") + return split_parts[0], split_parts[1] + + # convert the EntryPoint objects into strings with module:function + console = dict(_split_ep(v) for v in console.values()) + gui = dict(_split_ep(v) for v in gui.values()) + return console, gui + + +def message_about_scripts_not_on_PATH(scripts): + # type: (Sequence[str]) -> Optional[str] + """Determine if any scripts are not on PATH and format a warning. + Returns a warning message if one or more scripts are not on PATH, + otherwise None. + """ + if not scripts: + return None + + # Group scripts by the path they were installed in + grouped_by_dir = collections.defaultdict(set) # type: Dict[str, Set[str]] + for destfile in scripts: + parent_dir = os.path.dirname(destfile) + script_name = os.path.basename(destfile) + grouped_by_dir[parent_dir].add(script_name) + + # We don't want to warn for directories that are on PATH. + not_warn_dirs = [ + os.path.normcase(i).rstrip(os.sep) for i in + os.environ.get("PATH", "").split(os.pathsep) + ] + # If an executable sits with sys.executable, we don't warn for it. + # This covers the case of venv invocations without activating the venv. + not_warn_dirs.append(os.path.normcase(os.path.dirname(sys.executable))) + warn_for = { + parent_dir: scripts for parent_dir, scripts in grouped_by_dir.items() + if os.path.normcase(parent_dir) not in not_warn_dirs + } # type: Dict[str, Set[str]] + if not warn_for: + return None + + # Format a message + msg_lines = [] + for parent_dir, dir_scripts in warn_for.items(): + sorted_scripts = sorted(dir_scripts) # type: List[str] + if len(sorted_scripts) == 1: + start_text = "script {} is".format(sorted_scripts[0]) + else: + start_text = "scripts {} are".format( + ", ".join(sorted_scripts[:-1]) + " and " + sorted_scripts[-1] + ) + + msg_lines.append( + "The {} installed in '{}' which is not on PATH." + .format(start_text, parent_dir) + ) + + last_line_fmt = ( + "Consider adding {} to PATH or, if you prefer " + "to suppress this warning, use --no-warn-script-location." + ) + if len(msg_lines) == 1: + msg_lines.append(last_line_fmt.format("this directory")) + else: + msg_lines.append(last_line_fmt.format("these directories")) + + # Add a note if any directory starts with ~ + warn_for_tilde = any( + i[0] == "~" for i in os.environ.get("PATH", "").split(os.pathsep) if i + ) + if warn_for_tilde: + tilde_warning_msg = ( + "NOTE: The current PATH contains path(s) starting with `~`, " + "which may not be expanded by all applications." + ) + msg_lines.append(tilde_warning_msg) + + # Returns the formatted multiline message + return "\n".join(msg_lines) + + +def sorted_outrows(outrows): + # type: (Iterable[InstalledCSVRow]) -> List[InstalledCSVRow] + """Return the given rows of a RECORD file in sorted order. + + Each row is a 3-tuple (path, hash, size) and corresponds to a record of + a RECORD file (see PEP 376 and PEP 427 for details). For the rows + passed to this function, the size can be an integer as an int or string, + or the empty string. + """ + # Normally, there should only be one row per path, in which case the + # second and third elements don't come into play when sorting. + # However, in cases in the wild where a path might happen to occur twice, + # we don't want the sort operation to trigger an error (but still want + # determinism). Since the third element can be an int or string, we + # coerce each element to a string to avoid a TypeError in this case. + # For additional background, see-- + # https://github.com/pypa/pip/issues/5868 + return sorted(outrows, key=lambda row: tuple(str(x) for x in row)) + + +def get_csv_rows_for_installed( + old_csv_rows, # type: Iterable[List[str]] + installed, # type: Dict[str, str] + changed, # type: Set[str] + generated, # type: List[str] + lib_dir, # type: str +): + # type: (...) -> List[InstalledCSVRow] + """ + :param installed: A map from archive RECORD path to installation RECORD + path. + """ + installed_rows = [] # type: List[InstalledCSVRow] + for row in old_csv_rows: + if len(row) > 3: + logger.warning( + 'RECORD line has more than three elements: {}'.format(row) + ) + # Make a copy because we are mutating the row. + row = list(row) + old_path = row[0] + new_path = installed.pop(old_path, old_path) + row[0] = new_path + if new_path in changed: + digest, length = rehash(new_path) + row[1] = digest + row[2] = length + installed_rows.append(tuple(row)) + for f in generated: + digest, length = rehash(f) + installed_rows.append((normpath(f, lib_dir), digest, str(length))) + for f in installed: + installed_rows.append((installed[f], '', '')) + return installed_rows + + +class MissingCallableSuffix(Exception): + pass + + +def _raise_for_invalid_entrypoint(specification): + # type: (str) -> None + entry = get_export_entry(specification) + if entry is not None and entry.suffix is None: + raise MissingCallableSuffix(str(entry)) + + +class PipScriptMaker(ScriptMaker): + def make(self, specification, options=None): + # type: (str, Dict[str, Any]) -> List[str] + _raise_for_invalid_entrypoint(specification) + return super(PipScriptMaker, self).make(specification, options) + + +def install_unpacked_wheel( + name, # type: str + wheeldir, # type: str + wheel_zip, # type: ZipFile + scheme, # type: Scheme + req_description, # type: str + pycompile=True, # type: bool + warn_script_location=True # type: bool +): + # type: (...) -> None + """Install a wheel. + + :param name: Name of the project to install + :param wheeldir: Base directory of the unpacked wheel + :param wheel_zip: open ZipFile for wheel being installed + :param scheme: Distutils scheme dictating the install directories + :param req_description: String used in place of the requirement, for + logging + :param pycompile: Whether to byte-compile installed Python files + :param warn_script_location: Whether to check that scripts are installed + into a directory on PATH + :raises UnsupportedWheel: + * when the directory holds an unpacked wheel with incompatible + Wheel-Version + * when the .dist-info dir does not match the wheel + """ + # TODO: Investigate and break this up. + # TODO: Look into moving this into a dedicated class for representing an + # installation. + + source = wheeldir.rstrip(os.path.sep) + os.path.sep + + info_dir, metadata = parse_wheel(wheel_zip, name) + + if wheel_root_is_purelib(metadata): + lib_dir = scheme.purelib + else: + lib_dir = scheme.platlib + + subdirs = os.listdir(source) + data_dirs = [s for s in subdirs if s.endswith('.data')] + + # Record details of the files moved + # installed = files copied from the wheel to the destination + # changed = files changed while installing (scripts #! line typically) + # generated = files newly generated during the install (script wrappers) + installed = {} # type: Dict[str, str] + changed = set() + generated = [] # type: List[str] + + # Compile all of the pyc files that we're going to be installing + if pycompile: + with captured_stdout() as stdout: + with warnings.catch_warnings(): + warnings.filterwarnings('ignore') + compileall.compile_dir(source, force=True, quiet=True) + logger.debug(stdout.getvalue()) + + def record_installed(srcfile, destfile, modified=False): + # type: (str, str, bool) -> None + """Map archive RECORD paths to installation RECORD paths.""" + oldpath = normpath(srcfile, wheeldir) + newpath = normpath(destfile, lib_dir) + installed[oldpath] = newpath + if modified: + changed.add(destfile) + + def clobber( + source, # type: str + dest, # type: str + is_base, # type: bool + fixer=None, # type: Optional[Callable[[str], Any]] + filter=None # type: Optional[Callable[[str], bool]] + ): + # type: (...) -> None + ensure_dir(dest) # common for the 'include' path + + for dir, subdirs, files in os.walk(source): + basedir = dir[len(source):].lstrip(os.path.sep) + destdir = os.path.join(dest, basedir) + if is_base and basedir == '': + subdirs[:] = [s for s in subdirs if not s.endswith('.data')] + for f in files: + # Skip unwanted files + if filter and filter(f): + continue + srcfile = os.path.join(dir, f) + destfile = os.path.join(dest, basedir, f) + # directory creation is lazy and after the file filtering above + # to ensure we don't install empty dirs; empty dirs can't be + # uninstalled. + ensure_dir(destdir) + + # copyfile (called below) truncates the destination if it + # exists and then writes the new contents. This is fine in most + # cases, but can cause a segfault if pip has loaded a shared + # object (e.g. from pyopenssl through its vendored urllib3) + # Since the shared object is mmap'd an attempt to call a + # symbol in it will then cause a segfault. Unlinking the file + # allows writing of new contents while allowing the process to + # continue to use the old copy. + if os.path.exists(destfile): + os.unlink(destfile) + + # We use copyfile (not move, copy, or copy2) to be extra sure + # that we are not moving directories over (copyfile fails for + # directories) as well as to ensure that we are not copying + # over any metadata because we want more control over what + # metadata we actually copy over. + shutil.copyfile(srcfile, destfile) + + # Copy over the metadata for the file, currently this only + # includes the atime and mtime. + st = os.stat(srcfile) + if hasattr(os, "utime"): + os.utime(destfile, (st.st_atime, st.st_mtime)) + + # If our file is executable, then make our destination file + # executable. + if os.access(srcfile, os.X_OK): + st = os.stat(srcfile) + permissions = ( + st.st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH + ) + os.chmod(destfile, permissions) + + changed = False + if fixer: + changed = fixer(destfile) + record_installed(srcfile, destfile, changed) + + clobber(source, lib_dir, True) + + dest_info_dir = os.path.join(lib_dir, info_dir) + + # Get the defined entry points + ep_file = os.path.join(dest_info_dir, 'entry_points.txt') + console, gui = get_entrypoints(ep_file) + + def is_entrypoint_wrapper(name): + # type: (str) -> bool + # EP, EP.exe and EP-script.py are scripts generated for + # entry point EP by setuptools + if name.lower().endswith('.exe'): + matchname = name[:-4] + elif name.lower().endswith('-script.py'): + matchname = name[:-10] + elif name.lower().endswith(".pya"): + matchname = name[:-4] + else: + matchname = name + # Ignore setuptools-generated scripts + return (matchname in console or matchname in gui) + + for datadir in data_dirs: + fixer = None + filter = None + for subdir in os.listdir(os.path.join(wheeldir, datadir)): + fixer = None + if subdir == 'scripts': + fixer = fix_script + filter = is_entrypoint_wrapper + source = os.path.join(wheeldir, datadir, subdir) + dest = getattr(scheme, subdir) + clobber(source, dest, False, fixer=fixer, filter=filter) + + maker = PipScriptMaker(None, scheme.scripts) + + # Ensure old scripts are overwritten. + # See https://github.com/pypa/pip/issues/1800 + maker.clobber = True + + # Ensure we don't generate any variants for scripts because this is almost + # never what somebody wants. + # See https://bitbucket.org/pypa/distlib/issue/35/ + maker.variants = {''} + + # This is required because otherwise distlib creates scripts that are not + # executable. + # See https://bitbucket.org/pypa/distlib/issue/32/ + maker.set_mode = True + + scripts_to_generate = [] + + # Special case pip and setuptools to generate versioned wrappers + # + # The issue is that some projects (specifically, pip and setuptools) use + # code in setup.py to create "versioned" entry points - pip2.7 on Python + # 2.7, pip3.3 on Python 3.3, etc. But these entry points are baked into + # the wheel metadata at build time, and so if the wheel is installed with + # a *different* version of Python the entry points will be wrong. The + # correct fix for this is to enhance the metadata to be able to describe + # such versioned entry points, but that won't happen till Metadata 2.0 is + # available. + # In the meantime, projects using versioned entry points will either have + # incorrect versioned entry points, or they will not be able to distribute + # "universal" wheels (i.e., they will need a wheel per Python version). + # + # Because setuptools and pip are bundled with _ensurepip and virtualenv, + # we need to use universal wheels. So, as a stopgap until Metadata 2.0, we + # override the versioned entry points in the wheel and generate the + # correct ones. This code is purely a short-term measure until Metadata 2.0 + # is available. + # + # To add the level of hack in this section of code, in order to support + # ensurepip this code will look for an ``ENSUREPIP_OPTIONS`` environment + # variable which will control which version scripts get installed. + # + # ENSUREPIP_OPTIONS=altinstall + # - Only pipX.Y and easy_install-X.Y will be generated and installed + # ENSUREPIP_OPTIONS=install + # - pipX.Y, pipX, easy_install-X.Y will be generated and installed. Note + # that this option is technically if ENSUREPIP_OPTIONS is set and is + # not altinstall + # DEFAULT + # - The default behavior is to install pip, pipX, pipX.Y, easy_install + # and easy_install-X.Y. + pip_script = console.pop('pip', None) + if pip_script: + if "ENSUREPIP_OPTIONS" not in os.environ: + scripts_to_generate.append('pip = ' + pip_script) + + if os.environ.get("ENSUREPIP_OPTIONS", "") != "altinstall": + scripts_to_generate.append( + 'pip%s = %s' % (sys.version_info[0], pip_script) + ) + + scripts_to_generate.append( + 'pip%s = %s' % (get_major_minor_version(), pip_script) + ) + # Delete any other versioned pip entry points + pip_ep = [k for k in console if re.match(r'pip(\d(\.\d)?)?$', k)] + for k in pip_ep: + del console[k] + easy_install_script = console.pop('easy_install', None) + if easy_install_script: + if "ENSUREPIP_OPTIONS" not in os.environ: + scripts_to_generate.append( + 'easy_install = ' + easy_install_script + ) + + scripts_to_generate.append( + 'easy_install-%s = %s' % ( + get_major_minor_version(), easy_install_script + ) + ) + # Delete any other versioned easy_install entry points + easy_install_ep = [ + k for k in console if re.match(r'easy_install(-\d\.\d)?$', k) + ] + for k in easy_install_ep: + del console[k] + + # Generate the console and GUI entry points specified in the wheel + scripts_to_generate.extend( + '%s = %s' % kv for kv in console.items() + ) + + gui_scripts_to_generate = [ + '%s = %s' % kv for kv in gui.items() + ] + + generated_console_scripts = [] # type: List[str] + + try: + generated_console_scripts = maker.make_multiple(scripts_to_generate) + generated.extend(generated_console_scripts) + + generated.extend( + maker.make_multiple(gui_scripts_to_generate, {'gui': True}) + ) + except MissingCallableSuffix as e: + entry = e.args[0] + raise InstallationError( + "Invalid script entry point: {} for req: {} - A callable " + "suffix is required. Cf https://packaging.python.org/" + "specifications/entry-points/#use-for-scripts for more " + "information.".format(entry, req_description) + ) + + if warn_script_location: + msg = message_about_scripts_not_on_PATH(generated_console_scripts) + if msg is not None: + logger.warning(msg) + + # Record pip as the installer + installer = os.path.join(dest_info_dir, 'INSTALLER') + temp_installer = os.path.join(dest_info_dir, 'INSTALLER.pip') + with open(temp_installer, 'wb') as installer_file: + installer_file.write(b'pip\n') + shutil.move(temp_installer, installer) + generated.append(installer) + + # Record details of all files installed + record = os.path.join(dest_info_dir, 'RECORD') + temp_record = os.path.join(dest_info_dir, 'RECORD.pip') + with open_for_csv(record, 'r') as record_in: + with open_for_csv(temp_record, 'w+') as record_out: + reader = csv.reader(record_in) + outrows = get_csv_rows_for_installed( + reader, installed=installed, changed=changed, + generated=generated, lib_dir=lib_dir, + ) + writer = csv.writer(record_out) + # Sort to simplify testing. + for row in sorted_outrows(outrows): + writer.writerow(row) + shutil.move(temp_record, record) + + +def install_wheel( + name, # type: str + wheel_path, # type: str + scheme, # type: Scheme + req_description, # type: str + pycompile=True, # type: bool + warn_script_location=True, # type: bool + _temp_dir_for_testing=None, # type: Optional[str] +): + # type: (...) -> None + with TempDirectory( + path=_temp_dir_for_testing, kind="unpacked-wheel" + ) as unpacked_dir, ZipFile(wheel_path, allowZip64=True) as z: + unpack_file(wheel_path, unpacked_dir.path) + install_unpacked_wheel( + name=name, + wheeldir=unpacked_dir.path, + wheel_zip=z, + scheme=scheme, + req_description=req_description, + pycompile=pycompile, + warn_script_location=warn_script_location, + ) diff --git a/Lib/site-packages/pip/_internal/operations/prepare.py b/Lib/site-packages/pip/_internal/operations/prepare.py new file mode 100644 index 0000000..0b61f20 --- /dev/null +++ b/Lib/site-packages/pip/_internal/operations/prepare.py @@ -0,0 +1,591 @@ +"""Prepares a distribution for installation +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import logging +import mimetypes +import os +import shutil +import sys + +from pip._vendor import requests +from pip._vendor.six import PY2 + +from pip._internal.distributions import ( + make_distribution_for_install_requirement, +) +from pip._internal.distributions.installed import InstalledDistribution +from pip._internal.exceptions import ( + DirectoryUrlHashUnsupported, + HashMismatch, + HashUnpinned, + InstallationError, + PreviousBuildDirError, + VcsHashUnsupported, +) +from pip._internal.utils.filesystem import copy2_fixed +from pip._internal.utils.hashes import MissingHashes +from pip._internal.utils.logging import indent_log +from pip._internal.utils.marker_files import write_delete_marker_file +from pip._internal.utils.misc import ( + ask_path_exists, + backup_dir, + display_path, + hide_url, + path_to_display, + rmtree, +) +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.unpacking import unpack_file +from pip._internal.vcs import vcs + +if MYPY_CHECK_RUNNING: + from typing import ( + Callable, List, Optional, Tuple, + ) + + from mypy_extensions import TypedDict + + from pip._internal.distributions import AbstractDistribution + from pip._internal.index.package_finder import PackageFinder + from pip._internal.models.link import Link + from pip._internal.network.download import Downloader + from pip._internal.req.req_install import InstallRequirement + from pip._internal.req.req_tracker import RequirementTracker + from pip._internal.utils.hashes import Hashes + + if PY2: + CopytreeKwargs = TypedDict( + 'CopytreeKwargs', + { + 'ignore': Callable[[str, List[str]], List[str]], + 'symlinks': bool, + }, + total=False, + ) + else: + CopytreeKwargs = TypedDict( + 'CopytreeKwargs', + { + 'copy_function': Callable[[str, str], None], + 'ignore': Callable[[str, List[str]], List[str]], + 'ignore_dangling_symlinks': bool, + 'symlinks': bool, + }, + total=False, + ) + +logger = logging.getLogger(__name__) + + +def _get_prepared_distribution( + req, # type: InstallRequirement + req_tracker, # type: RequirementTracker + finder, # type: PackageFinder + build_isolation # type: bool +): + # type: (...) -> AbstractDistribution + """Prepare a distribution for installation. + """ + abstract_dist = make_distribution_for_install_requirement(req) + with req_tracker.track(req): + abstract_dist.prepare_distribution_metadata(finder, build_isolation) + return abstract_dist + + +def unpack_vcs_link(link, location): + # type: (Link, str) -> None + vcs_backend = vcs.get_backend_for_scheme(link.scheme) + assert vcs_backend is not None + vcs_backend.unpack(location, url=hide_url(link.url)) + + +def _copy_file(filename, location, link): + # type: (str, str, Link) -> None + copy = True + download_location = os.path.join(location, link.filename) + if os.path.exists(download_location): + response = ask_path_exists( + 'The file {} exists. (i)gnore, (w)ipe, (b)ackup, (a)abort'.format( + display_path(download_location) + ), + ('i', 'w', 'b', 'a'), + ) + if response == 'i': + copy = False + elif response == 'w': + logger.warning('Deleting %s', display_path(download_location)) + os.remove(download_location) + elif response == 'b': + dest_file = backup_dir(download_location) + logger.warning( + 'Backing up %s to %s', + display_path(download_location), + display_path(dest_file), + ) + shutil.move(download_location, dest_file) + elif response == 'a': + sys.exit(-1) + if copy: + shutil.copy(filename, download_location) + logger.info('Saved %s', display_path(download_location)) + + +def unpack_http_url( + link, # type: Link + location, # type: str + downloader, # type: Downloader + download_dir=None, # type: Optional[str] + hashes=None, # type: Optional[Hashes] +): + # type: (...) -> str + temp_dir = TempDirectory(kind="unpack", globally_managed=True) + # If a download dir is specified, is the file already downloaded there? + already_downloaded_path = None + if download_dir: + already_downloaded_path = _check_download_dir( + link, download_dir, hashes + ) + + if already_downloaded_path: + from_path = already_downloaded_path + content_type = mimetypes.guess_type(from_path)[0] + else: + # let's download to a tmp dir + from_path, content_type = _download_http_url( + link, downloader, temp_dir.path, hashes + ) + + # unpack the archive to the build dir location. even when only + # downloading archives, they have to be unpacked to parse dependencies + unpack_file(from_path, location, content_type) + + return from_path + + +def _copy2_ignoring_special_files(src, dest): + # type: (str, str) -> None + """Copying special files is not supported, but as a convenience to users + we skip errors copying them. This supports tools that may create e.g. + socket files in the project source directory. + """ + try: + copy2_fixed(src, dest) + except shutil.SpecialFileError as e: + # SpecialFileError may be raised due to either the source or + # destination. If the destination was the cause then we would actually + # care, but since the destination directory is deleted prior to + # copy we ignore all of them assuming it is caused by the source. + logger.warning( + "Ignoring special file error '%s' encountered copying %s to %s.", + str(e), + path_to_display(src), + path_to_display(dest), + ) + + +def _copy_source_tree(source, target): + # type: (str, str) -> None + def ignore(d, names): + # type: (str, List[str]) -> List[str] + # Pulling in those directories can potentially be very slow, + # exclude the following directories if they appear in the top + # level dir (and only it). + # See discussion at https://github.com/pypa/pip/pull/6770 + return ['.tox', '.nox'] if d == source else [] + + kwargs = dict(ignore=ignore, symlinks=True) # type: CopytreeKwargs + + if not PY2: + # Python 2 does not support copy_function, so we only ignore + # errors on special file copy in Python 3. + kwargs['copy_function'] = _copy2_ignoring_special_files + + shutil.copytree(source, target, **kwargs) + + +def unpack_file_url( + link, # type: Link + location, # type: str + download_dir=None, # type: Optional[str] + hashes=None # type: Optional[Hashes] +): + # type: (...) -> Optional[str] + """Unpack link into location. + """ + link_path = link.file_path + # If it's a url to a local directory + if link.is_existing_dir(): + if os.path.isdir(location): + rmtree(location) + _copy_source_tree(link_path, location) + return None + + # If a download dir is specified, is the file already there and valid? + already_downloaded_path = None + if download_dir: + already_downloaded_path = _check_download_dir( + link, download_dir, hashes + ) + + if already_downloaded_path: + from_path = already_downloaded_path + else: + from_path = link_path + + # If --require-hashes is off, `hashes` is either empty, the + # link's embedded hash, or MissingHashes; it is required to + # match. If --require-hashes is on, we are satisfied by any + # hash in `hashes` matching: a URL-based or an option-based + # one; no internet-sourced hash will be in `hashes`. + if hashes: + hashes.check_against_path(from_path) + + content_type = mimetypes.guess_type(from_path)[0] + + # unpack the archive to the build dir location. even when only downloading + # archives, they have to be unpacked to parse dependencies + unpack_file(from_path, location, content_type) + + return from_path + + +def unpack_url( + link, # type: Link + location, # type: str + downloader, # type: Downloader + download_dir=None, # type: Optional[str] + hashes=None, # type: Optional[Hashes] +): + # type: (...) -> Optional[str] + """Unpack link into location, downloading if required. + + :param hashes: A Hashes object, one of whose embedded hashes must match, + or HashMismatch will be raised. If the Hashes is empty, no matches are + required, and unhashable types of requirements (like VCS ones, which + would ordinarily raise HashUnsupported) are allowed. + """ + # non-editable vcs urls + if link.is_vcs: + unpack_vcs_link(link, location) + return None + + # file urls + elif link.is_file: + return unpack_file_url(link, location, download_dir, hashes=hashes) + + # http urls + else: + return unpack_http_url( + link, + location, + downloader, + download_dir, + hashes=hashes, + ) + + +def _download_http_url( + link, # type: Link + downloader, # type: Downloader + temp_dir, # type: str + hashes, # type: Optional[Hashes] +): + # type: (...) -> Tuple[str, str] + """Download link url into temp_dir using provided session""" + download = downloader(link) + + file_path = os.path.join(temp_dir, download.filename) + with open(file_path, 'wb') as content_file: + for chunk in download.chunks: + content_file.write(chunk) + + if hashes: + hashes.check_against_path(file_path) + + return file_path, download.response.headers.get('content-type', '') + + +def _check_download_dir(link, download_dir, hashes): + # type: (Link, str, Optional[Hashes]) -> Optional[str] + """ Check download_dir for previously downloaded file with correct hash + If a correct file is found return its path else None + """ + download_path = os.path.join(download_dir, link.filename) + + if not os.path.exists(download_path): + return None + + # If already downloaded, does its hash match? + logger.info('File was already downloaded %s', download_path) + if hashes: + try: + hashes.check_against_path(download_path) + except HashMismatch: + logger.warning( + 'Previously-downloaded file %s has bad hash. ' + 'Re-downloading.', + download_path + ) + os.unlink(download_path) + return None + return download_path + + +class RequirementPreparer(object): + """Prepares a Requirement + """ + + def __init__( + self, + build_dir, # type: str + download_dir, # type: Optional[str] + src_dir, # type: str + wheel_download_dir, # type: Optional[str] + build_isolation, # type: bool + req_tracker, # type: RequirementTracker + downloader, # type: Downloader + finder, # type: PackageFinder + require_hashes, # type: bool + use_user_site, # type: bool + ): + # type: (...) -> None + super(RequirementPreparer, self).__init__() + + self.src_dir = src_dir + self.build_dir = build_dir + self.req_tracker = req_tracker + self.downloader = downloader + self.finder = finder + + # Where still-packed archives should be written to. If None, they are + # not saved, and are deleted immediately after unpacking. + self.download_dir = download_dir + + # Where still-packed .whl files should be written to. If None, they are + # written to the download_dir parameter. Separate to download_dir to + # permit only keeping wheel archives for pip wheel. + self.wheel_download_dir = wheel_download_dir + + # NOTE + # download_dir and wheel_download_dir overlap semantically and may + # be combined if we're willing to have non-wheel archives present in + # the wheelhouse output by 'pip wheel'. + + # Is build isolation allowed? + self.build_isolation = build_isolation + + # Should hash-checking be required? + self.require_hashes = require_hashes + + # Should install in user site-packages? + self.use_user_site = use_user_site + + @property + def _download_should_save(self): + # type: () -> bool + if not self.download_dir: + return False + + if os.path.exists(self.download_dir): + return True + + logger.critical('Could not find download directory') + raise InstallationError( + "Could not find or access download directory '{}'" + .format(self.download_dir)) + + def prepare_linked_requirement( + self, + req, # type: InstallRequirement + ): + # type: (...) -> AbstractDistribution + """Prepare a requirement that would be obtained from req.link + """ + assert req.link + link = req.link + + # TODO: Breakup into smaller functions + if link.scheme == 'file': + path = link.file_path + logger.info('Processing %s', display_path(path)) + else: + logger.info('Collecting %s', req.req or req) + + with indent_log(): + # @@ if filesystem packages are not marked + # editable in a req, a non deterministic error + # occurs when the script attempts to unpack the + # build directory + # Since source_dir is only set for editable requirements. + assert req.source_dir is None + req.ensure_has_source_dir(self.build_dir) + # If a checkout exists, it's unwise to keep going. version + # inconsistencies are logged later, but do not fail the + # installation. + # FIXME: this won't upgrade when there's an existing + # package unpacked in `req.source_dir` + if os.path.exists(os.path.join(req.source_dir, 'setup.py')): + raise PreviousBuildDirError( + "pip can't proceed with requirements '{}' due to a" + " pre-existing build directory ({}). This is " + "likely due to a previous installation that failed" + ". pip is being responsible and not assuming it " + "can delete this. Please delete it and try again." + .format(req, req.source_dir) + ) + + # Now that we have the real link, we can tell what kind of + # requirements we have and raise some more informative errors + # than otherwise. (For example, we can raise VcsHashUnsupported + # for a VCS URL rather than HashMissing.) + if self.require_hashes: + # We could check these first 2 conditions inside + # unpack_url and save repetition of conditions, but then + # we would report less-useful error messages for + # unhashable requirements, complaining that there's no + # hash provided. + if link.is_vcs: + raise VcsHashUnsupported() + elif link.is_existing_dir(): + raise DirectoryUrlHashUnsupported() + if not req.original_link and not req.is_pinned: + # Unpinned packages are asking for trouble when a new + # version is uploaded. This isn't a security check, but + # it saves users a surprising hash mismatch in the + # future. + # + # file:/// URLs aren't pinnable, so don't complain + # about them not being pinned. + raise HashUnpinned() + + hashes = req.hashes(trust_internet=not self.require_hashes) + if self.require_hashes and not hashes: + # Known-good hashes are missing for this requirement, so + # shim it with a facade object that will provoke hash + # computation and then raise a HashMissing exception + # showing the user what the hash should be. + hashes = MissingHashes() + + download_dir = self.download_dir + if link.is_wheel and self.wheel_download_dir: + # when doing 'pip wheel` we download wheels to a + # dedicated dir. + download_dir = self.wheel_download_dir + + try: + local_path = unpack_url( + link, req.source_dir, self.downloader, download_dir, + hashes=hashes, + ) + except requests.HTTPError as exc: + logger.critical( + 'Could not install requirement %s because of error %s', + req, + exc, + ) + raise InstallationError( + 'Could not install requirement {} because of HTTP ' + 'error {} for URL {}'.format(req, exc, link) + ) + + # For use in later processing, preserve the file path on the + # requirement. + if local_path: + req.local_file_path = local_path + + if link.is_wheel: + if download_dir: + # When downloading, we only unpack wheels to get + # metadata. + autodelete_unpacked = True + else: + # When installing a wheel, we use the unpacked + # wheel. + autodelete_unpacked = False + else: + # We always delete unpacked sdists after pip runs. + autodelete_unpacked = True + if autodelete_unpacked: + write_delete_marker_file(req.source_dir) + + abstract_dist = _get_prepared_distribution( + req, self.req_tracker, self.finder, self.build_isolation, + ) + + if download_dir: + if link.is_existing_dir(): + logger.info('Link is a directory, ignoring download_dir') + elif local_path and not os.path.exists( + os.path.join(download_dir, link.filename) + ): + _copy_file(local_path, download_dir, link) + + if self._download_should_save: + # Make a .zip of the source_dir we already created. + if link.is_vcs: + req.archive(self.download_dir) + return abstract_dist + + def prepare_editable_requirement( + self, + req, # type: InstallRequirement + ): + # type: (...) -> AbstractDistribution + """Prepare an editable requirement + """ + assert req.editable, "cannot prepare a non-editable req as editable" + + logger.info('Obtaining %s', req) + + with indent_log(): + if self.require_hashes: + raise InstallationError( + 'The editable requirement {} cannot be installed when ' + 'requiring hashes, because there is no single file to ' + 'hash.'.format(req) + ) + req.ensure_has_source_dir(self.src_dir) + req.update_editable(not self._download_should_save) + + abstract_dist = _get_prepared_distribution( + req, self.req_tracker, self.finder, self.build_isolation, + ) + + if self._download_should_save: + req.archive(self.download_dir) + req.check_if_exists(self.use_user_site) + + return abstract_dist + + def prepare_installed_requirement( + self, + req, # type: InstallRequirement + skip_reason # type: str + ): + # type: (...) -> AbstractDistribution + """Prepare an already-installed requirement + """ + assert req.satisfied_by, "req should have been satisfied but isn't" + assert skip_reason is not None, ( + "did not get skip reason skipped but req.satisfied_by " + "is set to {}".format(req.satisfied_by) + ) + logger.info( + 'Requirement %s: %s (%s)', + skip_reason, req, req.satisfied_by.version + ) + with indent_log(): + if self.require_hashes: + logger.debug( + 'Since it is already installed, we are trusting this ' + 'package without checking its hash. To ensure a ' + 'completely repeatable environment, install into an ' + 'empty virtualenv.' + ) + abstract_dist = InstalledDistribution(req) + + return abstract_dist diff --git a/Lib/site-packages/pip/_internal/pep425tags.py b/Lib/site-packages/pip/_internal/pep425tags.py new file mode 100644 index 0000000..a2386ee --- /dev/null +++ b/Lib/site-packages/pip/_internal/pep425tags.py @@ -0,0 +1,167 @@ +"""Generate and work with PEP 425 Compatibility Tags.""" +from __future__ import absolute_import + +import logging +import re + +from pip._vendor.packaging.tags import ( + Tag, + compatible_tags, + cpython_tags, + generic_tags, + interpreter_name, + interpreter_version, + mac_platforms, +) + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional, Tuple + + from pip._vendor.packaging.tags import PythonVersion + +logger = logging.getLogger(__name__) + +_osx_arch_pat = re.compile(r'(.+)_(\d+)_(\d+)_(.+)') + + +def version_info_to_nodot(version_info): + # type: (Tuple[int, ...]) -> str + # Only use up to the first two numbers. + return ''.join(map(str, version_info[:2])) + + +def _mac_platforms(arch): + # type: (str) -> List[str] + match = _osx_arch_pat.match(arch) + if match: + name, major, minor, actual_arch = match.groups() + mac_version = (int(major), int(minor)) + arches = [ + # Since we have always only checked that the platform starts + # with "macosx", for backwards-compatibility we extract the + # actual prefix provided by the user in case they provided + # something like "macosxcustom_". It may be good to remove + # this as undocumented or deprecate it in the future. + '{}_{}'.format(name, arch[len('macosx_'):]) + for arch in mac_platforms(mac_version, actual_arch) + ] + else: + # arch pattern didn't match (?!) + arches = [arch] + return arches + + +def _custom_manylinux_platforms(arch): + # type: (str) -> List[str] + arches = [arch] + arch_prefix, arch_sep, arch_suffix = arch.partition('_') + if arch_prefix == 'manylinux2014': + # manylinux1/manylinux2010 wheels run on most manylinux2014 systems + # with the exception of wheels depending on ncurses. PEP 599 states + # manylinux1/manylinux2010 wheels should be considered + # manylinux2014 wheels: + # https://www.python.org/dev/peps/pep-0599/#backwards-compatibility-with-manylinux2010-wheels + if arch_suffix in {'i686', 'x86_64'}: + arches.append('manylinux2010' + arch_sep + arch_suffix) + arches.append('manylinux1' + arch_sep + arch_suffix) + elif arch_prefix == 'manylinux2010': + # manylinux1 wheels run on most manylinux2010 systems with the + # exception of wheels depending on ncurses. PEP 571 states + # manylinux1 wheels should be considered manylinux2010 wheels: + # https://www.python.org/dev/peps/pep-0571/#backwards-compatibility-with-manylinux1-wheels + arches.append('manylinux1' + arch_sep + arch_suffix) + return arches + + +def _get_custom_platforms(arch): + # type: (str) -> List[str] + arch_prefix, arch_sep, arch_suffix = arch.partition('_') + if arch.startswith('macosx'): + arches = _mac_platforms(arch) + elif arch_prefix in ['manylinux2014', 'manylinux2010']: + arches = _custom_manylinux_platforms(arch) + else: + arches = [arch] + return arches + + +def _get_python_version(version): + # type: (str) -> PythonVersion + if len(version) > 1: + return int(version[0]), int(version[1:]) + else: + return (int(version[0]),) + + +def _get_custom_interpreter(implementation=None, version=None): + # type: (Optional[str], Optional[str]) -> str + if implementation is None: + implementation = interpreter_name() + if version is None: + version = interpreter_version() + return "{}{}".format(implementation, version) + + +def get_supported( + version=None, # type: Optional[str] + platform=None, # type: Optional[str] + impl=None, # type: Optional[str] + abi=None # type: Optional[str] +): + # type: (...) -> List[Tag] + """Return a list of supported tags for each version specified in + `versions`. + + :param version: a string version, of the form "33" or "32", + or None. The version will be assumed to support our ABI. + :param platform: specify the exact platform you want valid + tags for, or None. If None, use the local system platform. + :param impl: specify the exact implementation you want valid + tags for, or None. If None, use the local interpreter impl. + :param abi: specify the exact abi you want valid + tags for, or None. If None, use the local interpreter abi. + """ + supported = [] # type: List[Tag] + + python_version = None # type: Optional[PythonVersion] + if version is not None: + python_version = _get_python_version(version) + + interpreter = _get_custom_interpreter(impl, version) + + abis = None # type: Optional[List[str]] + if abi is not None: + abis = [abi] + + platforms = None # type: Optional[List[str]] + if platform is not None: + platforms = _get_custom_platforms(platform) + + is_cpython = (impl or interpreter_name()) == "cp" + if is_cpython: + supported.extend( + cpython_tags( + python_version=python_version, + abis=abis, + platforms=platforms, + ) + ) + else: + supported.extend( + generic_tags( + interpreter=interpreter, + abis=abis, + platforms=platforms, + ) + ) + supported.extend( + compatible_tags( + python_version=python_version, + interpreter=interpreter, + platforms=platforms, + ) + ) + + return supported diff --git a/Lib/site-packages/pip/_internal/pyproject.py b/Lib/site-packages/pip/_internal/pyproject.py new file mode 100644 index 0000000..cf614fd --- /dev/null +++ b/Lib/site-packages/pip/_internal/pyproject.py @@ -0,0 +1,196 @@ +from __future__ import absolute_import + +import io +import os +import sys +from collections import namedtuple + +from pip._vendor import pytoml, six +from pip._vendor.packaging.requirements import InvalidRequirement, Requirement + +from pip._internal.exceptions import InstallationError +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Any, Optional, List + + +def _is_list_of_str(obj): + # type: (Any) -> bool + return ( + isinstance(obj, list) and + all(isinstance(item, six.string_types) for item in obj) + ) + + +def make_pyproject_path(unpacked_source_directory): + # type: (str) -> str + path = os.path.join(unpacked_source_directory, 'pyproject.toml') + + # Python2 __file__ should not be unicode + if six.PY2 and isinstance(path, six.text_type): + path = path.encode(sys.getfilesystemencoding()) + + return path + + +BuildSystemDetails = namedtuple('BuildSystemDetails', [ + 'requires', 'backend', 'check', 'backend_path' +]) + + +def load_pyproject_toml( + use_pep517, # type: Optional[bool] + pyproject_toml, # type: str + setup_py, # type: str + req_name # type: str +): + # type: (...) -> Optional[BuildSystemDetails] + """Load the pyproject.toml file. + + Parameters: + use_pep517 - Has the user requested PEP 517 processing? None + means the user hasn't explicitly specified. + pyproject_toml - Location of the project's pyproject.toml file + setup_py - Location of the project's setup.py file + req_name - The name of the requirement we're processing (for + error reporting) + + Returns: + None if we should use the legacy code path, otherwise a tuple + ( + requirements from pyproject.toml, + name of PEP 517 backend, + requirements we should check are installed after setting + up the build environment + directory paths to import the backend from (backend-path), + relative to the project root. + ) + """ + has_pyproject = os.path.isfile(pyproject_toml) + has_setup = os.path.isfile(setup_py) + + if has_pyproject: + with io.open(pyproject_toml, encoding="utf-8") as f: + pp_toml = pytoml.load(f) + build_system = pp_toml.get("build-system") + else: + build_system = None + + # The following cases must use PEP 517 + # We check for use_pep517 being non-None and falsey because that means + # the user explicitly requested --no-use-pep517. The value 0 as + # opposed to False can occur when the value is provided via an + # environment variable or config file option (due to the quirk of + # strtobool() returning an integer in pip's configuration code). + if has_pyproject and not has_setup: + if use_pep517 is not None and not use_pep517: + raise InstallationError( + "Disabling PEP 517 processing is invalid: " + "project does not have a setup.py" + ) + use_pep517 = True + elif build_system and "build-backend" in build_system: + if use_pep517 is not None and not use_pep517: + raise InstallationError( + "Disabling PEP 517 processing is invalid: " + "project specifies a build backend of {} " + "in pyproject.toml".format( + build_system["build-backend"] + ) + ) + use_pep517 = True + + # If we haven't worked out whether to use PEP 517 yet, + # and the user hasn't explicitly stated a preference, + # we do so if the project has a pyproject.toml file. + elif use_pep517 is None: + use_pep517 = has_pyproject + + # At this point, we know whether we're going to use PEP 517. + assert use_pep517 is not None + + # If we're using the legacy code path, there is nothing further + # for us to do here. + if not use_pep517: + return None + + if build_system is None: + # Either the user has a pyproject.toml with no build-system + # section, or the user has no pyproject.toml, but has opted in + # explicitly via --use-pep517. + # In the absence of any explicit backend specification, we + # assume the setuptools backend that most closely emulates the + # traditional direct setup.py execution, and require wheel and + # a version of setuptools that supports that backend. + + build_system = { + "requires": ["setuptools>=40.8.0", "wheel"], + "build-backend": "setuptools.build_meta:__legacy__", + } + + # If we're using PEP 517, we have build system information (either + # from pyproject.toml, or defaulted by the code above). + # Note that at this point, we do not know if the user has actually + # specified a backend, though. + assert build_system is not None + + # Ensure that the build-system section in pyproject.toml conforms + # to PEP 518. + error_template = ( + "{package} has a pyproject.toml file that does not comply " + "with PEP 518: {reason}" + ) + + # Specifying the build-system table but not the requires key is invalid + if "requires" not in build_system: + raise InstallationError( + error_template.format(package=req_name, reason=( + "it has a 'build-system' table but not " + "'build-system.requires' which is mandatory in the table" + )) + ) + + # Error out if requires is not a list of strings + requires = build_system["requires"] + if not _is_list_of_str(requires): + raise InstallationError(error_template.format( + package=req_name, + reason="'build-system.requires' is not a list of strings.", + )) + + # Each requirement must be valid as per PEP 508 + for requirement in requires: + try: + Requirement(requirement) + except InvalidRequirement: + raise InstallationError( + error_template.format( + package=req_name, + reason=( + "'build-system.requires' contains an invalid " + "requirement: {!r}".format(requirement) + ), + ) + ) + + backend = build_system.get("build-backend") + backend_path = build_system.get("backend-path", []) + check = [] # type: List[str] + if backend is None: + # If the user didn't specify a backend, we assume they want to use + # the setuptools backend. But we can't be sure they have included + # a version of setuptools which supplies the backend, or wheel + # (which is needed by the backend) in their requirements. So we + # make a note to check that those requirements are present once + # we have set up the environment. + # This is quite a lot of work to check for a very specific case. But + # the problem is, that case is potentially quite common - projects that + # adopted PEP 518 early for the ability to specify requirements to + # execute setup.py, but never considered needing to mention the build + # tools themselves. The original PEP 518 code had a similar check (but + # implemented in a different way). + backend = "setuptools.build_meta:__legacy__" + check = ["setuptools>=40.8.0", "wheel"] + + return BuildSystemDetails(requires, backend, check, backend_path) diff --git a/Lib/site-packages/pip/_internal/req/__init__.py b/Lib/site-packages/pip/_internal/req/__init__.py new file mode 100644 index 0000000..d2d027a --- /dev/null +++ b/Lib/site-packages/pip/_internal/req/__init__.py @@ -0,0 +1,92 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import logging + +from pip._internal.utils.logging import indent_log +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +from .req_file import parse_requirements +from .req_install import InstallRequirement +from .req_set import RequirementSet + +if MYPY_CHECK_RUNNING: + from typing import Any, List, Sequence + +__all__ = [ + "RequirementSet", "InstallRequirement", + "parse_requirements", "install_given_reqs", +] + +logger = logging.getLogger(__name__) + + +class InstallationResult(object): + def __init__(self, name): + # type: (str) -> None + self.name = name + + def __repr__(self): + # type: () -> str + return "InstallationResult(name={!r})".format(self.name) + + +def install_given_reqs( + to_install, # type: List[InstallRequirement] + install_options, # type: List[str] + global_options=(), # type: Sequence[str] + *args, # type: Any + **kwargs # type: Any +): + # type: (...) -> List[InstallationResult] + """ + Install everything in the given list. + + (to be called after having downloaded and unpacked the packages) + """ + + if to_install: + logger.info( + 'Installing collected packages: %s', + ', '.join([req.name for req in to_install]), + ) + + installed = [] + + with indent_log(): + for requirement in to_install: + if requirement.should_reinstall: + logger.info('Attempting uninstall: %s', requirement.name) + with indent_log(): + uninstalled_pathset = requirement.uninstall( + auto_confirm=True + ) + try: + requirement.install( + install_options, + global_options, + *args, + **kwargs + ) + except Exception: + should_rollback = ( + requirement.should_reinstall and + not requirement.install_succeeded + ) + # if install did not succeed, rollback previous uninstall + if should_rollback: + uninstalled_pathset.rollback() + raise + else: + should_commit = ( + requirement.should_reinstall and + requirement.install_succeeded + ) + if should_commit: + uninstalled_pathset.commit() + + installed.append(InstallationResult(requirement.name)) + + return installed diff --git a/Lib/site-packages/pip/_internal/req/constructors.py b/Lib/site-packages/pip/_internal/req/constructors.py new file mode 100644 index 0000000..1f3cd8a --- /dev/null +++ b/Lib/site-packages/pip/_internal/req/constructors.py @@ -0,0 +1,436 @@ +"""Backing implementation for InstallRequirement's various constructors + +The idea here is that these formed a major chunk of InstallRequirement's size +so, moving them and support code dedicated to them outside of that class +helps creates for better understandability for the rest of the code. + +These are meant to be used elsewhere within pip to create instances of +InstallRequirement. +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import logging +import os +import re + +from pip._vendor.packaging.markers import Marker +from pip._vendor.packaging.requirements import InvalidRequirement, Requirement +from pip._vendor.packaging.specifiers import Specifier +from pip._vendor.pkg_resources import RequirementParseError, parse_requirements + +from pip._internal.exceptions import InstallationError +from pip._internal.models.index import PyPI, TestPyPI +from pip._internal.models.link import Link +from pip._internal.models.wheel import Wheel +from pip._internal.pyproject import make_pyproject_path +from pip._internal.req.req_install import InstallRequirement +from pip._internal.utils.filetypes import ARCHIVE_EXTENSIONS +from pip._internal.utils.misc import is_installable_dir, splitext +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import is_url, vcs + +if MYPY_CHECK_RUNNING: + from typing import ( + Any, Dict, Optional, Set, Tuple, Union, + ) + from pip._internal.cache import WheelCache + + +__all__ = [ + "install_req_from_editable", "install_req_from_line", + "parse_editable" +] + +logger = logging.getLogger(__name__) +operators = Specifier._operators.keys() + + +def is_archive_file(name): + # type: (str) -> bool + """Return True if `name` is a considered as an archive file.""" + ext = splitext(name)[1].lower() + if ext in ARCHIVE_EXTENSIONS: + return True + return False + + +def _strip_extras(path): + # type: (str) -> Tuple[str, Optional[str]] + m = re.match(r'^(.+)(\[[^\]]+\])$', path) + extras = None + if m: + path_no_extras = m.group(1) + extras = m.group(2) + else: + path_no_extras = path + + return path_no_extras, extras + + +def convert_extras(extras): + # type: (Optional[str]) -> Set[str] + if not extras: + return set() + return Requirement("placeholder" + extras.lower()).extras + + +def parse_editable(editable_req): + # type: (str) -> Tuple[Optional[str], str, Optional[Set[str]]] + """Parses an editable requirement into: + - a requirement name + - an URL + - extras + - editable options + Accepted requirements: + svn+http://blahblah@rev#egg=Foobar[baz]&subdirectory=version_subdir + .[some_extra] + """ + + url = editable_req + + # If a file path is specified with extras, strip off the extras. + url_no_extras, extras = _strip_extras(url) + + if os.path.isdir(url_no_extras): + if not os.path.exists(os.path.join(url_no_extras, 'setup.py')): + msg = ( + 'File "setup.py" not found. Directory cannot be installed ' + 'in editable mode: {}'.format(os.path.abspath(url_no_extras)) + ) + pyproject_path = make_pyproject_path(url_no_extras) + if os.path.isfile(pyproject_path): + msg += ( + '\n(A "pyproject.toml" file was found, but editable ' + 'mode currently requires a setup.py based build.)' + ) + raise InstallationError(msg) + + # Treating it as code that has already been checked out + url_no_extras = path_to_url(url_no_extras) + + if url_no_extras.lower().startswith('file:'): + package_name = Link(url_no_extras).egg_fragment + if extras: + return ( + package_name, + url_no_extras, + Requirement("placeholder" + extras.lower()).extras, + ) + else: + return package_name, url_no_extras, None + + for version_control in vcs: + if url.lower().startswith('%s:' % version_control): + url = '%s+%s' % (version_control, url) + break + + if '+' not in url: + raise InstallationError( + '{} is not a valid editable requirement. ' + 'It should either be a path to a local project or a VCS URL ' + '(beginning with svn+, git+, hg+, or bzr+).'.format(editable_req) + ) + + vc_type = url.split('+', 1)[0].lower() + + if not vcs.get_backend(vc_type): + error_message = 'For --editable=%s only ' % editable_req + \ + ', '.join([backend.name + '+URL' for backend in vcs.backends]) + \ + ' is currently supported' + raise InstallationError(error_message) + + package_name = Link(url).egg_fragment + if not package_name: + raise InstallationError( + "Could not detect requirement name for '%s', please specify one " + "with #egg=your_package_name" % editable_req + ) + return package_name, url, None + + +def deduce_helpful_msg(req): + # type: (str) -> str + """Returns helpful msg in case requirements file does not exist, + or cannot be parsed. + + :params req: Requirements file path + """ + msg = "" + if os.path.exists(req): + msg = " It does exist." + # Try to parse and check if it is a requirements file. + try: + with open(req, 'r') as fp: + # parse first line only + next(parse_requirements(fp.read())) + msg += " The argument you provided " + \ + "(%s) appears to be a" % (req) + \ + " requirements file. If that is the" + \ + " case, use the '-r' flag to install" + \ + " the packages specified within it." + except RequirementParseError: + logger.debug("Cannot parse '%s' as requirements \ + file" % (req), exc_info=True) + else: + msg += " File '%s' does not exist." % (req) + return msg + + +class RequirementParts(object): + def __init__( + self, + requirement, # type: Optional[Requirement] + link, # type: Optional[Link] + markers, # type: Optional[Marker] + extras, # type: Set[str] + ): + self.requirement = requirement + self.link = link + self.markers = markers + self.extras = extras + + +def parse_req_from_editable(editable_req): + # type: (str) -> RequirementParts + name, url, extras_override = parse_editable(editable_req) + + if name is not None: + try: + req = Requirement(name) + except InvalidRequirement: + raise InstallationError("Invalid requirement: '%s'" % name) + else: + req = None + + link = Link(url) + + return RequirementParts(req, link, None, extras_override) + + +# ---- The actual constructors follow ---- + + +def install_req_from_editable( + editable_req, # type: str + comes_from=None, # type: Optional[str] + use_pep517=None, # type: Optional[bool] + isolated=False, # type: bool + options=None, # type: Optional[Dict[str, Any]] + wheel_cache=None, # type: Optional[WheelCache] + constraint=False # type: bool +): + # type: (...) -> InstallRequirement + + parts = parse_req_from_editable(editable_req) + + source_dir = parts.link.file_path if parts.link.scheme == 'file' else None + + return InstallRequirement( + parts.requirement, comes_from, source_dir=source_dir, + editable=True, + link=parts.link, + constraint=constraint, + use_pep517=use_pep517, + isolated=isolated, + options=options if options else {}, + wheel_cache=wheel_cache, + extras=parts.extras, + ) + + +def _looks_like_path(name): + # type: (str) -> bool + """Checks whether the string "looks like" a path on the filesystem. + + This does not check whether the target actually exists, only judge from the + appearance. + + Returns true if any of the following conditions is true: + * a path separator is found (either os.path.sep or os.path.altsep); + * a dot is found (which represents the current directory). + """ + if os.path.sep in name: + return True + if os.path.altsep is not None and os.path.altsep in name: + return True + if name.startswith("."): + return True + return False + + +def _get_url_from_path(path, name): + # type: (str, str) -> str + """ + First, it checks whether a provided path is an installable directory + (e.g. it has a setup.py). If it is, returns the path. + + If false, check if the path is an archive file (such as a .whl). + The function checks if the path is a file. If false, if the path has + an @, it will treat it as a PEP 440 URL requirement and return the path. + """ + if _looks_like_path(name) and os.path.isdir(path): + if is_installable_dir(path): + return path_to_url(path) + raise InstallationError( + "Directory %r is not installable. Neither 'setup.py' " + "nor 'pyproject.toml' found." % name + ) + if not is_archive_file(path): + return None + if os.path.isfile(path): + return path_to_url(path) + urlreq_parts = name.split('@', 1) + if len(urlreq_parts) >= 2 and not _looks_like_path(urlreq_parts[0]): + # If the path contains '@' and the part before it does not look + # like a path, try to treat it as a PEP 440 URL req instead. + return None + logger.warning( + 'Requirement %r looks like a filename, but the ' + 'file does not exist', + name + ) + return path_to_url(path) + + +def parse_req_from_line(name, line_source): + # type: (str, Optional[str]) -> RequirementParts + if is_url(name): + marker_sep = '; ' + else: + marker_sep = ';' + if marker_sep in name: + name, markers_as_string = name.split(marker_sep, 1) + markers_as_string = markers_as_string.strip() + if not markers_as_string: + markers = None + else: + markers = Marker(markers_as_string) + else: + markers = None + name = name.strip() + req_as_string = None + path = os.path.normpath(os.path.abspath(name)) + link = None + extras_as_string = None + + if is_url(name): + link = Link(name) + else: + p, extras_as_string = _strip_extras(path) + url = _get_url_from_path(p, name) + if url is not None: + link = Link(url) + + # it's a local file, dir, or url + if link: + # Handle relative file URLs + if link.scheme == 'file' and re.search(r'\.\./', link.url): + link = Link( + path_to_url(os.path.normpath(os.path.abspath(link.path)))) + # wheel file + if link.is_wheel: + wheel = Wheel(link.filename) # can raise InvalidWheelFilename + req_as_string = "%s==%s" % (wheel.name, wheel.version) + else: + # set the req to the egg fragment. when it's not there, this + # will become an 'unnamed' requirement + req_as_string = link.egg_fragment + + # a requirement specifier + else: + req_as_string = name + + extras = convert_extras(extras_as_string) + + def with_source(text): + # type: (str) -> str + if not line_source: + return text + return '{} (from {})'.format(text, line_source) + + if req_as_string is not None: + try: + req = Requirement(req_as_string) + except InvalidRequirement: + if os.path.sep in req_as_string: + add_msg = "It looks like a path." + add_msg += deduce_helpful_msg(req_as_string) + elif ('=' in req_as_string and + not any(op in req_as_string for op in operators)): + add_msg = "= is not a valid operator. Did you mean == ?" + else: + add_msg = '' + msg = with_source( + 'Invalid requirement: {!r}'.format(req_as_string) + ) + if add_msg: + msg += '\nHint: {}'.format(add_msg) + raise InstallationError(msg) + else: + req = None + + return RequirementParts(req, link, markers, extras) + + +def install_req_from_line( + name, # type: str + comes_from=None, # type: Optional[Union[str, InstallRequirement]] + use_pep517=None, # type: Optional[bool] + isolated=False, # type: bool + options=None, # type: Optional[Dict[str, Any]] + wheel_cache=None, # type: Optional[WheelCache] + constraint=False, # type: bool + line_source=None, # type: Optional[str] +): + # type: (...) -> InstallRequirement + """Creates an InstallRequirement from a name, which might be a + requirement, directory containing 'setup.py', filename, or URL. + + :param line_source: An optional string describing where the line is from, + for logging purposes in case of an error. + """ + parts = parse_req_from_line(name, line_source) + + return InstallRequirement( + parts.requirement, comes_from, link=parts.link, markers=parts.markers, + use_pep517=use_pep517, isolated=isolated, + options=options if options else {}, + wheel_cache=wheel_cache, + constraint=constraint, + extras=parts.extras, + ) + + +def install_req_from_req_string( + req_string, # type: str + comes_from=None, # type: Optional[InstallRequirement] + isolated=False, # type: bool + wheel_cache=None, # type: Optional[WheelCache] + use_pep517=None # type: Optional[bool] +): + # type: (...) -> InstallRequirement + try: + req = Requirement(req_string) + except InvalidRequirement: + raise InstallationError("Invalid requirement: '%s'" % req_string) + + domains_not_allowed = [ + PyPI.file_storage_domain, + TestPyPI.file_storage_domain, + ] + if (req.url and comes_from and comes_from.link and + comes_from.link.netloc in domains_not_allowed): + # Explicitly disallow pypi packages that depend on external urls + raise InstallationError( + "Packages installed from PyPI cannot depend on packages " + "which are not also hosted on PyPI.\n" + "%s depends on %s " % (comes_from.name, req) + ) + + return InstallRequirement( + req, comes_from, isolated=isolated, wheel_cache=wheel_cache, + use_pep517=use_pep517 + ) diff --git a/Lib/site-packages/pip/_internal/req/req_file.py b/Lib/site-packages/pip/_internal/req/req_file.py new file mode 100644 index 0000000..8c78104 --- /dev/null +++ b/Lib/site-packages/pip/_internal/req/req_file.py @@ -0,0 +1,546 @@ +""" +Requirements file parsing +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import optparse +import os +import re +import shlex +import sys + +from pip._vendor.six.moves import filterfalse +from pip._vendor.six.moves.urllib import parse as urllib_parse + +from pip._internal.cli import cmdoptions +from pip._internal.exceptions import ( + InstallationError, + RequirementsFileParseError, +) +from pip._internal.models.search_scope import SearchScope +from pip._internal.req.constructors import ( + install_req_from_editable, + install_req_from_line, +) +from pip._internal.utils.encoding import auto_decode +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import get_url_scheme + +if MYPY_CHECK_RUNNING: + from optparse import Values + from typing import ( + Any, Callable, Iterator, List, NoReturn, Optional, Text, Tuple, + ) + + from pip._internal.req import InstallRequirement + from pip._internal.cache import WheelCache + from pip._internal.index.package_finder import PackageFinder + from pip._internal.network.session import PipSession + + ReqFileLines = Iterator[Tuple[int, Text]] + + LineParser = Callable[[Text], Tuple[str, Values]] + + +__all__ = ['parse_requirements'] + +SCHEME_RE = re.compile(r'^(http|https|file):', re.I) +COMMENT_RE = re.compile(r'(^|\s+)#.*$') + +# Matches environment variable-style values in '${MY_VARIABLE_1}' with the +# variable name consisting of only uppercase letters, digits or the '_' +# (underscore). This follows the POSIX standard defined in IEEE Std 1003.1, +# 2013 Edition. +ENV_VAR_RE = re.compile(r'(?P\$\{(?P[A-Z0-9_]+)\})') + +SUPPORTED_OPTIONS = [ + cmdoptions.index_url, + cmdoptions.extra_index_url, + cmdoptions.no_index, + cmdoptions.constraints, + cmdoptions.requirements, + cmdoptions.editable, + cmdoptions.find_links, + cmdoptions.no_binary, + cmdoptions.only_binary, + cmdoptions.require_hashes, + cmdoptions.pre, + cmdoptions.trusted_host, + cmdoptions.always_unzip, # Deprecated +] # type: List[Callable[..., optparse.Option]] + +# options to be passed to requirements +SUPPORTED_OPTIONS_REQ = [ + cmdoptions.install_options, + cmdoptions.global_options, + cmdoptions.hash, +] # type: List[Callable[..., optparse.Option]] + +# the 'dest' string values +SUPPORTED_OPTIONS_REQ_DEST = [str(o().dest) for o in SUPPORTED_OPTIONS_REQ] + + +class ParsedLine(object): + def __init__( + self, + filename, # type: str + lineno, # type: int + comes_from, # type: str + args, # type: str + opts, # type: Values + constraint, # type: bool + ): + # type: (...) -> None + self.filename = filename + self.lineno = lineno + self.comes_from = comes_from + self.args = args + self.opts = opts + self.constraint = constraint + + +def parse_requirements( + filename, # type: str + session, # type: PipSession + finder=None, # type: Optional[PackageFinder] + comes_from=None, # type: Optional[str] + options=None, # type: Optional[optparse.Values] + constraint=False, # type: bool + wheel_cache=None, # type: Optional[WheelCache] + use_pep517=None # type: Optional[bool] +): + # type: (...) -> Iterator[InstallRequirement] + """Parse a requirements file and yield InstallRequirement instances. + + :param filename: Path or url of requirements file. + :param session: PipSession instance. + :param finder: Instance of pip.index.PackageFinder. + :param comes_from: Origin description of requirements. + :param options: cli options. + :param constraint: If true, parsing a constraint file rather than + requirements file. + :param wheel_cache: Instance of pip.wheel.WheelCache + :param use_pep517: Value of the --use-pep517 option. + """ + skip_requirements_regex = ( + options.skip_requirements_regex if options else None + ) + line_parser = get_line_parser(finder) + parser = RequirementsFileParser( + session, line_parser, comes_from, skip_requirements_regex + ) + + for parsed_line in parser.parse(filename, constraint): + req = handle_line( + parsed_line, finder, options, session, wheel_cache, use_pep517 + ) + if req is not None: + yield req + + +def preprocess(content, skip_requirements_regex): + # type: (Text, Optional[str]) -> ReqFileLines + """Split, filter, and join lines, and return a line iterator + + :param content: the content of the requirements file + :param options: cli options + """ + lines_enum = enumerate(content.splitlines(), start=1) # type: ReqFileLines + lines_enum = join_lines(lines_enum) + lines_enum = ignore_comments(lines_enum) + if skip_requirements_regex: + lines_enum = skip_regex(lines_enum, skip_requirements_regex) + lines_enum = expand_env_variables(lines_enum) + return lines_enum + + +def handle_line( + line, # type: ParsedLine + finder=None, # type: Optional[PackageFinder] + options=None, # type: Optional[optparse.Values] + session=None, # type: Optional[PipSession] + wheel_cache=None, # type: Optional[WheelCache] + use_pep517=None, # type: Optional[bool] +): + # type: (...) -> Optional[InstallRequirement] + """Handle a single parsed requirements line; This can result in + creating/yielding requirements, or updating the finder. + + For lines that contain requirements, the only options that have an effect + are from SUPPORTED_OPTIONS_REQ, and they are scoped to the + requirement. Other options from SUPPORTED_OPTIONS may be present, but are + ignored. + + For lines that do not contain requirements, the only options that have an + effect are from SUPPORTED_OPTIONS. Options from SUPPORTED_OPTIONS_REQ may + be present, but are ignored. These lines may contain multiple options + (although our docs imply only one is supported), and all our parsed and + affect the finder. + """ + + # preserve for the nested code path + line_comes_from = '%s %s (line %s)' % ( + '-c' if line.constraint else '-r', line.filename, line.lineno, + ) + + # return a line requirement + if line.args: + isolated = options.isolated_mode if options else False + if options: + cmdoptions.check_install_build_global(options, line.opts) + # get the options that apply to requirements + req_options = {} + for dest in SUPPORTED_OPTIONS_REQ_DEST: + if dest in line.opts.__dict__ and line.opts.__dict__[dest]: + req_options[dest] = line.opts.__dict__[dest] + line_source = 'line {} of {}'.format(line.lineno, line.filename) + return install_req_from_line( + line.args, + comes_from=line_comes_from, + use_pep517=use_pep517, + isolated=isolated, + options=req_options, + wheel_cache=wheel_cache, + constraint=line.constraint, + line_source=line_source, + ) + + # return an editable requirement + elif line.opts.editables: + isolated = options.isolated_mode if options else False + return install_req_from_editable( + line.opts.editables[0], comes_from=line_comes_from, + use_pep517=use_pep517, + constraint=line.constraint, isolated=isolated, + wheel_cache=wheel_cache + ) + + # percolate hash-checking option upward + elif line.opts.require_hashes: + options.require_hashes = line.opts.require_hashes + + # set finder options + elif finder: + find_links = finder.find_links + index_urls = finder.index_urls + if line.opts.index_url: + index_urls = [line.opts.index_url] + if line.opts.no_index is True: + index_urls = [] + if line.opts.extra_index_urls: + index_urls.extend(line.opts.extra_index_urls) + if line.opts.find_links: + # FIXME: it would be nice to keep track of the source + # of the find_links: support a find-links local path + # relative to a requirements file. + value = line.opts.find_links[0] + req_dir = os.path.dirname(os.path.abspath(line.filename)) + relative_to_reqs_file = os.path.join(req_dir, value) + if os.path.exists(relative_to_reqs_file): + value = relative_to_reqs_file + find_links.append(value) + + search_scope = SearchScope( + find_links=find_links, + index_urls=index_urls, + ) + finder.search_scope = search_scope + + if line.opts.pre: + finder.set_allow_all_prereleases() + + if session: + for host in line.opts.trusted_hosts or []: + source = 'line {} of {}'.format(line.lineno, line.filename) + session.add_trusted_host(host, source=source) + + return None + + +class RequirementsFileParser(object): + def __init__( + self, + session, # type: PipSession + line_parser, # type: LineParser + comes_from, # type: str + skip_requirements_regex, # type: Optional[str] + ): + # type: (...) -> None + self._session = session + self._line_parser = line_parser + self._comes_from = comes_from + self._skip_requirements_regex = skip_requirements_regex + + def parse(self, filename, constraint): + # type: (str, bool) -> Iterator[ParsedLine] + """Parse a given file, yielding parsed lines. + """ + for line in self._parse_and_recurse(filename, constraint): + yield line + + def _parse_and_recurse(self, filename, constraint): + # type: (str, bool) -> Iterator[ParsedLine] + for line in self._parse_file(filename, constraint): + if ( + not line.args and + not line.opts.editables and + (line.opts.requirements or line.opts.constraints) + ): + # parse a nested requirements file + if line.opts.requirements: + req_path = line.opts.requirements[0] + nested_constraint = False + else: + req_path = line.opts.constraints[0] + nested_constraint = True + + # original file is over http + if SCHEME_RE.search(filename): + # do a url join so relative paths work + req_path = urllib_parse.urljoin(filename, req_path) + # original file and nested file are paths + elif not SCHEME_RE.search(req_path): + # do a join so relative paths work + req_path = os.path.join( + os.path.dirname(filename), req_path, + ) + + for inner_line in self._parse_and_recurse( + req_path, nested_constraint, + ): + yield inner_line + else: + yield line + + def _parse_file(self, filename, constraint): + # type: (str, bool) -> Iterator[ParsedLine] + _, content = get_file_content( + filename, self._session, comes_from=self._comes_from + ) + + lines_enum = preprocess(content, self._skip_requirements_regex) + + for line_number, line in lines_enum: + try: + args_str, opts = self._line_parser(line) + except OptionParsingError as e: + # add offending line + msg = 'Invalid requirement: %s\n%s' % (line, e.msg) + raise RequirementsFileParseError(msg) + + yield ParsedLine( + filename, + line_number, + self._comes_from, + args_str, + opts, + constraint, + ) + + +def get_line_parser(finder): + # type: (Optional[PackageFinder]) -> LineParser + def parse_line(line): + # type: (Text) -> Tuple[str, Values] + # Build new parser for each line since it accumulates appendable + # options. + parser = build_parser() + defaults = parser.get_default_values() + defaults.index_url = None + if finder: + defaults.format_control = finder.format_control + + args_str, options_str = break_args_options(line) + # Prior to 2.7.3, shlex cannot deal with unicode entries + if sys.version_info < (2, 7, 3): + # https://github.com/python/mypy/issues/1174 + options_str = options_str.encode('utf8') # type: ignore + + # https://github.com/python/mypy/issues/1174 + opts, _ = parser.parse_args( + shlex.split(options_str), defaults) # type: ignore + + return args_str, opts + + return parse_line + + +def break_args_options(line): + # type: (Text) -> Tuple[str, Text] + """Break up the line into an args and options string. We only want to shlex + (and then optparse) the options, not the args. args can contain markers + which are corrupted by shlex. + """ + tokens = line.split(' ') + args = [] + options = tokens[:] + for token in tokens: + if token.startswith('-') or token.startswith('--'): + break + else: + args.append(token) + options.pop(0) + return ' '.join(args), ' '.join(options) # type: ignore + + +class OptionParsingError(Exception): + def __init__(self, msg): + # type: (str) -> None + self.msg = msg + + +def build_parser(): + # type: () -> optparse.OptionParser + """ + Return a parser for parsing requirement lines + """ + parser = optparse.OptionParser(add_help_option=False) + + option_factories = SUPPORTED_OPTIONS + SUPPORTED_OPTIONS_REQ + for option_factory in option_factories: + option = option_factory() + parser.add_option(option) + + # By default optparse sys.exits on parsing errors. We want to wrap + # that in our own exception. + def parser_exit(self, msg): + # type: (Any, str) -> NoReturn + raise OptionParsingError(msg) + # NOTE: mypy disallows assigning to a method + # https://github.com/python/mypy/issues/2427 + parser.exit = parser_exit # type: ignore + + return parser + + +def join_lines(lines_enum): + # type: (ReqFileLines) -> ReqFileLines + """Joins a line ending in '\' with the previous line (except when following + comments). The joined line takes on the index of the first line. + """ + primary_line_number = None + new_line = [] # type: List[Text] + for line_number, line in lines_enum: + if not line.endswith('\\') or COMMENT_RE.match(line): + if COMMENT_RE.match(line): + # this ensures comments are always matched later + line = ' ' + line + if new_line: + new_line.append(line) + yield primary_line_number, ''.join(new_line) + new_line = [] + else: + yield line_number, line + else: + if not new_line: + primary_line_number = line_number + new_line.append(line.strip('\\')) + + # last line contains \ + if new_line: + yield primary_line_number, ''.join(new_line) + + # TODO: handle space after '\'. + + +def ignore_comments(lines_enum): + # type: (ReqFileLines) -> ReqFileLines + """ + Strips comments and filter empty lines. + """ + for line_number, line in lines_enum: + line = COMMENT_RE.sub('', line) + line = line.strip() + if line: + yield line_number, line + + +def skip_regex(lines_enum, pattern): + # type: (ReqFileLines, str) -> ReqFileLines + """ + Skip lines that match the provided pattern + + Note: the regex pattern is only built once + """ + matcher = re.compile(pattern) + lines_enum = filterfalse(lambda e: matcher.search(e[1]), lines_enum) + return lines_enum + + +def expand_env_variables(lines_enum): + # type: (ReqFileLines) -> ReqFileLines + """Replace all environment variables that can be retrieved via `os.getenv`. + + The only allowed format for environment variables defined in the + requirement file is `${MY_VARIABLE_1}` to ensure two things: + + 1. Strings that contain a `$` aren't accidentally (partially) expanded. + 2. Ensure consistency across platforms for requirement files. + + These points are the result of a discussion on the `github pull + request #3514 `_. + + Valid characters in variable names follow the `POSIX standard + `_ and are limited + to uppercase letter, digits and the `_` (underscore). + """ + for line_number, line in lines_enum: + for env_var, var_name in ENV_VAR_RE.findall(line): + value = os.getenv(var_name) + if not value: + continue + + line = line.replace(env_var, value) + + yield line_number, line + + +def get_file_content(url, session, comes_from=None): + # type: (str, PipSession, Optional[str]) -> Tuple[str, Text] + """Gets the content of a file; it may be a filename, file: URL, or + http: URL. Returns (location, content). Content is unicode. + Respects # -*- coding: declarations on the retrieved files. + + :param url: File path or url. + :param session: PipSession instance. + :param comes_from: Origin description of requirements. + """ + scheme = get_url_scheme(url) + + if scheme in ['http', 'https']: + # FIXME: catch some errors + resp = session.get(url) + resp.raise_for_status() + return resp.url, resp.text + + elif scheme == 'file': + if comes_from and comes_from.startswith('http'): + raise InstallationError( + 'Requirements file %s references URL %s, which is local' + % (comes_from, url)) + + path = url.split(':', 1)[1] + path = path.replace('\\', '/') + match = _url_slash_drive_re.match(path) + if match: + path = match.group(1) + ':' + path.split('|', 1)[1] + path = urllib_parse.unquote(path) + if path.startswith('/'): + path = '/' + path.lstrip('/') + url = path + + try: + with open(url, 'rb') as f: + content = auto_decode(f.read()) + except IOError as exc: + raise InstallationError( + 'Could not open requirements file: %s' % str(exc) + ) + return url, content + + +_url_slash_drive_re = re.compile(r'/*([a-z])\|', re.I) diff --git a/Lib/site-packages/pip/_internal/req/req_install.py b/Lib/site-packages/pip/_internal/req/req_install.py new file mode 100644 index 0000000..22ac24b --- /dev/null +++ b/Lib/site-packages/pip/_internal/req/req_install.py @@ -0,0 +1,830 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import logging +import os +import shutil +import sys +import zipfile + +from pip._vendor import pkg_resources, six +from pip._vendor.packaging.requirements import Requirement +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.packaging.version import Version +from pip._vendor.packaging.version import parse as parse_version +from pip._vendor.pep517.wrappers import Pep517HookCaller + +from pip._internal import pep425tags +from pip._internal.build_env import NoOpBuildEnvironment +from pip._internal.exceptions import InstallationError +from pip._internal.locations import get_scheme +from pip._internal.models.link import Link +from pip._internal.operations.build.metadata import generate_metadata +from pip._internal.operations.build.metadata_legacy import \ + generate_metadata as generate_metadata_legacy +from pip._internal.operations.install.editable_legacy import \ + install_editable as install_editable_legacy +from pip._internal.operations.install.legacy import install as install_legacy +from pip._internal.operations.install.wheel import install_wheel +from pip._internal.pyproject import load_pyproject_toml, make_pyproject_path +from pip._internal.req.req_uninstall import UninstallPathSet +from pip._internal.utils.deprecation import deprecated +from pip._internal.utils.hashes import Hashes +from pip._internal.utils.logging import indent_log +from pip._internal.utils.marker_files import ( + PIP_DELETE_MARKER_FILENAME, + has_delete_marker_file, + write_delete_marker_file, +) +from pip._internal.utils.misc import ( + ask_path_exists, + backup_dir, + display_path, + dist_in_site_packages, + dist_in_usersite, + get_installed_version, + hide_url, + redact_auth_from_url, + rmtree, +) +from pip._internal.utils.packaging import get_metadata +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.virtualenv import running_under_virtualenv +from pip._internal.vcs import vcs + +if MYPY_CHECK_RUNNING: + from typing import ( + Any, Dict, Iterable, List, Optional, Sequence, Union, + ) + from pip._internal.build_env import BuildEnvironment + from pip._internal.cache import WheelCache + from pip._internal.index.package_finder import PackageFinder + from pip._vendor.pkg_resources import Distribution + from pip._vendor.packaging.specifiers import SpecifierSet + from pip._vendor.packaging.markers import Marker + + +logger = logging.getLogger(__name__) + + +def _get_dist(metadata_directory): + # type: (str) -> Distribution + """Return a pkg_resources.Distribution for the provided + metadata directory. + """ + dist_dir = metadata_directory.rstrip(os.sep) + + # Determine the correct Distribution object type. + if dist_dir.endswith(".egg-info"): + dist_cls = pkg_resources.Distribution + else: + assert dist_dir.endswith(".dist-info") + dist_cls = pkg_resources.DistInfoDistribution + + # Build a PathMetadata object, from path to metadata. :wink: + base_dir, dist_dir_name = os.path.split(dist_dir) + dist_name = os.path.splitext(dist_dir_name)[0] + metadata = pkg_resources.PathMetadata(base_dir, dist_dir) + + return dist_cls( + base_dir, + project_name=dist_name, + metadata=metadata, + ) + + +class InstallRequirement(object): + """ + Represents something that may be installed later on, may have information + about where to fetch the relevant requirement and also contains logic for + installing the said requirement. + """ + + def __init__( + self, + req, # type: Optional[Requirement] + comes_from, # type: Optional[Union[str, InstallRequirement]] + source_dir=None, # type: Optional[str] + editable=False, # type: bool + link=None, # type: Optional[Link] + markers=None, # type: Optional[Marker] + use_pep517=None, # type: Optional[bool] + isolated=False, # type: bool + options=None, # type: Optional[Dict[str, Any]] + wheel_cache=None, # type: Optional[WheelCache] + constraint=False, # type: bool + extras=() # type: Iterable[str] + ): + # type: (...) -> None + assert req is None or isinstance(req, Requirement), req + self.req = req + self.comes_from = comes_from + self.constraint = constraint + if source_dir is None: + self.source_dir = None # type: Optional[str] + else: + self.source_dir = os.path.normpath(os.path.abspath(source_dir)) + self.editable = editable + + self._wheel_cache = wheel_cache + if link is None and req and req.url: + # PEP 508 URL requirement + link = Link(req.url) + self.link = self.original_link = link + # Path to any downloaded or already-existing package. + self.local_file_path = None # type: Optional[str] + if self.link and self.link.is_file: + self.local_file_path = self.link.file_path + + if extras: + self.extras = extras + elif req: + self.extras = { + pkg_resources.safe_extra(extra) for extra in req.extras + } + else: + self.extras = set() + if markers is None and req: + markers = req.marker + self.markers = markers + + # This holds the pkg_resources.Distribution object if this requirement + # is already available: + self.satisfied_by = None # type: Optional[Distribution] + # Whether the installation process should try to uninstall an existing + # distribution before installing this requirement. + self.should_reinstall = False + # Temporary build location + self._temp_build_dir = None # type: Optional[TempDirectory] + # Set to True after successful installation + self.install_succeeded = None # type: Optional[bool] + self.options = options if options else {} + # Set to True after successful preparation of this requirement + self.prepared = False + self.is_direct = False + + self.isolated = isolated + self.build_env = NoOpBuildEnvironment() # type: BuildEnvironment + + # For PEP 517, the directory where we request the project metadata + # gets stored. We need this to pass to build_wheel, so the backend + # can ensure that the wheel matches the metadata (see the PEP for + # details). + self.metadata_directory = None # type: Optional[str] + + # The static build requirements (from pyproject.toml) + self.pyproject_requires = None # type: Optional[List[str]] + + # Build requirements that we will check are available + self.requirements_to_check = [] # type: List[str] + + # The PEP 517 backend we should use to build the project + self.pep517_backend = None # type: Optional[Pep517HookCaller] + + # Are we using PEP 517 for this requirement? + # After pyproject.toml has been loaded, the only valid values are True + # and False. Before loading, None is valid (meaning "use the default"). + # Setting an explicit value before loading pyproject.toml is supported, + # but after loading this flag should be treated as read only. + self.use_pep517 = use_pep517 + + def __str__(self): + # type: () -> str + if self.req: + s = str(self.req) + if self.link: + s += ' from %s' % redact_auth_from_url(self.link.url) + elif self.link: + s = redact_auth_from_url(self.link.url) + else: + s = '' + if self.satisfied_by is not None: + s += ' in %s' % display_path(self.satisfied_by.location) + if self.comes_from: + if isinstance(self.comes_from, six.string_types): + comes_from = self.comes_from # type: Optional[str] + else: + comes_from = self.comes_from.from_path() + if comes_from: + s += ' (from %s)' % comes_from + return s + + def __repr__(self): + # type: () -> str + return '<%s object: %s editable=%r>' % ( + self.__class__.__name__, str(self), self.editable) + + def format_debug(self): + # type: () -> str + """An un-tested helper for getting state, for debugging. + """ + attributes = vars(self) + names = sorted(attributes) + + state = ( + "{}={!r}".format(attr, attributes[attr]) for attr in sorted(names) + ) + return '<{name} object: {{{state}}}>'.format( + name=self.__class__.__name__, + state=", ".join(state), + ) + + def populate_link(self, finder, upgrade, require_hashes): + # type: (PackageFinder, bool, bool) -> None + """Ensure that if a link can be found for this, that it is found. + + Note that self.link may still be None - if Upgrade is False and the + requirement is already installed. + + If require_hashes is True, don't use the wheel cache, because cached + wheels, always built locally, have different hashes than the files + downloaded from the index server and thus throw false hash mismatches. + Furthermore, cached wheels at present have undeterministic contents due + to file modification times. + """ + if self.link is None: + self.link = finder.find_requirement(self, upgrade) + if self._wheel_cache is not None and not require_hashes: + old_link = self.link + supported_tags = pep425tags.get_supported() + self.link = self._wheel_cache.get( + link=self.link, + package_name=self.name, + supported_tags=supported_tags, + ) + if old_link != self.link: + logger.debug('Using cached wheel link: %s', self.link) + + # Things that are valid for all kinds of requirements? + @property + def name(self): + # type: () -> Optional[str] + if self.req is None: + return None + return six.ensure_str(pkg_resources.safe_name(self.req.name)) + + @property + def specifier(self): + # type: () -> SpecifierSet + return self.req.specifier + + @property + def is_pinned(self): + # type: () -> bool + """Return whether I am pinned to an exact version. + + For example, some-package==1.2 is pinned; some-package>1.2 is not. + """ + specifiers = self.specifier + return (len(specifiers) == 1 and + next(iter(specifiers)).operator in {'==', '==='}) + + @property + def installed_version(self): + # type: () -> Optional[str] + return get_installed_version(self.name) + + def match_markers(self, extras_requested=None): + # type: (Optional[Iterable[str]]) -> bool + if not extras_requested: + # Provide an extra to safely evaluate the markers + # without matching any extra + extras_requested = ('',) + if self.markers is not None: + return any( + self.markers.evaluate({'extra': extra}) + for extra in extras_requested) + else: + return True + + @property + def has_hash_options(self): + # type: () -> bool + """Return whether any known-good hashes are specified as options. + + These activate --require-hashes mode; hashes specified as part of a + URL do not. + + """ + return bool(self.options.get('hashes', {})) + + def hashes(self, trust_internet=True): + # type: (bool) -> Hashes + """Return a hash-comparer that considers my option- and URL-based + hashes to be known-good. + + Hashes in URLs--ones embedded in the requirements file, not ones + downloaded from an index server--are almost peers with ones from + flags. They satisfy --require-hashes (whether it was implicitly or + explicitly activated) but do not activate it. md5 and sha224 are not + allowed in flags, which should nudge people toward good algos. We + always OR all hashes together, even ones from URLs. + + :param trust_internet: Whether to trust URL-based (#md5=...) hashes + downloaded from the internet, as by populate_link() + + """ + good_hashes = self.options.get('hashes', {}).copy() + link = self.link if trust_internet else self.original_link + if link and link.hash: + good_hashes.setdefault(link.hash_name, []).append(link.hash) + return Hashes(good_hashes) + + def from_path(self): + # type: () -> Optional[str] + """Format a nice indicator to show where this "comes from" + """ + if self.req is None: + return None + s = str(self.req) + if self.comes_from: + if isinstance(self.comes_from, six.string_types): + comes_from = self.comes_from + else: + comes_from = self.comes_from.from_path() + if comes_from: + s += '->' + comes_from + return s + + def ensure_build_location(self, build_dir): + # type: (str) -> str + assert build_dir is not None + if self._temp_build_dir is not None: + assert self._temp_build_dir.path + return self._temp_build_dir.path + if self.req is None: + # Some systems have /tmp as a symlink which confuses custom + # builds (such as numpy). Thus, we ensure that the real path + # is returned. + self._temp_build_dir = TempDirectory(kind="req-build") + + return self._temp_build_dir.path + if self.editable: + name = self.name.lower() + else: + name = self.name + # FIXME: Is there a better place to create the build_dir? (hg and bzr + # need this) + if not os.path.exists(build_dir): + logger.debug('Creating directory %s', build_dir) + os.makedirs(build_dir) + write_delete_marker_file(build_dir) + return os.path.join(build_dir, name) + + def _set_requirement(self): + # type: () -> None + """Set requirement after generating metadata. + """ + assert self.req is None + assert self.metadata is not None + assert self.source_dir is not None + + # Construct a Requirement object from the generated metadata + if isinstance(parse_version(self.metadata["Version"]), Version): + op = "==" + else: + op = "===" + + self.req = Requirement( + "".join([ + self.metadata["Name"], + op, + self.metadata["Version"], + ]) + ) + + def warn_on_mismatching_name(self): + # type: () -> None + metadata_name = canonicalize_name(self.metadata["Name"]) + if canonicalize_name(self.req.name) == metadata_name: + # Everything is fine. + return + + # If we're here, there's a mismatch. Log a warning about it. + logger.warning( + 'Generating metadata for package %s ' + 'produced metadata for project name %s. Fix your ' + '#egg=%s fragments.', + self.name, metadata_name, self.name + ) + self.req = Requirement(metadata_name) + + def remove_temporary_source(self): + # type: () -> None + """Remove the source files from this requirement, if they are marked + for deletion""" + if self.source_dir and has_delete_marker_file(self.source_dir): + logger.debug('Removing source in %s', self.source_dir) + rmtree(self.source_dir) + self.source_dir = None + if self._temp_build_dir: + self._temp_build_dir.cleanup() + self._temp_build_dir = None + self.build_env.cleanup() + + def check_if_exists(self, use_user_site): + # type: (bool) -> None + """Find an installed distribution that satisfies or conflicts + with this requirement, and set self.satisfied_by or + self.should_reinstall appropriately. + """ + if self.req is None: + return + # get_distribution() will resolve the entire list of requirements + # anyway, and we've already determined that we need the requirement + # in question, so strip the marker so that we don't try to + # evaluate it. + no_marker = Requirement(str(self.req)) + no_marker.marker = None + try: + self.satisfied_by = pkg_resources.get_distribution(str(no_marker)) + except pkg_resources.DistributionNotFound: + return + except pkg_resources.VersionConflict: + existing_dist = pkg_resources.get_distribution( + self.req.name + ) + if use_user_site: + if dist_in_usersite(existing_dist): + self.should_reinstall = True + elif (running_under_virtualenv() and + dist_in_site_packages(existing_dist)): + raise InstallationError( + "Will not install to the user site because it will " + "lack sys.path precedence to %s in %s" % + (existing_dist.project_name, existing_dist.location) + ) + else: + self.should_reinstall = True + else: + if self.editable and self.satisfied_by: + self.should_reinstall = True + # when installing editables, nothing pre-existing should ever + # satisfy + self.satisfied_by = None + + # Things valid for wheels + @property + def is_wheel(self): + # type: () -> bool + if not self.link: + return False + return self.link.is_wheel + + # Things valid for sdists + @property + def unpacked_source_directory(self): + # type: () -> str + return os.path.join( + self.source_dir, + self.link and self.link.subdirectory_fragment or '') + + @property + def setup_py_path(self): + # type: () -> str + assert self.source_dir, "No source dir for %s" % self + setup_py = os.path.join(self.unpacked_source_directory, 'setup.py') + + # Python2 __file__ should not be unicode + if six.PY2 and isinstance(setup_py, six.text_type): + setup_py = setup_py.encode(sys.getfilesystemencoding()) + + return setup_py + + @property + def pyproject_toml_path(self): + # type: () -> str + assert self.source_dir, "No source dir for %s" % self + return make_pyproject_path(self.unpacked_source_directory) + + def load_pyproject_toml(self): + # type: () -> None + """Load the pyproject.toml file. + + After calling this routine, all of the attributes related to PEP 517 + processing for this requirement have been set. In particular, the + use_pep517 attribute can be used to determine whether we should + follow the PEP 517 or legacy (setup.py) code path. + """ + pyproject_toml_data = load_pyproject_toml( + self.use_pep517, + self.pyproject_toml_path, + self.setup_py_path, + str(self) + ) + + if pyproject_toml_data is None: + self.use_pep517 = False + return + + self.use_pep517 = True + requires, backend, check, backend_path = pyproject_toml_data + self.requirements_to_check = check + self.pyproject_requires = requires + self.pep517_backend = Pep517HookCaller( + self.unpacked_source_directory, backend, backend_path=backend_path, + ) + + def _generate_metadata(self): + # type: () -> str + """Invokes metadata generator functions, with the required arguments. + """ + if not self.use_pep517: + assert self.unpacked_source_directory + + return generate_metadata_legacy( + build_env=self.build_env, + setup_py_path=self.setup_py_path, + source_dir=self.unpacked_source_directory, + editable=self.editable, + isolated=self.isolated, + details=self.name or "from {}".format(self.link) + ) + + assert self.pep517_backend is not None + + return generate_metadata( + build_env=self.build_env, + backend=self.pep517_backend, + ) + + def prepare_metadata(self): + # type: () -> None + """Ensure that project metadata is available. + + Under PEP 517, call the backend hook to prepare the metadata. + Under legacy processing, call setup.py egg-info. + """ + assert self.source_dir + + with indent_log(): + self.metadata_directory = self._generate_metadata() + + # Act on the newly generated metadata, based on the name and version. + if not self.name: + self._set_requirement() + else: + self.warn_on_mismatching_name() + + self.assert_source_matches_version() + + @property + def metadata(self): + # type: () -> Any + if not hasattr(self, '_metadata'): + self._metadata = get_metadata(self.get_dist()) + + return self._metadata + + def get_dist(self): + # type: () -> Distribution + return _get_dist(self.metadata_directory) + + def assert_source_matches_version(self): + # type: () -> None + assert self.source_dir + version = self.metadata['version'] + if self.req.specifier and version not in self.req.specifier: + logger.warning( + 'Requested %s, but installing version %s', + self, + version, + ) + else: + logger.debug( + 'Source in %s has version %s, which satisfies requirement %s', + display_path(self.source_dir), + version, + self, + ) + + # For both source distributions and editables + def ensure_has_source_dir(self, parent_dir): + # type: (str) -> None + """Ensure that a source_dir is set. + + This will create a temporary build dir if the name of the requirement + isn't known yet. + + :param parent_dir: The ideal pip parent_dir for the source_dir. + Generally src_dir for editables and build_dir for sdists. + :return: self.source_dir + """ + if self.source_dir is None: + self.source_dir = self.ensure_build_location(parent_dir) + + # For editable installations + def update_editable(self, obtain=True): + # type: (bool) -> None + if not self.link: + logger.debug( + "Cannot update repository at %s; repository location is " + "unknown", + self.source_dir, + ) + return + assert self.editable + assert self.source_dir + if self.link.scheme == 'file': + # Static paths don't get updated + return + assert '+' in self.link.url, "bad url: %r" % self.link.url + vc_type, url = self.link.url.split('+', 1) + vcs_backend = vcs.get_backend(vc_type) + if vcs_backend: + if not self.link.is_vcs: + reason = ( + "This form of VCS requirement is being deprecated: {}." + ).format( + self.link.url + ) + replacement = None + if self.link.url.startswith("git+git@"): + replacement = ( + "git+https://git@example.com/..., " + "git+ssh://git@example.com/..., " + "or the insecure git+git://git@example.com/..." + ) + deprecated(reason, replacement, gone_in="21.0", issue=7554) + hidden_url = hide_url(self.link.url) + if obtain: + vcs_backend.obtain(self.source_dir, url=hidden_url) + else: + vcs_backend.export(self.source_dir, url=hidden_url) + else: + assert 0, ( + 'Unexpected version control type (in %s): %s' + % (self.link, vc_type)) + + # Top-level Actions + def uninstall(self, auto_confirm=False, verbose=False): + # type: (bool, bool) -> Optional[UninstallPathSet] + """ + Uninstall the distribution currently satisfying this requirement. + + Prompts before removing or modifying files unless + ``auto_confirm`` is True. + + Refuses to delete or modify files outside of ``sys.prefix`` - + thus uninstallation within a virtual environment can only + modify that virtual environment, even if the virtualenv is + linked to global site-packages. + + """ + assert self.req + try: + dist = pkg_resources.get_distribution(self.req.name) + except pkg_resources.DistributionNotFound: + logger.warning("Skipping %s as it is not installed.", self.name) + return None + else: + logger.info('Found existing installation: %s', dist) + + uninstalled_pathset = UninstallPathSet.from_dist(dist) + uninstalled_pathset.remove(auto_confirm, verbose) + return uninstalled_pathset + + def _get_archive_name(self, path, parentdir, rootdir): + # type: (str, str, str) -> str + + def _clean_zip_name(name, prefix): + # type: (str, str) -> str + assert name.startswith(prefix + os.path.sep), ( + "name %r doesn't start with prefix %r" % (name, prefix) + ) + name = name[len(prefix) + 1:] + name = name.replace(os.path.sep, '/') + return name + + path = os.path.join(parentdir, path) + name = _clean_zip_name(path, rootdir) + return self.name + '/' + name + + def archive(self, build_dir): + # type: (str) -> None + """Saves archive to provided build_dir. + + Used for saving downloaded VCS requirements as part of `pip download`. + """ + assert self.source_dir + + create_archive = True + archive_name = '%s-%s.zip' % (self.name, self.metadata["version"]) + archive_path = os.path.join(build_dir, archive_name) + + if os.path.exists(archive_path): + response = ask_path_exists( + 'The file %s exists. (i)gnore, (w)ipe, (b)ackup, (a)bort ' % + display_path(archive_path), ('i', 'w', 'b', 'a')) + if response == 'i': + create_archive = False + elif response == 'w': + logger.warning('Deleting %s', display_path(archive_path)) + os.remove(archive_path) + elif response == 'b': + dest_file = backup_dir(archive_path) + logger.warning( + 'Backing up %s to %s', + display_path(archive_path), + display_path(dest_file), + ) + shutil.move(archive_path, dest_file) + elif response == 'a': + sys.exit(-1) + + if not create_archive: + return + + zip_output = zipfile.ZipFile( + archive_path, 'w', zipfile.ZIP_DEFLATED, allowZip64=True, + ) + with zip_output: + dir = os.path.normcase( + os.path.abspath(self.unpacked_source_directory) + ) + for dirpath, dirnames, filenames in os.walk(dir): + if 'pip-egg-info' in dirnames: + dirnames.remove('pip-egg-info') + for dirname in dirnames: + dir_arcname = self._get_archive_name( + dirname, parentdir=dirpath, rootdir=dir, + ) + zipdir = zipfile.ZipInfo(dir_arcname + '/') + zipdir.external_attr = 0x1ED << 16 # 0o755 + zip_output.writestr(zipdir, '') + for filename in filenames: + if filename == PIP_DELETE_MARKER_FILENAME: + continue + file_arcname = self._get_archive_name( + filename, parentdir=dirpath, rootdir=dir, + ) + filename = os.path.join(dirpath, filename) + zip_output.write(filename, file_arcname) + + logger.info('Saved %s', display_path(archive_path)) + + def install( + self, + install_options, # type: List[str] + global_options=None, # type: Optional[Sequence[str]] + root=None, # type: Optional[str] + home=None, # type: Optional[str] + prefix=None, # type: Optional[str] + warn_script_location=True, # type: bool + use_user_site=False, # type: bool + pycompile=True # type: bool + ): + # type: (...) -> None + scheme = get_scheme( + self.name, + user=use_user_site, + home=home, + root=root, + isolated=self.isolated, + prefix=prefix, + ) + + global_options = global_options if global_options is not None else [] + if self.editable: + install_editable_legacy( + install_options, + global_options, + prefix=prefix, + home=home, + use_user_site=use_user_site, + name=self.name, + setup_py_path=self.setup_py_path, + isolated=self.isolated, + build_env=self.build_env, + unpacked_source_directory=self.unpacked_source_directory, + ) + self.install_succeeded = True + return + + if self.is_wheel: + assert self.local_file_path + install_wheel( + self.name, + self.local_file_path, + scheme=scheme, + req_description=str(self.req), + pycompile=pycompile, + warn_script_location=warn_script_location, + ) + self.install_succeeded = True + return + + install_legacy( + self, + install_options=install_options, + global_options=global_options, + root=root, + home=home, + prefix=prefix, + use_user_site=use_user_site, + pycompile=pycompile, + scheme=scheme, + ) diff --git a/Lib/site-packages/pip/_internal/req/req_set.py b/Lib/site-packages/pip/_internal/req/req_set.py new file mode 100644 index 0000000..087ac59 --- /dev/null +++ b/Lib/site-packages/pip/_internal/req/req_set.py @@ -0,0 +1,209 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import logging +from collections import OrderedDict + +from pip._vendor.packaging.utils import canonicalize_name + +from pip._internal import pep425tags +from pip._internal.exceptions import InstallationError +from pip._internal.models.wheel import Wheel +from pip._internal.utils.logging import indent_log +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Dict, Iterable, List, Optional, Tuple + from pip._internal.req.req_install import InstallRequirement + + +logger = logging.getLogger(__name__) + + +class RequirementSet(object): + + def __init__(self, check_supported_wheels=True): + # type: (bool) -> None + """Create a RequirementSet. + """ + + self.requirements = OrderedDict() # type: Dict[str, InstallRequirement] # noqa: E501 + self.check_supported_wheels = check_supported_wheels + + self.unnamed_requirements = [] # type: List[InstallRequirement] + self.successfully_downloaded = [] # type: List[InstallRequirement] + self.reqs_to_cleanup = [] # type: List[InstallRequirement] + + def __str__(self): + # type: () -> str + requirements = sorted( + (req for req in self.requirements.values() if not req.comes_from), + key=lambda req: canonicalize_name(req.name), + ) + return ' '.join(str(req.req) for req in requirements) + + def __repr__(self): + # type: () -> str + requirements = sorted( + self.requirements.values(), + key=lambda req: canonicalize_name(req.name), + ) + + format_string = '<{classname} object; {count} requirement(s): {reqs}>' + return format_string.format( + classname=self.__class__.__name__, + count=len(requirements), + reqs=', '.join(str(req.req) for req in requirements), + ) + + def add_unnamed_requirement(self, install_req): + # type: (InstallRequirement) -> None + assert not install_req.name + self.unnamed_requirements.append(install_req) + + def add_named_requirement(self, install_req): + # type: (InstallRequirement) -> None + assert install_req.name + + project_name = canonicalize_name(install_req.name) + self.requirements[project_name] = install_req + + def add_requirement( + self, + install_req, # type: InstallRequirement + parent_req_name=None, # type: Optional[str] + extras_requested=None # type: Optional[Iterable[str]] + ): + # type: (...) -> Tuple[List[InstallRequirement], Optional[InstallRequirement]] # noqa: E501 + """Add install_req as a requirement to install. + + :param parent_req_name: The name of the requirement that needed this + added. The name is used because when multiple unnamed requirements + resolve to the same name, we could otherwise end up with dependency + links that point outside the Requirements set. parent_req must + already be added. Note that None implies that this is a user + supplied requirement, vs an inferred one. + :param extras_requested: an iterable of extras used to evaluate the + environment markers. + :return: Additional requirements to scan. That is either [] if + the requirement is not applicable, or [install_req] if the + requirement is applicable and has just been added. + """ + # If the markers do not match, ignore this requirement. + if not install_req.match_markers(extras_requested): + logger.info( + "Ignoring %s: markers '%s' don't match your environment", + install_req.name, install_req.markers, + ) + return [], None + + # If the wheel is not supported, raise an error. + # Should check this after filtering out based on environment markers to + # allow specifying different wheels based on the environment/OS, in a + # single requirements file. + if install_req.link and install_req.link.is_wheel: + wheel = Wheel(install_req.link.filename) + tags = pep425tags.get_supported() + if (self.check_supported_wheels and not wheel.supported(tags)): + raise InstallationError( + "%s is not a supported wheel on this platform." % + wheel.filename + ) + + # This next bit is really a sanity check. + assert install_req.is_direct == (parent_req_name is None), ( + "a direct req shouldn't have a parent and also, " + "a non direct req should have a parent" + ) + + # Unnamed requirements are scanned again and the requirement won't be + # added as a dependency until after scanning. + if not install_req.name: + self.add_unnamed_requirement(install_req) + return [install_req], None + + try: + existing_req = self.get_requirement(install_req.name) + except KeyError: + existing_req = None + + has_conflicting_requirement = ( + parent_req_name is None and + existing_req and + not existing_req.constraint and + existing_req.extras == install_req.extras and + existing_req.req.specifier != install_req.req.specifier + ) + if has_conflicting_requirement: + raise InstallationError( + "Double requirement given: %s (already in %s, name=%r)" + % (install_req, existing_req, install_req.name) + ) + + # When no existing requirement exists, add the requirement as a + # dependency and it will be scanned again after. + if not existing_req: + self.add_named_requirement(install_req) + # We'd want to rescan this requirement later + return [install_req], install_req + + # Assume there's no need to scan, and that we've already + # encountered this for scanning. + if install_req.constraint or not existing_req.constraint: + return [], existing_req + + does_not_satisfy_constraint = ( + install_req.link and + not ( + existing_req.link and + install_req.link.path == existing_req.link.path + ) + ) + if does_not_satisfy_constraint: + self.reqs_to_cleanup.append(install_req) + raise InstallationError( + "Could not satisfy constraints for '%s': " + "installation from path or url cannot be " + "constrained to a version" % install_req.name, + ) + # If we're now installing a constraint, mark the existing + # object for real installation. + existing_req.constraint = False + existing_req.extras = tuple(sorted( + set(existing_req.extras) | set(install_req.extras) + )) + logger.debug( + "Setting %s extras to: %s", + existing_req, existing_req.extras, + ) + # Return the existing requirement for addition to the parent and + # scanning again. + return [existing_req], existing_req + + def has_requirement(self, name): + # type: (str) -> bool + project_name = canonicalize_name(name) + + return ( + project_name in self.requirements and + not self.requirements[project_name].constraint + ) + + def get_requirement(self, name): + # type: (str) -> InstallRequirement + project_name = canonicalize_name(name) + + if project_name in self.requirements: + return self.requirements[project_name] + + raise KeyError("No project with the name %r" % name) + + def cleanup_files(self): + # type: () -> None + """Clean up files, remove builds.""" + logger.debug('Cleaning up...') + with indent_log(): + for req in self.reqs_to_cleanup: + req.remove_temporary_source() diff --git a/Lib/site-packages/pip/_internal/req/req_tracker.py b/Lib/site-packages/pip/_internal/req/req_tracker.py new file mode 100644 index 0000000..84e0c04 --- /dev/null +++ b/Lib/site-packages/pip/_internal/req/req_tracker.py @@ -0,0 +1,150 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import contextlib +import errno +import hashlib +import logging +import os + +from pip._vendor import contextlib2 + +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from types import TracebackType + from typing import Dict, Iterator, Optional, Set, Type, Union + from pip._internal.req.req_install import InstallRequirement + from pip._internal.models.link import Link + +logger = logging.getLogger(__name__) + + +@contextlib.contextmanager +def update_env_context_manager(**changes): + # type: (str) -> Iterator[None] + target = os.environ + + # Save values from the target and change them. + non_existent_marker = object() + saved_values = {} # type: Dict[str, Union[object, str]] + for name, new_value in changes.items(): + try: + saved_values[name] = target[name] + except KeyError: + saved_values[name] = non_existent_marker + target[name] = new_value + + try: + yield + finally: + # Restore original values in the target. + for name, original_value in saved_values.items(): + if original_value is non_existent_marker: + del target[name] + else: + assert isinstance(original_value, str) # for mypy + target[name] = original_value + + +@contextlib.contextmanager +def get_requirement_tracker(): + # type: () -> Iterator[RequirementTracker] + root = os.environ.get('PIP_REQ_TRACKER') + with contextlib2.ExitStack() as ctx: + if root is None: + root = ctx.enter_context( + TempDirectory(kind='req-tracker') + ).path + ctx.enter_context(update_env_context_manager(PIP_REQ_TRACKER=root)) + logger.debug("Initialized build tracking at %s", root) + + with RequirementTracker(root) as tracker: + yield tracker + + +class RequirementTracker(object): + + def __init__(self, root): + # type: (str) -> None + self._root = root + self._entries = set() # type: Set[InstallRequirement] + logger.debug("Created build tracker: %s", self._root) + + def __enter__(self): + # type: () -> RequirementTracker + logger.debug("Entered build tracker: %s", self._root) + return self + + def __exit__( + self, + exc_type, # type: Optional[Type[BaseException]] + exc_val, # type: Optional[BaseException] + exc_tb # type: Optional[TracebackType] + ): + # type: (...) -> None + self.cleanup() + + def _entry_path(self, link): + # type: (Link) -> str + hashed = hashlib.sha224(link.url_without_fragment.encode()).hexdigest() + return os.path.join(self._root, hashed) + + def add(self, req): + # type: (InstallRequirement) -> None + """Add an InstallRequirement to build tracking. + """ + + # Get the file to write information about this requirement. + entry_path = self._entry_path(req.link) + + # Try reading from the file. If it exists and can be read from, a build + # is already in progress, so a LookupError is raised. + try: + with open(entry_path) as fp: + contents = fp.read() + except IOError as e: + # if the error is anything other than "file does not exist", raise. + if e.errno != errno.ENOENT: + raise + else: + message = '%s is already being built: %s' % (req.link, contents) + raise LookupError(message) + + # If we're here, req should really not be building already. + assert req not in self._entries + + # Start tracking this requirement. + with open(entry_path, 'w') as fp: + fp.write(str(req)) + self._entries.add(req) + + logger.debug('Added %s to build tracker %r', req, self._root) + + def remove(self, req): + # type: (InstallRequirement) -> None + """Remove an InstallRequirement from build tracking. + """ + + # Delete the created file and the corresponding entries. + os.unlink(self._entry_path(req.link)) + self._entries.remove(req) + + logger.debug('Removed %s from build tracker %r', req, self._root) + + def cleanup(self): + # type: () -> None + for req in set(self._entries): + self.remove(req) + + logger.debug("Removed build tracker: %r", self._root) + + @contextlib.contextmanager + def track(self, req): + # type: (InstallRequirement) -> Iterator[None] + self.add(req) + yield + self.remove(req) diff --git a/Lib/site-packages/pip/_internal/req/req_uninstall.py b/Lib/site-packages/pip/_internal/req/req_uninstall.py new file mode 100644 index 0000000..5971b13 --- /dev/null +++ b/Lib/site-packages/pip/_internal/req/req_uninstall.py @@ -0,0 +1,644 @@ +from __future__ import absolute_import + +import csv +import functools +import logging +import os +import sys +import sysconfig + +from pip._vendor import pkg_resources + +from pip._internal.exceptions import UninstallationError +from pip._internal.locations import bin_py, bin_user +from pip._internal.utils.compat import WINDOWS, cache_from_source, uses_pycache +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ( + FakeFile, + ask, + dist_in_usersite, + dist_is_local, + egg_link_path, + is_local, + normalize_path, + renames, + rmtree, +) +from pip._internal.utils.temp_dir import AdjacentTempDirectory, TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import ( + Any, Callable, Dict, Iterable, Iterator, List, Optional, Set, Tuple, + ) + from pip._vendor.pkg_resources import Distribution + +logger = logging.getLogger(__name__) + + +def _script_names(dist, script_name, is_gui): + # type: (Distribution, str, bool) -> List[str] + """Create the fully qualified name of the files created by + {console,gui}_scripts for the given ``dist``. + Returns the list of file names + """ + if dist_in_usersite(dist): + bin_dir = bin_user + else: + bin_dir = bin_py + exe_name = os.path.join(bin_dir, script_name) + paths_to_remove = [exe_name] + if WINDOWS: + paths_to_remove.append(exe_name + '.exe') + paths_to_remove.append(exe_name + '.exe.manifest') + if is_gui: + paths_to_remove.append(exe_name + '-script.pyw') + else: + paths_to_remove.append(exe_name + '-script.py') + return paths_to_remove + + +def _unique(fn): + # type: (Callable[..., Iterator[Any]]) -> Callable[..., Iterator[Any]] + @functools.wraps(fn) + def unique(*args, **kw): + # type: (Any, Any) -> Iterator[Any] + seen = set() # type: Set[Any] + for item in fn(*args, **kw): + if item not in seen: + seen.add(item) + yield item + return unique + + +@_unique +def uninstallation_paths(dist): + # type: (Distribution) -> Iterator[str] + """ + Yield all the uninstallation paths for dist based on RECORD-without-.py[co] + + Yield paths to all the files in RECORD. For each .py file in RECORD, add + the .pyc and .pyo in the same directory. + + UninstallPathSet.add() takes care of the __pycache__ .py[co]. + """ + r = csv.reader(FakeFile(dist.get_metadata_lines('RECORD'))) + for row in r: + path = os.path.join(dist.location, row[0]) + yield path + if path.endswith('.py'): + dn, fn = os.path.split(path) + base = fn[:-3] + path = os.path.join(dn, base + '.pyc') + yield path + path = os.path.join(dn, base + '.pyo') + yield path + + +def compact(paths): + # type: (Iterable[str]) -> Set[str] + """Compact a path set to contain the minimal number of paths + necessary to contain all paths in the set. If /a/path/ and + /a/path/to/a/file.txt are both in the set, leave only the + shorter path.""" + + sep = os.path.sep + short_paths = set() # type: Set[str] + for path in sorted(paths, key=len): + should_skip = any( + path.startswith(shortpath.rstrip("*")) and + path[len(shortpath.rstrip("*").rstrip(sep))] == sep + for shortpath in short_paths + ) + if not should_skip: + short_paths.add(path) + return short_paths + + +def compress_for_rename(paths): + # type: (Iterable[str]) -> Set[str] + """Returns a set containing the paths that need to be renamed. + + This set may include directories when the original sequence of paths + included every file on disk. + """ + case_map = dict((os.path.normcase(p), p) for p in paths) + remaining = set(case_map) + unchecked = sorted(set(os.path.split(p)[0] + for p in case_map.values()), key=len) + wildcards = set() # type: Set[str] + + def norm_join(*a): + # type: (str) -> str + return os.path.normcase(os.path.join(*a)) + + for root in unchecked: + if any(os.path.normcase(root).startswith(w) + for w in wildcards): + # This directory has already been handled. + continue + + all_files = set() # type: Set[str] + all_subdirs = set() # type: Set[str] + for dirname, subdirs, files in os.walk(root): + all_subdirs.update(norm_join(root, dirname, d) + for d in subdirs) + all_files.update(norm_join(root, dirname, f) + for f in files) + # If all the files we found are in our remaining set of files to + # remove, then remove them from the latter set and add a wildcard + # for the directory. + if not (all_files - remaining): + remaining.difference_update(all_files) + wildcards.add(root + os.sep) + + return set(map(case_map.__getitem__, remaining)) | wildcards + + +def compress_for_output_listing(paths): + # type: (Iterable[str]) -> Tuple[Set[str], Set[str]] + """Returns a tuple of 2 sets of which paths to display to user + + The first set contains paths that would be deleted. Files of a package + are not added and the top-level directory of the package has a '*' added + at the end - to signify that all it's contents are removed. + + The second set contains files that would have been skipped in the above + folders. + """ + + will_remove = set(paths) + will_skip = set() + + # Determine folders and files + folders = set() + files = set() + for path in will_remove: + if path.endswith(".pyc"): + continue + if path.endswith("__init__.py") or ".dist-info" in path: + folders.add(os.path.dirname(path)) + files.add(path) + + # probably this one https://github.com/python/mypy/issues/390 + _normcased_files = set(map(os.path.normcase, files)) # type: ignore + + folders = compact(folders) + + # This walks the tree using os.walk to not miss extra folders + # that might get added. + for folder in folders: + for dirpath, _, dirfiles in os.walk(folder): + for fname in dirfiles: + if fname.endswith(".pyc"): + continue + + file_ = os.path.join(dirpath, fname) + if (os.path.isfile(file_) and + os.path.normcase(file_) not in _normcased_files): + # We are skipping this file. Add it to the set. + will_skip.add(file_) + + will_remove = files | { + os.path.join(folder, "*") for folder in folders + } + + return will_remove, will_skip + + +class StashedUninstallPathSet(object): + """A set of file rename operations to stash files while + tentatively uninstalling them.""" + def __init__(self): + # type: () -> None + # Mapping from source file root to [Adjacent]TempDirectory + # for files under that directory. + self._save_dirs = {} # type: Dict[str, TempDirectory] + # (old path, new path) tuples for each move that may need + # to be undone. + self._moves = [] # type: List[Tuple[str, str]] + + def _get_directory_stash(self, path): + # type: (str) -> str + """Stashes a directory. + + Directories are stashed adjacent to their original location if + possible, or else moved/copied into the user's temp dir.""" + + try: + save_dir = AdjacentTempDirectory(path) # type: TempDirectory + except OSError: + save_dir = TempDirectory(kind="uninstall") + self._save_dirs[os.path.normcase(path)] = save_dir + + return save_dir.path + + def _get_file_stash(self, path): + # type: (str) -> str + """Stashes a file. + + If no root has been provided, one will be created for the directory + in the user's temp directory.""" + path = os.path.normcase(path) + head, old_head = os.path.dirname(path), None + save_dir = None + + while head != old_head: + try: + save_dir = self._save_dirs[head] + break + except KeyError: + pass + head, old_head = os.path.dirname(head), head + else: + # Did not find any suitable root + head = os.path.dirname(path) + save_dir = TempDirectory(kind='uninstall') + self._save_dirs[head] = save_dir + + relpath = os.path.relpath(path, head) + if relpath and relpath != os.path.curdir: + return os.path.join(save_dir.path, relpath) + return save_dir.path + + def stash(self, path): + # type: (str) -> str + """Stashes the directory or file and returns its new location. + Handle symlinks as files to avoid modifying the symlink targets. + """ + path_is_dir = os.path.isdir(path) and not os.path.islink(path) + if path_is_dir: + new_path = self._get_directory_stash(path) + else: + new_path = self._get_file_stash(path) + + self._moves.append((path, new_path)) + if (path_is_dir and os.path.isdir(new_path)): + # If we're moving a directory, we need to + # remove the destination first or else it will be + # moved to inside the existing directory. + # We just created new_path ourselves, so it will + # be removable. + os.rmdir(new_path) + renames(path, new_path) + return new_path + + def commit(self): + # type: () -> None + """Commits the uninstall by removing stashed files.""" + for _, save_dir in self._save_dirs.items(): + save_dir.cleanup() + self._moves = [] + self._save_dirs = {} + + def rollback(self): + # type: () -> None + """Undoes the uninstall by moving stashed files back.""" + for p in self._moves: + logger.info("Moving to %s\n from %s", *p) + + for new_path, path in self._moves: + try: + logger.debug('Replacing %s from %s', new_path, path) + if os.path.isfile(new_path) or os.path.islink(new_path): + os.unlink(new_path) + elif os.path.isdir(new_path): + rmtree(new_path) + renames(path, new_path) + except OSError as ex: + logger.error("Failed to restore %s", new_path) + logger.debug("Exception: %s", ex) + + self.commit() + + @property + def can_rollback(self): + # type: () -> bool + return bool(self._moves) + + +class UninstallPathSet(object): + """A set of file paths to be removed in the uninstallation of a + requirement.""" + def __init__(self, dist): + # type: (Distribution) -> None + self.paths = set() # type: Set[str] + self._refuse = set() # type: Set[str] + self.pth = {} # type: Dict[str, UninstallPthEntries] + self.dist = dist + self._moved_paths = StashedUninstallPathSet() + + def _permitted(self, path): + # type: (str) -> bool + """ + Return True if the given path is one we are permitted to + remove/modify, False otherwise. + + """ + return is_local(path) + + def add(self, path): + # type: (str) -> None + head, tail = os.path.split(path) + + # we normalize the head to resolve parent directory symlinks, but not + # the tail, since we only want to uninstall symlinks, not their targets + path = os.path.join(normalize_path(head), os.path.normcase(tail)) + + if not os.path.exists(path): + return + if self._permitted(path): + self.paths.add(path) + else: + self._refuse.add(path) + + # __pycache__ files can show up after 'installed-files.txt' is created, + # due to imports + if os.path.splitext(path)[1] == '.py' and uses_pycache: + self.add(cache_from_source(path)) + + def add_pth(self, pth_file, entry): + # type: (str, str) -> None + pth_file = normalize_path(pth_file) + if self._permitted(pth_file): + if pth_file not in self.pth: + self.pth[pth_file] = UninstallPthEntries(pth_file) + self.pth[pth_file].add(entry) + else: + self._refuse.add(pth_file) + + def remove(self, auto_confirm=False, verbose=False): + # type: (bool, bool) -> None + """Remove paths in ``self.paths`` with confirmation (unless + ``auto_confirm`` is True).""" + + if not self.paths: + logger.info( + "Can't uninstall '%s'. No files were found to uninstall.", + self.dist.project_name, + ) + return + + dist_name_version = ( + self.dist.project_name + "-" + self.dist.version + ) + logger.info('Uninstalling %s:', dist_name_version) + + with indent_log(): + if auto_confirm or self._allowed_to_proceed(verbose): + moved = self._moved_paths + + for_rename = compress_for_rename(self.paths) + + for path in sorted(compact(for_rename)): + moved.stash(path) + logger.debug('Removing file or directory %s', path) + + for pth in self.pth.values(): + pth.remove() + + logger.info('Successfully uninstalled %s', dist_name_version) + + def _allowed_to_proceed(self, verbose): + # type: (bool) -> bool + """Display which files would be deleted and prompt for confirmation + """ + + def _display(msg, paths): + # type: (str, Iterable[str]) -> None + if not paths: + return + + logger.info(msg) + with indent_log(): + for path in sorted(compact(paths)): + logger.info(path) + + if not verbose: + will_remove, will_skip = compress_for_output_listing(self.paths) + else: + # In verbose mode, display all the files that are going to be + # deleted. + will_remove = set(self.paths) + will_skip = set() + + _display('Would remove:', will_remove) + _display('Would not remove (might be manually added):', will_skip) + _display('Would not remove (outside of prefix):', self._refuse) + if verbose: + _display('Will actually move:', compress_for_rename(self.paths)) + + return ask('Proceed (y/n)? ', ('y', 'n')) == 'y' + + def rollback(self): + # type: () -> None + """Rollback the changes previously made by remove().""" + if not self._moved_paths.can_rollback: + logger.error( + "Can't roll back %s; was not uninstalled", + self.dist.project_name, + ) + return + logger.info('Rolling back uninstall of %s', self.dist.project_name) + self._moved_paths.rollback() + for pth in self.pth.values(): + pth.rollback() + + def commit(self): + # type: () -> None + """Remove temporary save dir: rollback will no longer be possible.""" + self._moved_paths.commit() + + @classmethod + def from_dist(cls, dist): + # type: (Distribution) -> UninstallPathSet + dist_path = normalize_path(dist.location) + if not dist_is_local(dist): + logger.info( + "Not uninstalling %s at %s, outside environment %s", + dist.key, + dist_path, + sys.prefix, + ) + return cls(dist) + + if dist_path in {p for p in {sysconfig.get_path("stdlib"), + sysconfig.get_path("platstdlib")} + if p}: + logger.info( + "Not uninstalling %s at %s, as it is in the standard library.", + dist.key, + dist_path, + ) + return cls(dist) + + paths_to_remove = cls(dist) + develop_egg_link = egg_link_path(dist) + develop_egg_link_egg_info = '{}.egg-info'.format( + pkg_resources.to_filename(dist.project_name)) + egg_info_exists = dist.egg_info and os.path.exists(dist.egg_info) + # Special case for distutils installed package + distutils_egg_info = getattr(dist._provider, 'path', None) + + # Uninstall cases order do matter as in the case of 2 installs of the + # same package, pip needs to uninstall the currently detected version + if (egg_info_exists and dist.egg_info.endswith('.egg-info') and + not dist.egg_info.endswith(develop_egg_link_egg_info)): + # if dist.egg_info.endswith(develop_egg_link_egg_info), we + # are in fact in the develop_egg_link case + paths_to_remove.add(dist.egg_info) + if dist.has_metadata('installed-files.txt'): + for installed_file in dist.get_metadata( + 'installed-files.txt').splitlines(): + path = os.path.normpath( + os.path.join(dist.egg_info, installed_file) + ) + paths_to_remove.add(path) + # FIXME: need a test for this elif block + # occurs with --single-version-externally-managed/--record outside + # of pip + elif dist.has_metadata('top_level.txt'): + if dist.has_metadata('namespace_packages.txt'): + namespaces = dist.get_metadata('namespace_packages.txt') + else: + namespaces = [] + for top_level_pkg in [ + p for p + in dist.get_metadata('top_level.txt').splitlines() + if p and p not in namespaces]: + path = os.path.join(dist.location, top_level_pkg) + paths_to_remove.add(path) + paths_to_remove.add(path + '.py') + paths_to_remove.add(path + '.pyc') + paths_to_remove.add(path + '.pyo') + + elif distutils_egg_info: + raise UninstallationError( + "Cannot uninstall {!r}. It is a distutils installed project " + "and thus we cannot accurately determine which files belong " + "to it which would lead to only a partial uninstall.".format( + dist.project_name, + ) + ) + + elif dist.location.endswith('.egg'): + # package installed by easy_install + # We cannot match on dist.egg_name because it can slightly vary + # i.e. setuptools-0.6c11-py2.6.egg vs setuptools-0.6rc11-py2.6.egg + paths_to_remove.add(dist.location) + easy_install_egg = os.path.split(dist.location)[1] + easy_install_pth = os.path.join(os.path.dirname(dist.location), + 'easy-install.pth') + paths_to_remove.add_pth(easy_install_pth, './' + easy_install_egg) + + elif egg_info_exists and dist.egg_info.endswith('.dist-info'): + for path in uninstallation_paths(dist): + paths_to_remove.add(path) + + elif develop_egg_link: + # develop egg + with open(develop_egg_link, 'r') as fh: + link_pointer = os.path.normcase(fh.readline().strip()) + assert (link_pointer == dist.location), ( + 'Egg-link %s does not match installed location of %s ' + '(at %s)' % (link_pointer, dist.project_name, dist.location) + ) + paths_to_remove.add(develop_egg_link) + easy_install_pth = os.path.join(os.path.dirname(develop_egg_link), + 'easy-install.pth') + paths_to_remove.add_pth(easy_install_pth, dist.location) + + else: + logger.debug( + 'Not sure how to uninstall: %s - Check: %s', + dist, dist.location, + ) + + # find distutils scripts= scripts + if dist.has_metadata('scripts') and dist.metadata_isdir('scripts'): + for script in dist.metadata_listdir('scripts'): + if dist_in_usersite(dist): + bin_dir = bin_user + else: + bin_dir = bin_py + paths_to_remove.add(os.path.join(bin_dir, script)) + if WINDOWS: + paths_to_remove.add(os.path.join(bin_dir, script) + '.bat') + + # find console_scripts + _scripts_to_remove = [] + console_scripts = dist.get_entry_map(group='console_scripts') + for name in console_scripts.keys(): + _scripts_to_remove.extend(_script_names(dist, name, False)) + # find gui_scripts + gui_scripts = dist.get_entry_map(group='gui_scripts') + for name in gui_scripts.keys(): + _scripts_to_remove.extend(_script_names(dist, name, True)) + + for s in _scripts_to_remove: + paths_to_remove.add(s) + + return paths_to_remove + + +class UninstallPthEntries(object): + def __init__(self, pth_file): + # type: (str) -> None + if not os.path.isfile(pth_file): + raise UninstallationError( + "Cannot remove entries from nonexistent file %s" % pth_file + ) + self.file = pth_file + self.entries = set() # type: Set[str] + self._saved_lines = None # type: Optional[List[bytes]] + + def add(self, entry): + # type: (str) -> None + entry = os.path.normcase(entry) + # On Windows, os.path.normcase converts the entry to use + # backslashes. This is correct for entries that describe absolute + # paths outside of site-packages, but all the others use forward + # slashes. + # os.path.splitdrive is used instead of os.path.isabs because isabs + # treats non-absolute paths with drive letter markings like c:foo\bar + # as absolute paths. It also does not recognize UNC paths if they don't + # have more than "\\sever\share". Valid examples: "\\server\share\" or + # "\\server\share\folder". Python 2.7.8+ support UNC in splitdrive. + if WINDOWS and not os.path.splitdrive(entry)[0]: + entry = entry.replace('\\', '/') + self.entries.add(entry) + + def remove(self): + # type: () -> None + logger.debug('Removing pth entries from %s:', self.file) + with open(self.file, 'rb') as fh: + # windows uses '\r\n' with py3k, but uses '\n' with py2.x + lines = fh.readlines() + self._saved_lines = lines + if any(b'\r\n' in line for line in lines): + endline = '\r\n' + else: + endline = '\n' + # handle missing trailing newline + if lines and not lines[-1].endswith(endline.encode("utf-8")): + lines[-1] = lines[-1] + endline.encode("utf-8") + for entry in self.entries: + try: + logger.debug('Removing entry: %s', entry) + lines.remove((entry + endline).encode("utf-8")) + except ValueError: + pass + with open(self.file, 'wb') as fh: + fh.writelines(lines) + + def rollback(self): + # type: () -> bool + if self._saved_lines is None: + logger.error( + 'Cannot roll back changes to %s, none were made', self.file + ) + return False + logger.debug('Rolling %s back to previous state', self.file) + with open(self.file, 'wb') as fh: + fh.writelines(self._saved_lines) + return True diff --git a/Lib/site-packages/pip/_internal/self_outdated_check.py b/Lib/site-packages/pip/_internal/self_outdated_check.py new file mode 100644 index 0000000..8fc3c59 --- /dev/null +++ b/Lib/site-packages/pip/_internal/self_outdated_check.py @@ -0,0 +1,242 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import datetime +import hashlib +import json +import logging +import os.path +import sys + +from pip._vendor import pkg_resources +from pip._vendor.packaging import version as packaging_version +from pip._vendor.six import ensure_binary + +from pip._internal.index.collector import LinkCollector +from pip._internal.index.package_finder import PackageFinder +from pip._internal.models.search_scope import SearchScope +from pip._internal.models.selection_prefs import SelectionPreferences +from pip._internal.utils.filesystem import ( + adjacent_tmp_file, + check_path_owner, + replace, +) +from pip._internal.utils.misc import ( + ensure_dir, + get_installed_version, + redact_auth_from_url, +) +from pip._internal.utils.packaging import get_installer +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + import optparse + from optparse import Values + from typing import Any, Dict, Text, Union + + from pip._internal.network.session import PipSession + + +SELFCHECK_DATE_FMT = "%Y-%m-%dT%H:%M:%SZ" + + +logger = logging.getLogger(__name__) + + +def make_link_collector( + session, # type: PipSession + options, # type: Values + suppress_no_index=False, # type: bool +): + # type: (...) -> LinkCollector + """ + :param session: The Session to use to make requests. + :param suppress_no_index: Whether to ignore the --no-index option + when constructing the SearchScope object. + """ + index_urls = [options.index_url] + options.extra_index_urls + if options.no_index and not suppress_no_index: + logger.debug( + 'Ignoring indexes: %s', + ','.join(redact_auth_from_url(url) for url in index_urls), + ) + index_urls = [] + + # Make sure find_links is a list before passing to create(). + find_links = options.find_links or [] + + search_scope = SearchScope.create( + find_links=find_links, index_urls=index_urls, + ) + + link_collector = LinkCollector(session=session, search_scope=search_scope) + + return link_collector + + +def _get_statefile_name(key): + # type: (Union[str, Text]) -> str + key_bytes = ensure_binary(key) + name = hashlib.sha224(key_bytes).hexdigest() + return name + + +class SelfCheckState(object): + def __init__(self, cache_dir): + # type: (str) -> None + self.state = {} # type: Dict[str, Any] + self.statefile_path = None + + # Try to load the existing state + if cache_dir: + self.statefile_path = os.path.join( + cache_dir, "selfcheck", _get_statefile_name(self.key) + ) + try: + with open(self.statefile_path) as statefile: + self.state = json.load(statefile) + except (IOError, ValueError, KeyError): + # Explicitly suppressing exceptions, since we don't want to + # error out if the cache file is invalid. + pass + + @property + def key(self): + return sys.prefix + + def save(self, pypi_version, current_time): + # type: (str, datetime.datetime) -> None + # If we do not have a path to cache in, don't bother saving. + if not self.statefile_path: + return + + # Check to make sure that we own the directory + if not check_path_owner(os.path.dirname(self.statefile_path)): + return + + # Now that we've ensured the directory is owned by this user, we'll go + # ahead and make sure that all our directories are created. + ensure_dir(os.path.dirname(self.statefile_path)) + + state = { + # Include the key so it's easy to tell which pip wrote the + # file. + "key": self.key, + "last_check": current_time.strftime(SELFCHECK_DATE_FMT), + "pypi_version": pypi_version, + } + + text = json.dumps(state, sort_keys=True, separators=(",", ":")) + + with adjacent_tmp_file(self.statefile_path) as f: + f.write(ensure_binary(text)) + + try: + # Since we have a prefix-specific state file, we can just + # overwrite whatever is there, no need to check. + replace(f.name, self.statefile_path) + except OSError: + # Best effort. + pass + + +def was_installed_by_pip(pkg): + # type: (str) -> bool + """Checks whether pkg was installed by pip + + This is used not to display the upgrade message when pip is in fact + installed by system package manager, such as dnf on Fedora. + """ + try: + dist = pkg_resources.get_distribution(pkg) + return "pip" == get_installer(dist) + except pkg_resources.DistributionNotFound: + return False + + +def pip_self_version_check(session, options): + # type: (PipSession, optparse.Values) -> None + """Check for an update for pip. + + Limit the frequency of checks to once per week. State is stored either in + the active virtualenv or in the user's USER_CACHE_DIR keyed off the prefix + of the pip script path. + """ + installed_version = get_installed_version("pip") + if not installed_version: + return + + pip_version = packaging_version.parse(installed_version) + pypi_version = None + + try: + state = SelfCheckState(cache_dir=options.cache_dir) + + current_time = datetime.datetime.utcnow() + # Determine if we need to refresh the state + if "last_check" in state.state and "pypi_version" in state.state: + last_check = datetime.datetime.strptime( + state.state["last_check"], + SELFCHECK_DATE_FMT + ) + if (current_time - last_check).total_seconds() < 7 * 24 * 60 * 60: + pypi_version = state.state["pypi_version"] + + # Refresh the version if we need to or just see if we need to warn + if pypi_version is None: + # Lets use PackageFinder to see what the latest pip version is + link_collector = make_link_collector( + session, + options=options, + suppress_no_index=True, + ) + + # Pass allow_yanked=False so we don't suggest upgrading to a + # yanked version. + selection_prefs = SelectionPreferences( + allow_yanked=False, + allow_all_prereleases=False, # Explicitly set to False + ) + + finder = PackageFinder.create( + link_collector=link_collector, + selection_prefs=selection_prefs, + ) + best_candidate = finder.find_best_candidate("pip").best_candidate + if best_candidate is None: + return + pypi_version = str(best_candidate.version) + + # save that we've performed a check + state.save(pypi_version, current_time) + + remote_version = packaging_version.parse(pypi_version) + + local_version_is_older = ( + pip_version < remote_version and + pip_version.base_version != remote_version.base_version and + was_installed_by_pip('pip') + ) + + # Determine if our pypi_version is older + if not local_version_is_older: + return + + # We cannot tell how the current pip is available in the current + # command context, so be pragmatic here and suggest the command + # that's always available. This does not accommodate spaces in + # `sys.executable`. + pip_cmd = "{} -m pip".format(sys.executable) + logger.warning( + "You are using pip version %s; however, version %s is " + "available.\nYou should consider upgrading via the " + "'%s install --upgrade pip' command.", + pip_version, pypi_version, pip_cmd + ) + except Exception: + logger.debug( + "There was an error checking the latest version of pip", + exc_info=True, + ) diff --git a/Lib/site-packages/pip/_internal/utils/__init__.py b/Lib/site-packages/pip/_internal/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Lib/site-packages/pip/_internal/utils/appdirs.py b/Lib/site-packages/pip/_internal/utils/appdirs.py new file mode 100644 index 0000000..251c5fd --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/appdirs.py @@ -0,0 +1,41 @@ +""" +This code wraps the vendored appdirs module to so the return values are +compatible for the current pip code base. + +The intention is to rewrite current usages gradually, keeping the tests pass, +and eventually drop this after all usages are changed. +""" + +from __future__ import absolute_import + +import os + +from pip._vendor import appdirs as _appdirs + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List + + +def user_cache_dir(appname): + # type: (str) -> str + return _appdirs.user_cache_dir(appname, appauthor=False) + + +def user_config_dir(appname, roaming=True): + # type: (str, bool) -> str + return _appdirs.user_config_dir(appname, appauthor=False, roaming=roaming) + + +def user_data_dir(appname, roaming=False): + # type: (str, bool) -> str + return _appdirs.user_data_dir(appname, appauthor=False, roaming=roaming) + + +def site_config_dirs(appname): + # type: (str) -> List[str] + dirval = _appdirs.site_config_dir(appname, appauthor=False, multipath=True) + if _appdirs.system not in ["win32", "darwin"]: + return dirval.split(os.pathsep) + return [dirval] diff --git a/Lib/site-packages/pip/_internal/utils/compat.py b/Lib/site-packages/pip/_internal/utils/compat.py new file mode 100644 index 0000000..6efa52a --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/compat.py @@ -0,0 +1,269 @@ +"""Stuff that differs in different Python versions and platform +distributions.""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import, division + +import codecs +import locale +import logging +import os +import shutil +import sys + +from pip._vendor.six import PY2, text_type + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional, Text, Tuple, Union + +try: + import ipaddress +except ImportError: + try: + from pip._vendor import ipaddress # type: ignore + except ImportError: + import ipaddr as ipaddress # type: ignore + ipaddress.ip_address = ipaddress.IPAddress # type: ignore + ipaddress.ip_network = ipaddress.IPNetwork # type: ignore + + +__all__ = [ + "ipaddress", "uses_pycache", "console_to_str", + "get_path_uid", "stdlib_pkgs", "WINDOWS", "samefile", "get_terminal_size", +] + + +logger = logging.getLogger(__name__) + +if PY2: + import imp + + try: + cache_from_source = imp.cache_from_source # type: ignore + except AttributeError: + # does not use __pycache__ + cache_from_source = None + + uses_pycache = cache_from_source is not None +else: + uses_pycache = True + from importlib.util import cache_from_source + + +if PY2: + # In Python 2.7, backslashreplace exists + # but does not support use for decoding. + # We implement our own replace handler for this + # situation, so that we can consistently use + # backslash replacement for all versions. + def backslashreplace_decode_fn(err): + raw_bytes = (err.object[i] for i in range(err.start, err.end)) + # Python 2 gave us characters - convert to numeric bytes + raw_bytes = (ord(b) for b in raw_bytes) + return u"".join(u"\\x%x" % c for c in raw_bytes), err.end + codecs.register_error( + "backslashreplace_decode", + backslashreplace_decode_fn, + ) + backslashreplace_decode = "backslashreplace_decode" +else: + backslashreplace_decode = "backslashreplace" + + +def has_tls(): + # type: () -> bool + try: + import _ssl # noqa: F401 # ignore unused + return True + except ImportError: + pass + + from pip._vendor.urllib3.util import IS_PYOPENSSL + return IS_PYOPENSSL + + +def str_to_display(data, desc=None): + # type: (Union[bytes, Text], Optional[str]) -> Text + """ + For display or logging purposes, convert a bytes object (or text) to + text (e.g. unicode in Python 2) safe for output. + + :param desc: An optional phrase describing the input data, for use in + the log message if a warning is logged. Defaults to "Bytes object". + + This function should never error out and so can take a best effort + approach. It is okay to be lossy if needed since the return value is + just for display. + + We assume the data is in the locale preferred encoding. If it won't + decode properly, we warn the user but decode as best we can. + + We also ensure that the output can be safely written to standard output + without encoding errors. + """ + if isinstance(data, text_type): + return data + + # Otherwise, data is a bytes object (str in Python 2). + # First, get the encoding we assume. This is the preferred + # encoding for the locale, unless that is not found, or + # it is ASCII, in which case assume UTF-8 + encoding = locale.getpreferredencoding() + if (not encoding) or codecs.lookup(encoding).name == "ascii": + encoding = "utf-8" + + # Now try to decode the data - if we fail, warn the user and + # decode with replacement. + try: + decoded_data = data.decode(encoding) + except UnicodeDecodeError: + if desc is None: + desc = 'Bytes object' + msg_format = '{} does not appear to be encoded as %s'.format(desc) + logger.warning(msg_format, encoding) + decoded_data = data.decode(encoding, errors=backslashreplace_decode) + + # Make sure we can print the output, by encoding it to the output + # encoding with replacement of unencodable characters, and then + # decoding again. + # We use stderr's encoding because it's less likely to be + # redirected and if we don't find an encoding we skip this + # step (on the assumption that output is wrapped by something + # that won't fail). + # The double getattr is to deal with the possibility that we're + # being called in a situation where sys.__stderr__ doesn't exist, + # or doesn't have an encoding attribute. Neither of these cases + # should occur in normal pip use, but there's no harm in checking + # in case people use pip in (unsupported) unusual situations. + output_encoding = getattr(getattr(sys, "__stderr__", None), + "encoding", None) + + if output_encoding: + output_encoded = decoded_data.encode( + output_encoding, + errors="backslashreplace" + ) + decoded_data = output_encoded.decode(output_encoding) + + return decoded_data + + +def console_to_str(data): + # type: (bytes) -> Text + """Return a string, safe for output, of subprocess output. + """ + return str_to_display(data, desc='Subprocess output') + + +def get_path_uid(path): + # type: (str) -> int + """ + Return path's uid. + + Does not follow symlinks: + https://github.com/pypa/pip/pull/935#discussion_r5307003 + + Placed this function in compat due to differences on AIX and + Jython, that should eventually go away. + + :raises OSError: When path is a symlink or can't be read. + """ + if hasattr(os, 'O_NOFOLLOW'): + fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW) + file_uid = os.fstat(fd).st_uid + os.close(fd) + else: # AIX and Jython + # WARNING: time of check vulnerability, but best we can do w/o NOFOLLOW + if not os.path.islink(path): + # older versions of Jython don't have `os.fstat` + file_uid = os.stat(path).st_uid + else: + # raise OSError for parity with os.O_NOFOLLOW above + raise OSError( + "%s is a symlink; Will not return uid for symlinks" % path + ) + return file_uid + + +def expanduser(path): + # type: (str) -> str + """ + Expand ~ and ~user constructions. + + Includes a workaround for https://bugs.python.org/issue14768 + """ + expanded = os.path.expanduser(path) + if path.startswith('~/') and expanded.startswith('//'): + expanded = expanded[1:] + return expanded + + +# packages in the stdlib that may have installation metadata, but should not be +# considered 'installed'. this theoretically could be determined based on +# dist.location (py27:`sysconfig.get_paths()['stdlib']`, +# py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may +# make this ineffective, so hard-coding +stdlib_pkgs = {"python", "wsgiref", "argparse"} + + +# windows detection, covers cpython and ironpython +WINDOWS = (sys.platform.startswith("win") or + (sys.platform == 'cli' and os.name == 'nt')) + + +def samefile(file1, file2): + # type: (str, str) -> bool + """Provide an alternative for os.path.samefile on Windows/Python2""" + if hasattr(os.path, 'samefile'): + return os.path.samefile(file1, file2) + else: + path1 = os.path.normcase(os.path.abspath(file1)) + path2 = os.path.normcase(os.path.abspath(file2)) + return path1 == path2 + + +if hasattr(shutil, 'get_terminal_size'): + def get_terminal_size(): + # type: () -> Tuple[int, int] + """ + Returns a tuple (x, y) representing the width(x) and the height(y) + in characters of the terminal window. + """ + return tuple(shutil.get_terminal_size()) # type: ignore +else: + def get_terminal_size(): + # type: () -> Tuple[int, int] + """ + Returns a tuple (x, y) representing the width(x) and the height(y) + in characters of the terminal window. + """ + def ioctl_GWINSZ(fd): + try: + import fcntl + import termios + import struct + cr = struct.unpack_from( + 'hh', + fcntl.ioctl(fd, termios.TIOCGWINSZ, '12345678') + ) + except Exception: + return None + if cr == (0, 0): + return None + return cr + cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2) + if not cr: + if sys.platform != "win32": + try: + fd = os.open(os.ctermid(), os.O_RDONLY) + cr = ioctl_GWINSZ(fd) + os.close(fd) + except Exception: + pass + if not cr: + cr = (os.environ.get('LINES', 25), os.environ.get('COLUMNS', 80)) + return int(cr[1]), int(cr[0]) diff --git a/Lib/site-packages/pip/_internal/utils/deprecation.py b/Lib/site-packages/pip/_internal/utils/deprecation.py new file mode 100644 index 0000000..2f20cfd --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/deprecation.py @@ -0,0 +1,104 @@ +""" +A module that implements tooling to enable easy warnings about deprecations. +""" + +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import warnings + +from pip._vendor.packaging.version import parse + +from pip import __version__ as current_version +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Any, Optional + + +DEPRECATION_MSG_PREFIX = "DEPRECATION: " + + +class PipDeprecationWarning(Warning): + pass + + +_original_showwarning = None # type: Any + + +# Warnings <-> Logging Integration +def _showwarning(message, category, filename, lineno, file=None, line=None): + if file is not None: + if _original_showwarning is not None: + _original_showwarning( + message, category, filename, lineno, file, line, + ) + elif issubclass(category, PipDeprecationWarning): + # We use a specially named logger which will handle all of the + # deprecation messages for pip. + logger = logging.getLogger("pip._internal.deprecations") + logger.warning(message) + else: + _original_showwarning( + message, category, filename, lineno, file, line, + ) + + +def install_warning_logger(): + # type: () -> None + # Enable our Deprecation Warnings + warnings.simplefilter("default", PipDeprecationWarning, append=True) + + global _original_showwarning + + if _original_showwarning is None: + _original_showwarning = warnings.showwarning + warnings.showwarning = _showwarning + + +def deprecated(reason, replacement, gone_in, issue=None): + # type: (str, Optional[str], Optional[str], Optional[int]) -> None + """Helper to deprecate existing functionality. + + reason: + Textual reason shown to the user about why this functionality has + been deprecated. + replacement: + Textual suggestion shown to the user about what alternative + functionality they can use. + gone_in: + The version of pip does this functionality should get removed in. + Raises errors if pip's current version is greater than or equal to + this. + issue: + Issue number on the tracker that would serve as a useful place for + users to find related discussion and provide feedback. + + Always pass replacement, gone_in and issue as keyword arguments for clarity + at the call site. + """ + + # Construct a nice message. + # This is eagerly formatted as we want it to get logged as if someone + # typed this entire message out. + sentences = [ + (reason, DEPRECATION_MSG_PREFIX + "{}"), + (gone_in, "pip {} will remove support for this functionality."), + (replacement, "A possible replacement is {}."), + (issue, ( + "You can find discussion regarding this at " + "https://github.com/pypa/pip/issues/{}." + )), + ] + message = " ".join( + template.format(val) for val, template in sentences if val is not None + ) + + # Raise as an error if it has to be removed. + if gone_in is not None and parse(current_version) >= parse(gone_in): + raise PipDeprecationWarning(message) + + warnings.warn(message, category=PipDeprecationWarning, stacklevel=2) diff --git a/Lib/site-packages/pip/_internal/utils/distutils_args.py b/Lib/site-packages/pip/_internal/utils/distutils_args.py new file mode 100644 index 0000000..e38e402 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/distutils_args.py @@ -0,0 +1,48 @@ +from distutils.errors import DistutilsArgError +from distutils.fancy_getopt import FancyGetopt + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Dict, List + + +_options = [ + ("exec-prefix=", None, ""), + ("home=", None, ""), + ("install-base=", None, ""), + ("install-data=", None, ""), + ("install-headers=", None, ""), + ("install-lib=", None, ""), + ("install-platlib=", None, ""), + ("install-purelib=", None, ""), + ("install-scripts=", None, ""), + ("prefix=", None, ""), + ("root=", None, ""), + ("user", None, ""), +] + + +# typeshed doesn't permit Tuple[str, None, str], see python/typeshed#3469. +_distutils_getopt = FancyGetopt(_options) # type: ignore + + +def parse_distutils_args(args): + # type: (List[str]) -> Dict[str, str] + """Parse provided arguments, returning an object that has the + matched arguments. + + Any unknown arguments are ignored. + """ + result = {} + for arg in args: + try: + _, match = _distutils_getopt.getopt(args=[arg]) + except DistutilsArgError: + # We don't care about any other options, which here may be + # considered unrecognized since our option list is not + # exhaustive. + pass + else: + result.update(match.__dict__) + return result diff --git a/Lib/site-packages/pip/_internal/utils/encoding.py b/Lib/site-packages/pip/_internal/utils/encoding.py new file mode 100644 index 0000000..ab4d4b9 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/encoding.py @@ -0,0 +1,42 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import codecs +import locale +import re +import sys + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Tuple, Text + +BOMS = [ + (codecs.BOM_UTF8, 'utf-8'), + (codecs.BOM_UTF16, 'utf-16'), + (codecs.BOM_UTF16_BE, 'utf-16-be'), + (codecs.BOM_UTF16_LE, 'utf-16-le'), + (codecs.BOM_UTF32, 'utf-32'), + (codecs.BOM_UTF32_BE, 'utf-32-be'), + (codecs.BOM_UTF32_LE, 'utf-32-le'), +] # type: List[Tuple[bytes, Text]] + +ENCODING_RE = re.compile(br'coding[:=]\s*([-\w.]+)') + + +def auto_decode(data): + # type: (bytes) -> Text + """Check a bytes string for a BOM to correctly detect the encoding + + Fallback to locale.getpreferredencoding(False) like open() on Python3""" + for bom, encoding in BOMS: + if data.startswith(bom): + return data[len(bom):].decode(encoding) + # Lets check the first two lines as in PEP263 + for line in data.split(b'\n')[:2]: + if line[0:1] == b'#' and ENCODING_RE.search(line): + encoding = ENCODING_RE.search(line).groups()[0].decode('ascii') + return data.decode(encoding) + return data.decode( + locale.getpreferredencoding(False) or sys.getdefaultencoding(), + ) diff --git a/Lib/site-packages/pip/_internal/utils/entrypoints.py b/Lib/site-packages/pip/_internal/utils/entrypoints.py new file mode 100644 index 0000000..befd01c --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/entrypoints.py @@ -0,0 +1,31 @@ +import sys + +from pip._internal.cli.main import main +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional, List + + +def _wrapper(args=None): + # type: (Optional[List[str]]) -> int + """Central wrapper for all old entrypoints. + + Historically pip has had several entrypoints defined. Because of issues + arising from PATH, sys.path, multiple Pythons, their interactions, and most + of them having a pip installed, users suffer every time an entrypoint gets + moved. + + To alleviate this pain, and provide a mechanism for warning users and + directing them to an appropriate place for help, we now define all of + our old entrypoints as wrappers for the current one. + """ + sys.stderr.write( + "WARNING: pip is being invoked by an old script wrapper. This will " + "fail in a future version of pip.\n" + "Please see https://github.com/pypa/pip/issues/5599 for advice on " + "fixing the underlying issue.\n" + "To avoid this problem you can invoke Python with '-m pip' instead of " + "running pip directly.\n" + ) + return main(args) diff --git a/Lib/site-packages/pip/_internal/utils/filesystem.py b/Lib/site-packages/pip/_internal/utils/filesystem.py new file mode 100644 index 0000000..6f1537e --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/filesystem.py @@ -0,0 +1,171 @@ +import errno +import os +import os.path +import random +import shutil +import stat +import sys +from contextlib import contextmanager +from tempfile import NamedTemporaryFile + +# NOTE: retrying is not annotated in typeshed as on 2017-07-17, which is +# why we ignore the type on this import. +from pip._vendor.retrying import retry # type: ignore +from pip._vendor.six import PY2 + +from pip._internal.utils.compat import get_path_uid +from pip._internal.utils.typing import MYPY_CHECK_RUNNING, cast + +if MYPY_CHECK_RUNNING: + from typing import BinaryIO, Iterator + + class NamedTemporaryFileResult(BinaryIO): + @property + def file(self): + # type: () -> BinaryIO + pass + + +def check_path_owner(path): + # type: (str) -> bool + # If we don't have a way to check the effective uid of this process, then + # we'll just assume that we own the directory. + if sys.platform == "win32" or not hasattr(os, "geteuid"): + return True + + assert os.path.isabs(path) + + previous = None + while path != previous: + if os.path.lexists(path): + # Check if path is writable by current user. + if os.geteuid() == 0: + # Special handling for root user in order to handle properly + # cases where users use sudo without -H flag. + try: + path_uid = get_path_uid(path) + except OSError: + return False + return path_uid == 0 + else: + return os.access(path, os.W_OK) + else: + previous, path = path, os.path.dirname(path) + return False # assume we don't own the path + + +def copy2_fixed(src, dest): + # type: (str, str) -> None + """Wrap shutil.copy2() but map errors copying socket files to + SpecialFileError as expected. + + See also https://bugs.python.org/issue37700. + """ + try: + shutil.copy2(src, dest) + except (OSError, IOError): + for f in [src, dest]: + try: + is_socket_file = is_socket(f) + except OSError: + # An error has already occurred. Another error here is not + # a problem and we can ignore it. + pass + else: + if is_socket_file: + raise shutil.SpecialFileError("`%s` is a socket" % f) + + raise + + +def is_socket(path): + # type: (str) -> bool + return stat.S_ISSOCK(os.lstat(path).st_mode) + + +@contextmanager +def adjacent_tmp_file(path): + # type: (str) -> Iterator[NamedTemporaryFileResult] + """Given a path to a file, open a temp file next to it securely and ensure + it is written to disk after the context reaches its end. + """ + with NamedTemporaryFile( + delete=False, + dir=os.path.dirname(path), + prefix=os.path.basename(path), + suffix='.tmp', + ) as f: + result = cast('NamedTemporaryFileResult', f) + try: + yield result + finally: + result.file.flush() + os.fsync(result.file.fileno()) + + +_replace_retry = retry(stop_max_delay=1000, wait_fixed=250) + +if PY2: + @_replace_retry + def replace(src, dest): + # type: (str, str) -> None + try: + os.rename(src, dest) + except OSError: + os.remove(dest) + os.rename(src, dest) + +else: + replace = _replace_retry(os.replace) + + +# test_writable_dir and _test_writable_dir_win are copied from Flit, +# with the author's agreement to also place them under pip's license. +def test_writable_dir(path): + # type: (str) -> bool + """Check if a directory is writable. + + Uses os.access() on POSIX, tries creating files on Windows. + """ + # If the directory doesn't exist, find the closest parent that does. + while not os.path.isdir(path): + parent = os.path.dirname(path) + if parent == path: + break # Should never get here, but infinite loops are bad + path = parent + + if os.name == 'posix': + return os.access(path, os.W_OK) + + return _test_writable_dir_win(path) + + +def _test_writable_dir_win(path): + # type: (str) -> bool + # os.access doesn't work on Windows: http://bugs.python.org/issue2528 + # and we can't use tempfile: http://bugs.python.org/issue22107 + basename = 'accesstest_deleteme_fishfingers_custard_' + alphabet = 'abcdefghijklmnopqrstuvwxyz0123456789' + for i in range(10): + name = basename + ''.join(random.choice(alphabet) for _ in range(6)) + file = os.path.join(path, name) + try: + fd = os.open(file, os.O_RDWR | os.O_CREAT | os.O_EXCL) + except OSError as e: + if e.errno == errno.EEXIST: + continue + if e.errno == errno.EPERM: + # This could be because there's a directory with the same name. + # But it's highly unlikely there's a directory called that, + # so we'll assume it's because the parent dir is not writable. + return False + raise + else: + os.close(fd) + os.unlink(file) + return True + + # This should never be reached + raise EnvironmentError( + 'Unexpected condition testing for writable directory' + ) diff --git a/Lib/site-packages/pip/_internal/utils/filetypes.py b/Lib/site-packages/pip/_internal/utils/filetypes.py new file mode 100644 index 0000000..daa0ca7 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/filetypes.py @@ -0,0 +1,16 @@ +"""Filetype information. +""" +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Tuple + +WHEEL_EXTENSION = '.whl' +BZ2_EXTENSIONS = ('.tar.bz2', '.tbz') # type: Tuple[str, ...] +XZ_EXTENSIONS = ('.tar.xz', '.txz', '.tlz', + '.tar.lz', '.tar.lzma') # type: Tuple[str, ...] +ZIP_EXTENSIONS = ('.zip', WHEEL_EXTENSION) # type: Tuple[str, ...] +TAR_EXTENSIONS = ('.tar.gz', '.tgz', '.tar') # type: Tuple[str, ...] +ARCHIVE_EXTENSIONS = ( + ZIP_EXTENSIONS + BZ2_EXTENSIONS + TAR_EXTENSIONS + XZ_EXTENSIONS +) diff --git a/Lib/site-packages/pip/_internal/utils/glibc.py b/Lib/site-packages/pip/_internal/utils/glibc.py new file mode 100644 index 0000000..3610424 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/glibc.py @@ -0,0 +1,98 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import os +import sys + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional, Tuple + + +def glibc_version_string(): + # type: () -> Optional[str] + "Returns glibc version string, or None if not using glibc." + return glibc_version_string_confstr() or glibc_version_string_ctypes() + + +def glibc_version_string_confstr(): + # type: () -> Optional[str] + "Primary implementation of glibc_version_string using os.confstr." + # os.confstr is quite a bit faster than ctypes.DLL. It's also less likely + # to be broken or missing. This strategy is used in the standard library + # platform module: + # https://github.com/python/cpython/blob/fcf1d003bf4f0100c9d0921ff3d70e1127ca1b71/Lib/platform.py#L175-L183 + if sys.platform == "win32": + return None + try: + # os.confstr("CS_GNU_LIBC_VERSION") returns a string like "glibc 2.17": + _, version = os.confstr("CS_GNU_LIBC_VERSION").split() + except (AttributeError, OSError, ValueError): + # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... + return None + return version + + +def glibc_version_string_ctypes(): + # type: () -> Optional[str] + "Fallback implementation of glibc_version_string using ctypes." + + try: + import ctypes + except ImportError: + return None + + # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen + # manpage says, "If filename is NULL, then the returned handle is for the + # main program". This way we can let the linker do the work to figure out + # which libc our process is actually using. + process_namespace = ctypes.CDLL(None) + try: + gnu_get_libc_version = process_namespace.gnu_get_libc_version + except AttributeError: + # Symbol doesn't exist -> therefore, we are not linked to + # glibc. + return None + + # Call gnu_get_libc_version, which returns a string like "2.5" + gnu_get_libc_version.restype = ctypes.c_char_p + version_str = gnu_get_libc_version() + # py2 / py3 compatibility: + if not isinstance(version_str, str): + version_str = version_str.decode("ascii") + + return version_str + + +# platform.libc_ver regularly returns completely nonsensical glibc +# versions. E.g. on my computer, platform says: +# +# ~$ python2.7 -c 'import platform; print(platform.libc_ver())' +# ('glibc', '2.7') +# ~$ python3.5 -c 'import platform; print(platform.libc_ver())' +# ('glibc', '2.9') +# +# But the truth is: +# +# ~$ ldd --version +# ldd (Debian GLIBC 2.22-11) 2.22 +# +# This is unfortunate, because it means that the linehaul data on libc +# versions that was generated by pip 8.1.2 and earlier is useless and +# misleading. Solution: instead of using platform, use our code that actually +# works. +def libc_ver(): + # type: () -> Tuple[str, str] + """Try to determine the glibc version + + Returns a tuple of strings (lib, version) which default to empty strings + in case the lookup fails. + """ + glibc_version = glibc_version_string() + if glibc_version is None: + return ("", "") + else: + return ("glibc", glibc_version) diff --git a/Lib/site-packages/pip/_internal/utils/hashes.py b/Lib/site-packages/pip/_internal/utils/hashes.py new file mode 100644 index 0000000..4c41551 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/hashes.py @@ -0,0 +1,131 @@ +from __future__ import absolute_import + +import hashlib + +from pip._vendor.six import iteritems, iterkeys, itervalues + +from pip._internal.exceptions import ( + HashMismatch, + HashMissing, + InstallationError, +) +from pip._internal.utils.misc import read_chunks +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import ( + Dict, List, BinaryIO, NoReturn, Iterator + ) + from pip._vendor.six import PY3 + if PY3: + from hashlib import _Hash + else: + from hashlib import _hash as _Hash + + +# The recommended hash algo of the moment. Change this whenever the state of +# the art changes; it won't hurt backward compatibility. +FAVORITE_HASH = 'sha256' + + +# Names of hashlib algorithms allowed by the --hash option and ``pip hash`` +# Currently, those are the ones at least as collision-resistant as sha256. +STRONG_HASHES = ['sha256', 'sha384', 'sha512'] + + +class Hashes(object): + """A wrapper that builds multiple hashes at once and checks them against + known-good values + + """ + def __init__(self, hashes=None): + # type: (Dict[str, List[str]]) -> None + """ + :param hashes: A dict of algorithm names pointing to lists of allowed + hex digests + """ + self._allowed = {} if hashes is None else hashes + + @property + def digest_count(self): + # type: () -> int + return sum(len(digests) for digests in self._allowed.values()) + + def is_hash_allowed( + self, + hash_name, # type: str + hex_digest, # type: str + ): + # type: (...) -> bool + """Return whether the given hex digest is allowed.""" + return hex_digest in self._allowed.get(hash_name, []) + + def check_against_chunks(self, chunks): + # type: (Iterator[bytes]) -> None + """Check good hashes against ones built from iterable of chunks of + data. + + Raise HashMismatch if none match. + + """ + gots = {} + for hash_name in iterkeys(self._allowed): + try: + gots[hash_name] = hashlib.new(hash_name) + except (ValueError, TypeError): + raise InstallationError('Unknown hash name: %s' % hash_name) + + for chunk in chunks: + for hash in itervalues(gots): + hash.update(chunk) + + for hash_name, got in iteritems(gots): + if got.hexdigest() in self._allowed[hash_name]: + return + self._raise(gots) + + def _raise(self, gots): + # type: (Dict[str, _Hash]) -> NoReturn + raise HashMismatch(self._allowed, gots) + + def check_against_file(self, file): + # type: (BinaryIO) -> None + """Check good hashes against a file-like object + + Raise HashMismatch if none match. + + """ + return self.check_against_chunks(read_chunks(file)) + + def check_against_path(self, path): + # type: (str) -> None + with open(path, 'rb') as file: + return self.check_against_file(file) + + def __nonzero__(self): + # type: () -> bool + """Return whether I know any known-good hashes.""" + return bool(self._allowed) + + def __bool__(self): + # type: () -> bool + return self.__nonzero__() + + +class MissingHashes(Hashes): + """A workalike for Hashes used when we're missing a hash for a requirement + + It computes the actual hash of the requirement and raises a HashMissing + exception showing it to the user. + + """ + def __init__(self): + # type: () -> None + """Don't offer the ``hashes`` kwarg.""" + # Pass our favorite hash in to generate a "gotten hash". With the + # empty list, it will never match, so an error will always raise. + super(MissingHashes, self).__init__(hashes={FAVORITE_HASH: []}) + + def _raise(self, gots): + # type: (Dict[str, _Hash]) -> NoReturn + raise HashMissing(gots[FAVORITE_HASH].hexdigest()) diff --git a/Lib/site-packages/pip/_internal/utils/inject_securetransport.py b/Lib/site-packages/pip/_internal/utils/inject_securetransport.py new file mode 100644 index 0000000..5b93b1d --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/inject_securetransport.py @@ -0,0 +1,36 @@ +"""A helper module that injects SecureTransport, on import. + +The import should be done as early as possible, to ensure all requests and +sessions (or whatever) are created after injecting SecureTransport. + +Note that we only do the injection on macOS, when the linked OpenSSL is too +old to handle TLSv1.2. +""" + +import sys + + +def inject_securetransport(): + # type: () -> None + # Only relevant on macOS + if sys.platform != "darwin": + return + + try: + import ssl + except ImportError: + return + + # Checks for OpenSSL 1.0.1 + if ssl.OPENSSL_VERSION_NUMBER >= 0x1000100f: + return + + try: + from pip._vendor.urllib3.contrib import securetransport + except (ImportError, OSError): + return + + securetransport.inject_into_urllib3() + + +inject_securetransport() diff --git a/Lib/site-packages/pip/_internal/utils/logging.py b/Lib/site-packages/pip/_internal/utils/logging.py new file mode 100644 index 0000000..7767111 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/logging.py @@ -0,0 +1,398 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import contextlib +import errno +import logging +import logging.handlers +import os +import sys +from logging import Filter, getLogger + +from pip._vendor.six import PY2 + +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.deprecation import DEPRECATION_MSG_PREFIX +from pip._internal.utils.misc import ensure_dir + +try: + import threading +except ImportError: + import dummy_threading as threading # type: ignore + + +try: + # Use "import as" and set colorama in the else clause to avoid mypy + # errors and get the following correct revealed type for colorama: + # `Union[_importlib_modulespec.ModuleType, None]` + # Otherwise, we get an error like the following in the except block: + # > Incompatible types in assignment (expression has type "None", + # variable has type Module) + # TODO: eliminate the need to use "import as" once mypy addresses some + # of its issues with conditional imports. Here is an umbrella issue: + # https://github.com/python/mypy/issues/1297 + from pip._vendor import colorama as _colorama +# Lots of different errors can come from this, including SystemError and +# ImportError. +except Exception: + colorama = None +else: + # Import Fore explicitly rather than accessing below as colorama.Fore + # to avoid the following error running mypy: + # > Module has no attribute "Fore" + # TODO: eliminate the need to import Fore once mypy addresses some of its + # issues with conditional imports. This particular case could be an + # instance of the following issue (but also see the umbrella issue above): + # https://github.com/python/mypy/issues/3500 + from pip._vendor.colorama import Fore + + colorama = _colorama + + +_log_state = threading.local() +_log_state.indentation = 0 +subprocess_logger = getLogger('pip.subprocessor') + + +class BrokenStdoutLoggingError(Exception): + """ + Raised if BrokenPipeError occurs for the stdout stream while logging. + """ + pass + + +# BrokenPipeError does not exist in Python 2 and, in addition, manifests +# differently in Windows and non-Windows. +if WINDOWS: + # In Windows, a broken pipe can show up as EINVAL rather than EPIPE: + # https://bugs.python.org/issue19612 + # https://bugs.python.org/issue30418 + if PY2: + def _is_broken_pipe_error(exc_class, exc): + """See the docstring for non-Windows Python 3 below.""" + return (exc_class is IOError and + exc.errno in (errno.EINVAL, errno.EPIPE)) + else: + # In Windows, a broken pipe IOError became OSError in Python 3. + def _is_broken_pipe_error(exc_class, exc): + """See the docstring for non-Windows Python 3 below.""" + return ((exc_class is BrokenPipeError) or # noqa: F821 + (exc_class is OSError and + exc.errno in (errno.EINVAL, errno.EPIPE))) +elif PY2: + def _is_broken_pipe_error(exc_class, exc): + """See the docstring for non-Windows Python 3 below.""" + return (exc_class is IOError and exc.errno == errno.EPIPE) +else: + # Then we are in the non-Windows Python 3 case. + def _is_broken_pipe_error(exc_class, exc): + """ + Return whether an exception is a broken pipe error. + + Args: + exc_class: an exception class. + exc: an exception instance. + """ + return (exc_class is BrokenPipeError) # noqa: F821 + + +@contextlib.contextmanager +def indent_log(num=2): + """ + A context manager which will cause the log output to be indented for any + log messages emitted inside it. + """ + _log_state.indentation += num + try: + yield + finally: + _log_state.indentation -= num + + +def get_indentation(): + return getattr(_log_state, 'indentation', 0) + + +class IndentingFormatter(logging.Formatter): + + def __init__(self, *args, **kwargs): + """ + A logging.Formatter that obeys the indent_log() context manager. + + :param add_timestamp: A bool indicating output lines should be prefixed + with their record's timestamp. + """ + self.add_timestamp = kwargs.pop("add_timestamp", False) + super(IndentingFormatter, self).__init__(*args, **kwargs) + + def get_message_start(self, formatted, levelno): + """ + Return the start of the formatted log message (not counting the + prefix to add to each line). + """ + if levelno < logging.WARNING: + return '' + if formatted.startswith(DEPRECATION_MSG_PREFIX): + # Then the message already has a prefix. We don't want it to + # look like "WARNING: DEPRECATION: ...." + return '' + if levelno < logging.ERROR: + return 'WARNING: ' + + return 'ERROR: ' + + def format(self, record): + """ + Calls the standard formatter, but will indent all of the log message + lines by our current indentation level. + """ + formatted = super(IndentingFormatter, self).format(record) + message_start = self.get_message_start(formatted, record.levelno) + formatted = message_start + formatted + + prefix = '' + if self.add_timestamp: + # TODO: Use Formatter.default_time_format after dropping PY2. + t = self.formatTime(record, "%Y-%m-%dT%H:%M:%S") + prefix = '%s,%03d ' % (t, record.msecs) + prefix += " " * get_indentation() + formatted = "".join([ + prefix + line + for line in formatted.splitlines(True) + ]) + return formatted + + +def _color_wrap(*colors): + def wrapped(inp): + return "".join(list(colors) + [inp, colorama.Style.RESET_ALL]) + return wrapped + + +class ColorizedStreamHandler(logging.StreamHandler): + + # Don't build up a list of colors if we don't have colorama + if colorama: + COLORS = [ + # This needs to be in order from highest logging level to lowest. + (logging.ERROR, _color_wrap(Fore.RED)), + (logging.WARNING, _color_wrap(Fore.YELLOW)), + ] + else: + COLORS = [] + + def __init__(self, stream=None, no_color=None): + logging.StreamHandler.__init__(self, stream) + self._no_color = no_color + + if WINDOWS and colorama: + self.stream = colorama.AnsiToWin32(self.stream) + + def _using_stdout(self): + """ + Return whether the handler is using sys.stdout. + """ + if WINDOWS and colorama: + # Then self.stream is an AnsiToWin32 object. + return self.stream.wrapped is sys.stdout + + return self.stream is sys.stdout + + def should_color(self): + # Don't colorize things if we do not have colorama or if told not to + if not colorama or self._no_color: + return False + + real_stream = ( + self.stream if not isinstance(self.stream, colorama.AnsiToWin32) + else self.stream.wrapped + ) + + # If the stream is a tty we should color it + if hasattr(real_stream, "isatty") and real_stream.isatty(): + return True + + # If we have an ANSI term we should color it + if os.environ.get("TERM") == "ANSI": + return True + + # If anything else we should not color it + return False + + def format(self, record): + msg = logging.StreamHandler.format(self, record) + + if self.should_color(): + for level, color in self.COLORS: + if record.levelno >= level: + msg = color(msg) + break + + return msg + + # The logging module says handleError() can be customized. + def handleError(self, record): + exc_class, exc = sys.exc_info()[:2] + # If a broken pipe occurred while calling write() or flush() on the + # stdout stream in logging's Handler.emit(), then raise our special + # exception so we can handle it in main() instead of logging the + # broken pipe error and continuing. + if (exc_class and self._using_stdout() and + _is_broken_pipe_error(exc_class, exc)): + raise BrokenStdoutLoggingError() + + return super(ColorizedStreamHandler, self).handleError(record) + + +class BetterRotatingFileHandler(logging.handlers.RotatingFileHandler): + + def _open(self): + ensure_dir(os.path.dirname(self.baseFilename)) + return logging.handlers.RotatingFileHandler._open(self) + + +class MaxLevelFilter(Filter): + + def __init__(self, level): + self.level = level + + def filter(self, record): + return record.levelno < self.level + + +class ExcludeLoggerFilter(Filter): + + """ + A logging Filter that excludes records from a logger (or its children). + """ + + def filter(self, record): + # The base Filter class allows only records from a logger (or its + # children). + return not super(ExcludeLoggerFilter, self).filter(record) + + +def setup_logging(verbosity, no_color, user_log_file): + """Configures and sets up all of the logging + + Returns the requested logging level, as its integer value. + """ + + # Determine the level to be logging at. + if verbosity >= 1: + level = "DEBUG" + elif verbosity == -1: + level = "WARNING" + elif verbosity == -2: + level = "ERROR" + elif verbosity <= -3: + level = "CRITICAL" + else: + level = "INFO" + + level_number = getattr(logging, level) + + # The "root" logger should match the "console" level *unless* we also need + # to log to a user log file. + include_user_log = user_log_file is not None + if include_user_log: + additional_log_file = user_log_file + root_level = "DEBUG" + else: + additional_log_file = "/dev/null" + root_level = level + + # Disable any logging besides WARNING unless we have DEBUG level logging + # enabled for vendored libraries. + vendored_log_level = "WARNING" if level in ["INFO", "ERROR"] else "DEBUG" + + # Shorthands for clarity + log_streams = { + "stdout": "ext://sys.stdout", + "stderr": "ext://sys.stderr", + } + handler_classes = { + "stream": "pip._internal.utils.logging.ColorizedStreamHandler", + "file": "pip._internal.utils.logging.BetterRotatingFileHandler", + } + handlers = ["console", "console_errors", "console_subprocess"] + ( + ["user_log"] if include_user_log else [] + ) + + logging.config.dictConfig({ + "version": 1, + "disable_existing_loggers": False, + "filters": { + "exclude_warnings": { + "()": "pip._internal.utils.logging.MaxLevelFilter", + "level": logging.WARNING, + }, + "restrict_to_subprocess": { + "()": "logging.Filter", + "name": subprocess_logger.name, + }, + "exclude_subprocess": { + "()": "pip._internal.utils.logging.ExcludeLoggerFilter", + "name": subprocess_logger.name, + }, + }, + "formatters": { + "indent": { + "()": IndentingFormatter, + "format": "%(message)s", + }, + "indent_with_timestamp": { + "()": IndentingFormatter, + "format": "%(message)s", + "add_timestamp": True, + }, + }, + "handlers": { + "console": { + "level": level, + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stdout"], + "filters": ["exclude_subprocess", "exclude_warnings"], + "formatter": "indent", + }, + "console_errors": { + "level": "WARNING", + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stderr"], + "filters": ["exclude_subprocess"], + "formatter": "indent", + }, + # A handler responsible for logging to the console messages + # from the "subprocessor" logger. + "console_subprocess": { + "level": level, + "class": handler_classes["stream"], + "no_color": no_color, + "stream": log_streams["stderr"], + "filters": ["restrict_to_subprocess"], + "formatter": "indent", + }, + "user_log": { + "level": "DEBUG", + "class": handler_classes["file"], + "filename": additional_log_file, + "delay": True, + "formatter": "indent_with_timestamp", + }, + }, + "root": { + "level": root_level, + "handlers": handlers, + }, + "loggers": { + "pip._vendor": { + "level": vendored_log_level + } + }, + }) + + return level_number diff --git a/Lib/site-packages/pip/_internal/utils/marker_files.py b/Lib/site-packages/pip/_internal/utils/marker_files.py new file mode 100644 index 0000000..42ea814 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/marker_files.py @@ -0,0 +1,25 @@ +import os.path + +DELETE_MARKER_MESSAGE = '''\ +This file is placed here by pip to indicate the source was put +here by pip. + +Once this package is successfully installed this source code will be +deleted (unless you remove this file). +''' +PIP_DELETE_MARKER_FILENAME = 'pip-delete-this-directory.txt' + + +def has_delete_marker_file(directory): + # type: (str) -> bool + return os.path.exists(os.path.join(directory, PIP_DELETE_MARKER_FILENAME)) + + +def write_delete_marker_file(directory): + # type: (str) -> None + """ + Write the pip delete marker file into this directory. + """ + filepath = os.path.join(directory, PIP_DELETE_MARKER_FILENAME) + with open(filepath, 'w') as marker_fp: + marker_fp.write(DELETE_MARKER_MESSAGE) diff --git a/Lib/site-packages/pip/_internal/utils/misc.py b/Lib/site-packages/pip/_internal/utils/misc.py new file mode 100644 index 0000000..4a58160 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/misc.py @@ -0,0 +1,886 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import contextlib +import errno +import getpass +import hashlib +import io +import logging +import os +import posixpath +import shutil +import stat +import sys +from collections import deque + +from pip._vendor import pkg_resources +# NOTE: retrying is not annotated in typeshed as on 2017-07-17, which is +# why we ignore the type on this import. +from pip._vendor.retrying import retry # type: ignore +from pip._vendor.six import PY2, text_type +from pip._vendor.six.moves import input +from pip._vendor.six.moves.urllib import parse as urllib_parse +from pip._vendor.six.moves.urllib.parse import unquote as urllib_unquote + +from pip import __version__ +from pip._internal.exceptions import CommandError +from pip._internal.locations import ( + get_major_minor_version, + site_packages, + user_site, +) +from pip._internal.utils.compat import ( + WINDOWS, + expanduser, + stdlib_pkgs, + str_to_display, +) +from pip._internal.utils.typing import MYPY_CHECK_RUNNING, cast +from pip._internal.utils.virtualenv import ( + running_under_virtualenv, + virtualenv_no_global, +) + +if PY2: + from io import BytesIO as StringIO +else: + from io import StringIO + +if MYPY_CHECK_RUNNING: + from typing import ( + Any, AnyStr, Container, Iterable, List, Optional, Text, + Tuple, Union, + ) + from pip._vendor.pkg_resources import Distribution + + VersionInfo = Tuple[int, int, int] + + +__all__ = ['rmtree', 'display_path', 'backup_dir', + 'ask', 'splitext', + 'format_size', 'is_installable_dir', + 'normalize_path', + 'renames', 'get_prog', + 'captured_stdout', 'ensure_dir', + 'get_installed_version', 'remove_auth_from_url'] + + +logger = logging.getLogger(__name__) + + +def get_pip_version(): + # type: () -> str + pip_pkg_dir = os.path.join(os.path.dirname(__file__), "..", "..") + pip_pkg_dir = os.path.abspath(pip_pkg_dir) + + return ( + 'pip {} from {} (python {})'.format( + __version__, pip_pkg_dir, get_major_minor_version(), + ) + ) + + +def normalize_version_info(py_version_info): + # type: (Tuple[int, ...]) -> Tuple[int, int, int] + """ + Convert a tuple of ints representing a Python version to one of length + three. + + :param py_version_info: a tuple of ints representing a Python version, + or None to specify no version. The tuple can have any length. + + :return: a tuple of length three if `py_version_info` is non-None. + Otherwise, return `py_version_info` unchanged (i.e. None). + """ + if len(py_version_info) < 3: + py_version_info += (3 - len(py_version_info)) * (0,) + elif len(py_version_info) > 3: + py_version_info = py_version_info[:3] + + return cast('VersionInfo', py_version_info) + + +def ensure_dir(path): + # type: (AnyStr) -> None + """os.path.makedirs without EEXIST.""" + try: + os.makedirs(path) + except OSError as e: + # Windows can raise spurious ENOTEMPTY errors. See #6426. + if e.errno != errno.EEXIST and e.errno != errno.ENOTEMPTY: + raise + + +def get_prog(): + # type: () -> str + try: + prog = os.path.basename(sys.argv[0]) + if prog in ('__main__.py', '-c'): + return "%s -m pip" % sys.executable + else: + return prog + except (AttributeError, TypeError, IndexError): + pass + return 'pip' + + +# Retry every half second for up to 3 seconds +@retry(stop_max_delay=3000, wait_fixed=500) +def rmtree(dir, ignore_errors=False): + # type: (str, bool) -> None + shutil.rmtree(dir, ignore_errors=ignore_errors, + onerror=rmtree_errorhandler) + + +def rmtree_errorhandler(func, path, exc_info): + """On Windows, the files in .svn are read-only, so when rmtree() tries to + remove them, an exception is thrown. We catch that here, remove the + read-only attribute, and hopefully continue without problems.""" + try: + has_attr_readonly = not (os.stat(path).st_mode & stat.S_IWRITE) + except (IOError, OSError): + # it's equivalent to os.path.exists + return + + if has_attr_readonly: + # convert to read/write + os.chmod(path, stat.S_IWRITE) + # use the original function to repeat the operation + func(path) + return + else: + raise + + +def path_to_display(path): + # type: (Optional[Union[str, Text]]) -> Optional[Text] + """ + Convert a bytes (or text) path to text (unicode in Python 2) for display + and logging purposes. + + This function should never error out. Also, this function is mainly needed + for Python 2 since in Python 3 str paths are already text. + """ + if path is None: + return None + if isinstance(path, text_type): + return path + # Otherwise, path is a bytes object (str in Python 2). + try: + display_path = path.decode(sys.getfilesystemencoding(), 'strict') + except UnicodeDecodeError: + # Include the full bytes to make troubleshooting easier, even though + # it may not be very human readable. + if PY2: + # Convert the bytes to a readable str representation using + # repr(), and then convert the str to unicode. + # Also, we add the prefix "b" to the repr() return value both + # to make the Python 2 output look like the Python 3 output, and + # to signal to the user that this is a bytes representation. + display_path = str_to_display('b{!r}'.format(path)) + else: + # Silence the "F821 undefined name 'ascii'" flake8 error since + # in Python 3 ascii() is a built-in. + display_path = ascii(path) # noqa: F821 + + return display_path + + +def display_path(path): + # type: (Union[str, Text]) -> str + """Gives the display value for a given path, making it relative to cwd + if possible.""" + path = os.path.normcase(os.path.abspath(path)) + if sys.version_info[0] == 2: + path = path.decode(sys.getfilesystemencoding(), 'replace') + path = path.encode(sys.getdefaultencoding(), 'replace') + if path.startswith(os.getcwd() + os.path.sep): + path = '.' + path[len(os.getcwd()):] + return path + + +def backup_dir(dir, ext='.bak'): + # type: (str, str) -> str + """Figure out the name of a directory to back up the given dir to + (adding .bak, .bak2, etc)""" + n = 1 + extension = ext + while os.path.exists(dir + extension): + n += 1 + extension = ext + str(n) + return dir + extension + + +def ask_path_exists(message, options): + # type: (str, Iterable[str]) -> str + for action in os.environ.get('PIP_EXISTS_ACTION', '').split(): + if action in options: + return action + return ask(message, options) + + +def _check_no_input(message): + # type: (str) -> None + """Raise an error if no input is allowed.""" + if os.environ.get('PIP_NO_INPUT'): + raise Exception( + 'No input was expected ($PIP_NO_INPUT set); question: %s' % + message + ) + + +def ask(message, options): + # type: (str, Iterable[str]) -> str + """Ask the message interactively, with the given possible responses""" + while 1: + _check_no_input(message) + response = input(message) + response = response.strip().lower() + if response not in options: + print( + 'Your response (%r) was not one of the expected responses: ' + '%s' % (response, ', '.join(options)) + ) + else: + return response + + +def ask_input(message): + # type: (str) -> str + """Ask for input interactively.""" + _check_no_input(message) + return input(message) + + +def ask_password(message): + # type: (str) -> str + """Ask for a password interactively.""" + _check_no_input(message) + return getpass.getpass(message) + + +def format_size(bytes): + # type: (float) -> str + if bytes > 1000 * 1000: + return '%.1f MB' % (bytes / 1000.0 / 1000) + elif bytes > 10 * 1000: + return '%i kB' % (bytes / 1000) + elif bytes > 1000: + return '%.1f kB' % (bytes / 1000.0) + else: + return '%i bytes' % bytes + + +def is_installable_dir(path): + # type: (str) -> bool + """Is path is a directory containing setup.py or pyproject.toml? + """ + if not os.path.isdir(path): + return False + setup_py = os.path.join(path, 'setup.py') + if os.path.isfile(setup_py): + return True + pyproject_toml = os.path.join(path, 'pyproject.toml') + if os.path.isfile(pyproject_toml): + return True + return False + + +def read_chunks(file, size=io.DEFAULT_BUFFER_SIZE): + """Yield pieces of data from a file-like object until EOF.""" + while True: + chunk = file.read(size) + if not chunk: + break + yield chunk + + +def normalize_path(path, resolve_symlinks=True): + # type: (str, bool) -> str + """ + Convert a path to its canonical, case-normalized, absolute version. + + """ + path = expanduser(path) + if resolve_symlinks: + path = os.path.realpath(path) + else: + path = os.path.abspath(path) + return os.path.normcase(path) + + +def splitext(path): + # type: (str) -> Tuple[str, str] + """Like os.path.splitext, but take off .tar too""" + base, ext = posixpath.splitext(path) + if base.lower().endswith('.tar'): + ext = base[-4:] + ext + base = base[:-4] + return base, ext + + +def renames(old, new): + # type: (str, str) -> None + """Like os.renames(), but handles renaming across devices.""" + # Implementation borrowed from os.renames(). + head, tail = os.path.split(new) + if head and tail and not os.path.exists(head): + os.makedirs(head) + + shutil.move(old, new) + + head, tail = os.path.split(old) + if head and tail: + try: + os.removedirs(head) + except OSError: + pass + + +def is_local(path): + # type: (str) -> bool + """ + Return True if path is within sys.prefix, if we're running in a virtualenv. + + If we're not in a virtualenv, all paths are considered "local." + + Caution: this function assumes the head of path has been normalized + with normalize_path. + """ + if not running_under_virtualenv(): + return True + return path.startswith(normalize_path(sys.prefix)) + + +def dist_is_local(dist): + # type: (Distribution) -> bool + """ + Return True if given Distribution object is installed locally + (i.e. within current virtualenv). + + Always True if we're not in a virtualenv. + + """ + return is_local(dist_location(dist)) + + +def dist_in_usersite(dist): + # type: (Distribution) -> bool + """ + Return True if given Distribution is installed in user site. + """ + return dist_location(dist).startswith(normalize_path(user_site)) + + +def dist_in_site_packages(dist): + # type: (Distribution) -> bool + """ + Return True if given Distribution is installed in + sysconfig.get_python_lib(). + """ + return dist_location(dist).startswith(normalize_path(site_packages)) + + +def dist_is_editable(dist): + # type: (Distribution) -> bool + """ + Return True if given Distribution is an editable install. + """ + for path_item in sys.path: + egg_link = os.path.join(path_item, dist.project_name + '.egg-link') + if os.path.isfile(egg_link): + return True + return False + + +def get_installed_distributions( + local_only=True, # type: bool + skip=stdlib_pkgs, # type: Container[str] + include_editables=True, # type: bool + editables_only=False, # type: bool + user_only=False, # type: bool + paths=None # type: Optional[List[str]] +): + # type: (...) -> List[Distribution] + """ + Return a list of installed Distribution objects. + + If ``local_only`` is True (default), only return installations + local to the current virtualenv, if in a virtualenv. + + ``skip`` argument is an iterable of lower-case project names to + ignore; defaults to stdlib_pkgs + + If ``include_editables`` is False, don't report editables. + + If ``editables_only`` is True , only report editables. + + If ``user_only`` is True , only report installations in the user + site directory. + + If ``paths`` is set, only report the distributions present at the + specified list of locations. + """ + if paths: + working_set = pkg_resources.WorkingSet(paths) + else: + working_set = pkg_resources.working_set + + if local_only: + local_test = dist_is_local + else: + def local_test(d): + return True + + if include_editables: + def editable_test(d): + return True + else: + def editable_test(d): + return not dist_is_editable(d) + + if editables_only: + def editables_only_test(d): + return dist_is_editable(d) + else: + def editables_only_test(d): + return True + + if user_only: + user_test = dist_in_usersite + else: + def user_test(d): + return True + + return [d for d in working_set + if local_test(d) and + d.key not in skip and + editable_test(d) and + editables_only_test(d) and + user_test(d) + ] + + +def egg_link_path(dist): + # type: (Distribution) -> Optional[str] + """ + Return the path for the .egg-link file if it exists, otherwise, None. + + There's 3 scenarios: + 1) not in a virtualenv + try to find in site.USER_SITE, then site_packages + 2) in a no-global virtualenv + try to find in site_packages + 3) in a yes-global virtualenv + try to find in site_packages, then site.USER_SITE + (don't look in global location) + + For #1 and #3, there could be odd cases, where there's an egg-link in 2 + locations. + + This method will just return the first one found. + """ + sites = [] + if running_under_virtualenv(): + sites.append(site_packages) + if not virtualenv_no_global() and user_site: + sites.append(user_site) + else: + if user_site: + sites.append(user_site) + sites.append(site_packages) + + for site in sites: + egglink = os.path.join(site, dist.project_name) + '.egg-link' + if os.path.isfile(egglink): + return egglink + return None + + +def dist_location(dist): + # type: (Distribution) -> str + """ + Get the site-packages location of this distribution. Generally + this is dist.location, except in the case of develop-installed + packages, where dist.location is the source code location, and we + want to know where the egg-link file is. + + The returned location is normalized (in particular, with symlinks removed). + """ + egg_link = egg_link_path(dist) + if egg_link: + return normalize_path(egg_link) + return normalize_path(dist.location) + + +def write_output(msg, *args): + # type: (str, str) -> None + logger.info(msg, *args) + + +class FakeFile(object): + """Wrap a list of lines in an object with readline() to make + ConfigParser happy.""" + def __init__(self, lines): + self._gen = (l for l in lines) + + def readline(self): + try: + try: + return next(self._gen) + except NameError: + return self._gen.next() + except StopIteration: + return '' + + def __iter__(self): + return self._gen + + +class StreamWrapper(StringIO): + + @classmethod + def from_stream(cls, orig_stream): + cls.orig_stream = orig_stream + return cls() + + # compileall.compile_dir() needs stdout.encoding to print to stdout + @property + def encoding(self): + return self.orig_stream.encoding + + +@contextlib.contextmanager +def captured_output(stream_name): + """Return a context manager used by captured_stdout/stdin/stderr + that temporarily replaces the sys stream *stream_name* with a StringIO. + + Taken from Lib/support/__init__.py in the CPython repo. + """ + orig_stdout = getattr(sys, stream_name) + setattr(sys, stream_name, StreamWrapper.from_stream(orig_stdout)) + try: + yield getattr(sys, stream_name) + finally: + setattr(sys, stream_name, orig_stdout) + + +def captured_stdout(): + """Capture the output of sys.stdout: + + with captured_stdout() as stdout: + print('hello') + self.assertEqual(stdout.getvalue(), 'hello\n') + + Taken from Lib/support/__init__.py in the CPython repo. + """ + return captured_output('stdout') + + +def captured_stderr(): + """ + See captured_stdout(). + """ + return captured_output('stderr') + + +class cached_property(object): + """A property that is only computed once per instance and then replaces + itself with an ordinary attribute. Deleting the attribute resets the + property. + + Source: https://github.com/bottlepy/bottle/blob/0.11.5/bottle.py#L175 + """ + + def __init__(self, func): + self.__doc__ = getattr(func, '__doc__') + self.func = func + + def __get__(self, obj, cls): + if obj is None: + # We're being accessed from the class itself, not from an object + return self + value = obj.__dict__[self.func.__name__] = self.func(obj) + return value + + +def get_installed_version(dist_name, working_set=None): + """Get the installed version of dist_name avoiding pkg_resources cache""" + # Create a requirement that we'll look for inside of setuptools. + req = pkg_resources.Requirement.parse(dist_name) + + if working_set is None: + # We want to avoid having this cached, so we need to construct a new + # working set each time. + working_set = pkg_resources.WorkingSet() + + # Get the installed distribution from our working set + dist = working_set.find(req) + + # Check to see if we got an installed distribution or not, if we did + # we want to return it's version. + return dist.version if dist else None + + +def consume(iterator): + """Consume an iterable at C speed.""" + deque(iterator, maxlen=0) + + +# Simulates an enum +def enum(*sequential, **named): + enums = dict(zip(sequential, range(len(sequential))), **named) + reverse = {value: key for key, value in enums.items()} + enums['reverse_mapping'] = reverse + return type('Enum', (), enums) + + +def build_netloc(host, port): + # type: (str, Optional[int]) -> str + """ + Build a netloc from a host-port pair + """ + if port is None: + return host + if ':' in host: + # Only wrap host with square brackets when it is IPv6 + host = '[{}]'.format(host) + return '{}:{}'.format(host, port) + + +def build_url_from_netloc(netloc, scheme='https'): + # type: (str, str) -> str + """ + Build a full URL from a netloc. + """ + if netloc.count(':') >= 2 and '@' not in netloc and '[' not in netloc: + # It must be a bare IPv6 address, so wrap it with brackets. + netloc = '[{}]'.format(netloc) + return '{}://{}'.format(scheme, netloc) + + +def parse_netloc(netloc): + # type: (str) -> Tuple[str, Optional[int]] + """ + Return the host-port pair from a netloc. + """ + url = build_url_from_netloc(netloc) + parsed = urllib_parse.urlparse(url) + return parsed.hostname, parsed.port + + +def split_auth_from_netloc(netloc): + """ + Parse out and remove the auth information from a netloc. + + Returns: (netloc, (username, password)). + """ + if '@' not in netloc: + return netloc, (None, None) + + # Split from the right because that's how urllib.parse.urlsplit() + # behaves if more than one @ is present (which can be checked using + # the password attribute of urlsplit()'s return value). + auth, netloc = netloc.rsplit('@', 1) + if ':' in auth: + # Split from the left because that's how urllib.parse.urlsplit() + # behaves if more than one : is present (which again can be checked + # using the password attribute of the return value) + user_pass = auth.split(':', 1) + else: + user_pass = auth, None + + user_pass = tuple( + None if x is None else urllib_unquote(x) for x in user_pass + ) + + return netloc, user_pass + + +def redact_netloc(netloc): + # type: (str) -> str + """ + Replace the sensitive data in a netloc with "****", if it exists. + + For example: + - "user:pass@example.com" returns "user:****@example.com" + - "accesstoken@example.com" returns "****@example.com" + """ + netloc, (user, password) = split_auth_from_netloc(netloc) + if user is None: + return netloc + if password is None: + user = '****' + password = '' + else: + user = urllib_parse.quote(user) + password = ':****' + return '{user}{password}@{netloc}'.format(user=user, + password=password, + netloc=netloc) + + +def _transform_url(url, transform_netloc): + """Transform and replace netloc in a url. + + transform_netloc is a function taking the netloc and returning a + tuple. The first element of this tuple is the new netloc. The + entire tuple is returned. + + Returns a tuple containing the transformed url as item 0 and the + original tuple returned by transform_netloc as item 1. + """ + purl = urllib_parse.urlsplit(url) + netloc_tuple = transform_netloc(purl.netloc) + # stripped url + url_pieces = ( + purl.scheme, netloc_tuple[0], purl.path, purl.query, purl.fragment + ) + surl = urllib_parse.urlunsplit(url_pieces) + return surl, netloc_tuple + + +def _get_netloc(netloc): + return split_auth_from_netloc(netloc) + + +def _redact_netloc(netloc): + return (redact_netloc(netloc),) + + +def split_auth_netloc_from_url(url): + # type: (str) -> Tuple[str, str, Tuple[str, str]] + """ + Parse a url into separate netloc, auth, and url with no auth. + + Returns: (url_without_auth, netloc, (username, password)) + """ + url_without_auth, (netloc, auth) = _transform_url(url, _get_netloc) + return url_without_auth, netloc, auth + + +def remove_auth_from_url(url): + # type: (str) -> str + """Return a copy of url with 'username:password@' removed.""" + # username/pass params are passed to subversion through flags + # and are not recognized in the url. + return _transform_url(url, _get_netloc)[0] + + +def redact_auth_from_url(url): + # type: (str) -> str + """Replace the password in a given url with ****.""" + return _transform_url(url, _redact_netloc)[0] + + +class HiddenText(object): + def __init__( + self, + secret, # type: str + redacted, # type: str + ): + # type: (...) -> None + self.secret = secret + self.redacted = redacted + + def __repr__(self): + # type: (...) -> str + return ''.format(str(self)) + + def __str__(self): + # type: (...) -> str + return self.redacted + + # This is useful for testing. + def __eq__(self, other): + # type: (Any) -> bool + if type(self) != type(other): + return False + + # The string being used for redaction doesn't also have to match, + # just the raw, original string. + return (self.secret == other.secret) + + # We need to provide an explicit __ne__ implementation for Python 2. + # TODO: remove this when we drop PY2 support. + def __ne__(self, other): + # type: (Any) -> bool + return not self == other + + +def hide_value(value): + # type: (str) -> HiddenText + return HiddenText(value, redacted='****') + + +def hide_url(url): + # type: (str) -> HiddenText + redacted = redact_auth_from_url(url) + return HiddenText(url, redacted=redacted) + + +def protect_pip_from_modification_on_windows(modifying_pip): + # type: (bool) -> None + """Protection of pip.exe from modification on Windows + + On Windows, any operation modifying pip should be run as: + python -m pip ... + """ + pip_names = [ + "pip.exe", + "pip{}.exe".format(sys.version_info[0]), + "pip{}.{}.exe".format(*sys.version_info[:2]) + ] + + # See https://github.com/pypa/pip/issues/1299 for more discussion + should_show_use_python_msg = ( + modifying_pip and + WINDOWS and + os.path.basename(sys.argv[0]) in pip_names + ) + + if should_show_use_python_msg: + new_command = [ + sys.executable, "-m", "pip" + ] + sys.argv[1:] + raise CommandError( + 'To modify pip, please run the following command:\n{}' + .format(" ".join(new_command)) + ) + + +def is_console_interactive(): + # type: () -> bool + """Is this console interactive? + """ + return sys.stdin is not None and sys.stdin.isatty() + + +def hash_file(path, blocksize=1 << 20): + # type: (str, int) -> Tuple[Any, int] + """Return (hash, length) for path using hashlib.sha256() + """ + + h = hashlib.sha256() + length = 0 + with open(path, 'rb') as f: + for block in read_chunks(f, size=blocksize): + length += len(block) + h.update(block) + return h, length + + +def is_wheel_installed(): + """ + Return whether the wheel package is installed. + """ + try: + import wheel # noqa: F401 + except ImportError: + return False + + return True diff --git a/Lib/site-packages/pip/_internal/utils/models.py b/Lib/site-packages/pip/_internal/utils/models.py new file mode 100644 index 0000000..29e1441 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/models.py @@ -0,0 +1,42 @@ +"""Utilities for defining models +""" +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +import operator + + +class KeyBasedCompareMixin(object): + """Provides comparison capabilities that is based on a key + """ + + def __init__(self, key, defining_class): + self._compare_key = key + self._defining_class = defining_class + + def __hash__(self): + return hash(self._compare_key) + + def __lt__(self, other): + return self._compare(other, operator.__lt__) + + def __le__(self, other): + return self._compare(other, operator.__le__) + + def __gt__(self, other): + return self._compare(other, operator.__gt__) + + def __ge__(self, other): + return self._compare(other, operator.__ge__) + + def __eq__(self, other): + return self._compare(other, operator.__eq__) + + def __ne__(self, other): + return self._compare(other, operator.__ne__) + + def _compare(self, other, method): + if not isinstance(other, self._defining_class): + return NotImplemented + + return method(self._compare_key, other._compare_key) diff --git a/Lib/site-packages/pip/_internal/utils/packaging.py b/Lib/site-packages/pip/_internal/utils/packaging.py new file mode 100644 index 0000000..68aa86e --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/packaging.py @@ -0,0 +1,94 @@ +from __future__ import absolute_import + +import logging +from email.parser import FeedParser + +from pip._vendor import pkg_resources +from pip._vendor.packaging import specifiers, version + +from pip._internal.exceptions import NoneMetadataError +from pip._internal.utils.misc import display_path +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional, Tuple + from email.message import Message + from pip._vendor.pkg_resources import Distribution + + +logger = logging.getLogger(__name__) + + +def check_requires_python(requires_python, version_info): + # type: (Optional[str], Tuple[int, ...]) -> bool + """ + Check if the given Python version matches a "Requires-Python" specifier. + + :param version_info: A 3-tuple of ints representing a Python + major-minor-micro version to check (e.g. `sys.version_info[:3]`). + + :return: `True` if the given Python version satisfies the requirement. + Otherwise, return `False`. + + :raises InvalidSpecifier: If `requires_python` has an invalid format. + """ + if requires_python is None: + # The package provides no information + return True + requires_python_specifier = specifiers.SpecifierSet(requires_python) + + python_version = version.parse('.'.join(map(str, version_info))) + return python_version in requires_python_specifier + + +def get_metadata(dist): + # type: (Distribution) -> Message + """ + :raises NoneMetadataError: if the distribution reports `has_metadata()` + True but `get_metadata()` returns None. + """ + metadata_name = 'METADATA' + if (isinstance(dist, pkg_resources.DistInfoDistribution) and + dist.has_metadata(metadata_name)): + metadata = dist.get_metadata(metadata_name) + elif dist.has_metadata('PKG-INFO'): + metadata_name = 'PKG-INFO' + metadata = dist.get_metadata(metadata_name) + else: + logger.warning("No metadata found in %s", display_path(dist.location)) + metadata = '' + + if metadata is None: + raise NoneMetadataError(dist, metadata_name) + + feed_parser = FeedParser() + # The following line errors out if with a "NoneType" TypeError if + # passed metadata=None. + feed_parser.feed(metadata) + return feed_parser.close() + + +def get_requires_python(dist): + # type: (pkg_resources.Distribution) -> Optional[str] + """ + Return the "Requires-Python" metadata for a distribution, or None + if not present. + """ + pkg_info_dict = get_metadata(dist) + requires_python = pkg_info_dict.get('Requires-Python') + + if requires_python is not None: + # Convert to a str to satisfy the type checker, since requires_python + # can be a Header object. + requires_python = str(requires_python) + + return requires_python + + +def get_installer(dist): + # type: (Distribution) -> str + if dist.has_metadata('INSTALLER'): + for line in dist.get_metadata_lines('INSTALLER'): + if line.strip(): + return line.strip() + return '' diff --git a/Lib/site-packages/pip/_internal/utils/pkg_resources.py b/Lib/site-packages/pip/_internal/utils/pkg_resources.py new file mode 100644 index 0000000..0bc129a --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/pkg_resources.py @@ -0,0 +1,44 @@ +from pip._vendor.pkg_resources import yield_lines +from pip._vendor.six import ensure_str + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Dict, Iterable, List + + +class DictMetadata(object): + """IMetadataProvider that reads metadata files from a dictionary. + """ + def __init__(self, metadata): + # type: (Dict[str, bytes]) -> None + self._metadata = metadata + + def has_metadata(self, name): + # type: (str) -> bool + return name in self._metadata + + def get_metadata(self, name): + # type: (str) -> str + try: + return ensure_str(self._metadata[name]) + except UnicodeDecodeError as e: + # Mirrors handling done in pkg_resources.NullProvider. + e.reason += " in {} file".format(name) + raise + + def get_metadata_lines(self, name): + # type: (str) -> Iterable[str] + return yield_lines(self.get_metadata(name)) + + def metadata_isdir(self, name): + # type: (str) -> bool + return False + + def metadata_listdir(self, name): + # type: (str) -> List[str] + return [] + + def run_script(self, script_name, namespace): + # type: (str, str) -> None + pass diff --git a/Lib/site-packages/pip/_internal/utils/setuptools_build.py b/Lib/site-packages/pip/_internal/utils/setuptools_build.py new file mode 100644 index 0000000..4147a65 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/setuptools_build.py @@ -0,0 +1,181 @@ +import sys + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional, Sequence + +# Shim to wrap setup.py invocation with setuptools +# +# We set sys.argv[0] to the path to the underlying setup.py file so +# setuptools / distutils don't take the path to the setup.py to be "-c" when +# invoking via the shim. This avoids e.g. the following manifest_maker +# warning: "warning: manifest_maker: standard file '-c' not found". +_SETUPTOOLS_SHIM = ( + "import sys, setuptools, tokenize; sys.argv[0] = {0!r}; __file__={0!r};" + "f=getattr(tokenize, 'open', open)(__file__);" + "code=f.read().replace('\\r\\n', '\\n');" + "f.close();" + "exec(compile(code, __file__, 'exec'))" +) + + +def make_setuptools_shim_args( + setup_py_path, # type: str + global_options=None, # type: Sequence[str] + no_user_config=False, # type: bool + unbuffered_output=False # type: bool +): + # type: (...) -> List[str] + """ + Get setuptools command arguments with shim wrapped setup file invocation. + + :param setup_py_path: The path to setup.py to be wrapped. + :param global_options: Additional global options. + :param no_user_config: If True, disables personal user configuration. + :param unbuffered_output: If True, adds the unbuffered switch to the + argument list. + """ + args = [sys.executable] + if unbuffered_output: + args += ["-u"] + args += ["-c", _SETUPTOOLS_SHIM.format(setup_py_path)] + if global_options: + args += global_options + if no_user_config: + args += ["--no-user-cfg"] + return args + + +def make_setuptools_bdist_wheel_args( + setup_py_path, # type: str + global_options, # type: Sequence[str] + build_options, # type: Sequence[str] + destination_dir, # type: str +): + # type: (...) -> List[str] + # NOTE: Eventually, we'd want to also -S to the flags here, when we're + # isolating. Currently, it breaks Python in virtualenvs, because it + # relies on site.py to find parts of the standard library outside the + # virtualenv. + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + unbuffered_output=True + ) + args += ["bdist_wheel", "-d", destination_dir] + args += build_options + return args + + +def make_setuptools_clean_args( + setup_py_path, # type: str + global_options, # type: Sequence[str] +): + # type: (...) -> List[str] + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + unbuffered_output=True + ) + args += ["clean", "--all"] + return args + + +def make_setuptools_develop_args( + setup_py_path, # type: str + global_options, # type: Sequence[str] + install_options, # type: Sequence[str] + no_user_config, # type: bool + prefix, # type: Optional[str] + home, # type: Optional[str] + use_user_site, # type: bool +): + # type: (...) -> List[str] + assert not (use_user_site and prefix) + + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + no_user_config=no_user_config, + ) + + args += ["develop", "--no-deps"] + + args += install_options + + if prefix: + args += ["--prefix", prefix] + if home is not None: + args += ["--home", home] + + if use_user_site: + args += ["--user", "--prefix="] + + return args + + +def make_setuptools_egg_info_args( + setup_py_path, # type: str + egg_info_dir, # type: Optional[str] + no_user_config, # type: bool +): + # type: (...) -> List[str] + args = make_setuptools_shim_args(setup_py_path) + if no_user_config: + args += ["--no-user-cfg"] + + args += ["egg_info"] + + if egg_info_dir: + args += ["--egg-base", egg_info_dir] + + return args + + +def make_setuptools_install_args( + setup_py_path, # type: str + global_options, # type: Sequence[str] + install_options, # type: Sequence[str] + record_filename, # type: str + root, # type: Optional[str] + prefix, # type: Optional[str] + header_dir, # type: Optional[str] + home, # type: Optional[str] + use_user_site, # type: bool + no_user_config, # type: bool + pycompile # type: bool +): + # type: (...) -> List[str] + assert not (use_user_site and prefix) + assert not (use_user_site and root) + + args = make_setuptools_shim_args( + setup_py_path, + global_options=global_options, + no_user_config=no_user_config, + unbuffered_output=True + ) + args += ["install", "--record", record_filename] + args += ["--single-version-externally-managed"] + + if root is not None: + args += ["--root", root] + if prefix is not None: + args += ["--prefix", prefix] + if home is not None: + args += ["--home", home] + if use_user_site: + args += ["--user", "--prefix="] + + if pycompile: + args += ["--compile"] + else: + args += ["--no-compile"] + + if header_dir: + args += ["--install-headers", header_dir] + + args += install_options + + return args diff --git a/Lib/site-packages/pip/_internal/utils/subprocess.py b/Lib/site-packages/pip/_internal/utils/subprocess.py new file mode 100644 index 0000000..ea0176d --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/subprocess.py @@ -0,0 +1,278 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +from __future__ import absolute_import + +import logging +import os +import subprocess + +from pip._vendor.six.moves import shlex_quote + +from pip._internal.exceptions import InstallationError +from pip._internal.utils.compat import console_to_str, str_to_display +from pip._internal.utils.logging import subprocess_logger +from pip._internal.utils.misc import HiddenText, path_to_display +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.ui import open_spinner + +if MYPY_CHECK_RUNNING: + from typing import ( + Any, Callable, Iterable, List, Mapping, Optional, Text, Union, + ) + from pip._internal.utils.ui import SpinnerInterface + + CommandArgs = List[Union[str, HiddenText]] + + +LOG_DIVIDER = '----------------------------------------' + + +def make_command(*args): + # type: (Union[str, HiddenText, CommandArgs]) -> CommandArgs + """ + Create a CommandArgs object. + """ + command_args = [] # type: CommandArgs + for arg in args: + # Check for list instead of CommandArgs since CommandArgs is + # only known during type-checking. + if isinstance(arg, list): + command_args.extend(arg) + else: + # Otherwise, arg is str or HiddenText. + command_args.append(arg) + + return command_args + + +def format_command_args(args): + # type: (Union[List[str], CommandArgs]) -> str + """ + Format command arguments for display. + """ + # For HiddenText arguments, display the redacted form by calling str(). + # Also, we don't apply str() to arguments that aren't HiddenText since + # this can trigger a UnicodeDecodeError in Python 2 if the argument + # has type unicode and includes a non-ascii character. (The type + # checker doesn't ensure the annotations are correct in all cases.) + return ' '.join( + shlex_quote(str(arg)) if isinstance(arg, HiddenText) + else shlex_quote(arg) for arg in args + ) + + +def reveal_command_args(args): + # type: (Union[List[str], CommandArgs]) -> List[str] + """ + Return the arguments in their raw, unredacted form. + """ + return [ + arg.secret if isinstance(arg, HiddenText) else arg for arg in args + ] + + +def make_subprocess_output_error( + cmd_args, # type: Union[List[str], CommandArgs] + cwd, # type: Optional[str] + lines, # type: List[Text] + exit_status, # type: int +): + # type: (...) -> Text + """ + Create and return the error message to use to log a subprocess error + with command output. + + :param lines: A list of lines, each ending with a newline. + """ + command = format_command_args(cmd_args) + # Convert `command` and `cwd` to text (unicode in Python 2) so we can use + # them as arguments in the unicode format string below. This avoids + # "UnicodeDecodeError: 'ascii' codec can't decode byte ..." in Python 2 + # if either contains a non-ascii character. + command_display = str_to_display(command, desc='command bytes') + cwd_display = path_to_display(cwd) + + # We know the joined output value ends in a newline. + output = ''.join(lines) + msg = ( + # Use a unicode string to avoid "UnicodeEncodeError: 'ascii' + # codec can't encode character ..." in Python 2 when a format + # argument (e.g. `output`) has a non-ascii character. + u'Command errored out with exit status {exit_status}:\n' + ' command: {command_display}\n' + ' cwd: {cwd_display}\n' + 'Complete output ({line_count} lines):\n{output}{divider}' + ).format( + exit_status=exit_status, + command_display=command_display, + cwd_display=cwd_display, + line_count=len(lines), + output=output, + divider=LOG_DIVIDER, + ) + return msg + + +def call_subprocess( + cmd, # type: Union[List[str], CommandArgs] + show_stdout=False, # type: bool + cwd=None, # type: Optional[str] + on_returncode='raise', # type: str + extra_ok_returncodes=None, # type: Optional[Iterable[int]] + command_desc=None, # type: Optional[str] + extra_environ=None, # type: Optional[Mapping[str, Any]] + unset_environ=None, # type: Optional[Iterable[str]] + spinner=None, # type: Optional[SpinnerInterface] + log_failed_cmd=True # type: Optional[bool] +): + # type: (...) -> Text + """ + Args: + show_stdout: if true, use INFO to log the subprocess's stderr and + stdout streams. Otherwise, use DEBUG. Defaults to False. + extra_ok_returncodes: an iterable of integer return codes that are + acceptable, in addition to 0. Defaults to None, which means []. + unset_environ: an iterable of environment variable names to unset + prior to calling subprocess.Popen(). + log_failed_cmd: if false, failed commands are not logged, only raised. + """ + if extra_ok_returncodes is None: + extra_ok_returncodes = [] + if unset_environ is None: + unset_environ = [] + # Most places in pip use show_stdout=False. What this means is-- + # + # - We connect the child's output (combined stderr and stdout) to a + # single pipe, which we read. + # - We log this output to stderr at DEBUG level as it is received. + # - If DEBUG logging isn't enabled (e.g. if --verbose logging wasn't + # requested), then we show a spinner so the user can still see the + # subprocess is in progress. + # - If the subprocess exits with an error, we log the output to stderr + # at ERROR level if it hasn't already been displayed to the console + # (e.g. if --verbose logging wasn't enabled). This way we don't log + # the output to the console twice. + # + # If show_stdout=True, then the above is still done, but with DEBUG + # replaced by INFO. + if show_stdout: + # Then log the subprocess output at INFO level. + log_subprocess = subprocess_logger.info + used_level = logging.INFO + else: + # Then log the subprocess output using DEBUG. This also ensures + # it will be logged to the log file (aka user_log), if enabled. + log_subprocess = subprocess_logger.debug + used_level = logging.DEBUG + + # Whether the subprocess will be visible in the console. + showing_subprocess = subprocess_logger.getEffectiveLevel() <= used_level + + # Only use the spinner if we're not showing the subprocess output + # and we have a spinner. + use_spinner = not showing_subprocess and spinner is not None + + if command_desc is None: + command_desc = format_command_args(cmd) + + log_subprocess("Running command %s", command_desc) + env = os.environ.copy() + if extra_environ: + env.update(extra_environ) + for name in unset_environ: + env.pop(name, None) + try: + proc = subprocess.Popen( + # Convert HiddenText objects to the underlying str. + reveal_command_args(cmd), + stderr=subprocess.STDOUT, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, cwd=cwd, env=env, + ) + proc.stdin.close() + except Exception as exc: + if log_failed_cmd: + subprocess_logger.critical( + "Error %s while executing command %s", exc, command_desc, + ) + raise + all_output = [] + while True: + # The "line" value is a unicode string in Python 2. + line = console_to_str(proc.stdout.readline()) + if not line: + break + line = line.rstrip() + all_output.append(line + '\n') + + # Show the line immediately. + log_subprocess(line) + # Update the spinner. + if use_spinner: + spinner.spin() + try: + proc.wait() + finally: + if proc.stdout: + proc.stdout.close() + proc_had_error = ( + proc.returncode and proc.returncode not in extra_ok_returncodes + ) + if use_spinner: + if proc_had_error: + spinner.finish("error") + else: + spinner.finish("done") + if proc_had_error: + if on_returncode == 'raise': + if not showing_subprocess and log_failed_cmd: + # Then the subprocess streams haven't been logged to the + # console yet. + msg = make_subprocess_output_error( + cmd_args=cmd, + cwd=cwd, + lines=all_output, + exit_status=proc.returncode, + ) + subprocess_logger.error(msg) + exc_msg = ( + 'Command errored out with exit status {}: {} ' + 'Check the logs for full command output.' + ).format(proc.returncode, command_desc) + raise InstallationError(exc_msg) + elif on_returncode == 'warn': + subprocess_logger.warning( + 'Command "%s" had error code %s in %s', + command_desc, proc.returncode, cwd, + ) + elif on_returncode == 'ignore': + pass + else: + raise ValueError('Invalid value: on_returncode=%s' % + repr(on_returncode)) + return ''.join(all_output) + + +def runner_with_spinner_message(message): + # type: (str) -> Callable[..., None] + """Provide a subprocess_runner that shows a spinner message. + + Intended for use with for pep517's Pep517HookCaller. Thus, the runner has + an API that matches what's expected by Pep517HookCaller.subprocess_runner. + """ + + def runner( + cmd, # type: List[str] + cwd=None, # type: Optional[str] + extra_environ=None # type: Optional[Mapping[str, Any]] + ): + # type: (...) -> None + with open_spinner(message) as spinner: + call_subprocess( + cmd, + cwd=cwd, + extra_environ=extra_environ, + spinner=spinner, + ) + + return runner diff --git a/Lib/site-packages/pip/_internal/utils/temp_dir.py b/Lib/site-packages/pip/_internal/utils/temp_dir.py new file mode 100644 index 0000000..65e41bc --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/temp_dir.py @@ -0,0 +1,250 @@ +from __future__ import absolute_import + +import errno +import itertools +import logging +import os.path +import tempfile +from contextlib import contextmanager + +from pip._vendor.contextlib2 import ExitStack + +from pip._internal.utils.misc import rmtree +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Any, Dict, Iterator, Optional, TypeVar + + _T = TypeVar('_T', bound='TempDirectory') + + +logger = logging.getLogger(__name__) + + +_tempdir_manager = None # type: Optional[ExitStack] + + +@contextmanager +def global_tempdir_manager(): + # type: () -> Iterator[None] + global _tempdir_manager + with ExitStack() as stack: + old_tempdir_manager, _tempdir_manager = _tempdir_manager, stack + try: + yield + finally: + _tempdir_manager = old_tempdir_manager + + +class TempDirectoryTypeRegistry(object): + """Manages temp directory behavior + """ + + def __init__(self): + # type: () -> None + self._should_delete = {} # type: Dict[str, bool] + + def set_delete(self, kind, value): + # type: (str, bool) -> None + """Indicate whether a TempDirectory of the given kind should be + auto-deleted. + """ + self._should_delete[kind] = value + + def get_delete(self, kind): + # type: (str) -> bool + """Get configured auto-delete flag for a given TempDirectory type, + default True. + """ + return self._should_delete.get(kind, True) + + +_tempdir_registry = None # type: Optional[TempDirectoryTypeRegistry] + + +@contextmanager +def tempdir_registry(): + # type: () -> Iterator[TempDirectoryTypeRegistry] + """Provides a scoped global tempdir registry that can be used to dictate + whether directories should be deleted. + """ + global _tempdir_registry + old_tempdir_registry = _tempdir_registry + _tempdir_registry = TempDirectoryTypeRegistry() + try: + yield _tempdir_registry + finally: + _tempdir_registry = old_tempdir_registry + + +class TempDirectory(object): + """Helper class that owns and cleans up a temporary directory. + + This class can be used as a context manager or as an OO representation of a + temporary directory. + + Attributes: + path + Location to the created temporary directory + delete + Whether the directory should be deleted when exiting + (when used as a contextmanager) + + Methods: + cleanup() + Deletes the temporary directory + + When used as a context manager, if the delete attribute is True, on + exiting the context the temporary directory is deleted. + """ + + def __init__( + self, + path=None, # type: Optional[str] + delete=None, # type: Optional[bool] + kind="temp", # type: str + globally_managed=False, # type: bool + ): + super(TempDirectory, self).__init__() + + # If we were given an explicit directory, resolve delete option now. + # Otherwise we wait until cleanup and see what tempdir_registry says. + if path is not None and delete is None: + delete = False + + if path is None: + path = self._create(kind) + + self._path = path + self._deleted = False + self.delete = delete + self.kind = kind + + if globally_managed: + assert _tempdir_manager is not None + _tempdir_manager.enter_context(self) + + @property + def path(self): + # type: () -> str + assert not self._deleted, ( + "Attempted to access deleted path: {}".format(self._path) + ) + return self._path + + def __repr__(self): + # type: () -> str + return "<{} {!r}>".format(self.__class__.__name__, self.path) + + def __enter__(self): + # type: (_T) -> _T + return self + + def __exit__(self, exc, value, tb): + # type: (Any, Any, Any) -> None + if self.delete is not None: + delete = self.delete + elif _tempdir_registry: + delete = _tempdir_registry.get_delete(self.kind) + else: + delete = True + + if delete: + self.cleanup() + + def _create(self, kind): + # type: (str) -> str + """Create a temporary directory and store its path in self.path + """ + # We realpath here because some systems have their default tmpdir + # symlinked to another directory. This tends to confuse build + # scripts, so we canonicalize the path by traversing potential + # symlinks here. + path = os.path.realpath( + tempfile.mkdtemp(prefix="pip-{}-".format(kind)) + ) + logger.debug("Created temporary directory: {}".format(path)) + return path + + def cleanup(self): + # type: () -> None + """Remove the temporary directory created and reset state + """ + self._deleted = True + if os.path.exists(self._path): + rmtree(self._path) + + +class AdjacentTempDirectory(TempDirectory): + """Helper class that creates a temporary directory adjacent to a real one. + + Attributes: + original + The original directory to create a temp directory for. + path + After calling create() or entering, contains the full + path to the temporary directory. + delete + Whether the directory should be deleted when exiting + (when used as a contextmanager) + + """ + # The characters that may be used to name the temp directory + # We always prepend a ~ and then rotate through these until + # a usable name is found. + # pkg_resources raises a different error for .dist-info folder + # with leading '-' and invalid metadata + LEADING_CHARS = "-~.=%0123456789" + + def __init__(self, original, delete=None): + # type: (str, Optional[bool]) -> None + self.original = original.rstrip('/\\') + super(AdjacentTempDirectory, self).__init__(delete=delete) + + @classmethod + def _generate_names(cls, name): + # type: (str) -> Iterator[str] + """Generates a series of temporary names. + + The algorithm replaces the leading characters in the name + with ones that are valid filesystem characters, but are not + valid package names (for both Python and pip definitions of + package). + """ + for i in range(1, len(name)): + for candidate in itertools.combinations_with_replacement( + cls.LEADING_CHARS, i - 1): + new_name = '~' + ''.join(candidate) + name[i:] + if new_name != name: + yield new_name + + # If we make it this far, we will have to make a longer name + for i in range(len(cls.LEADING_CHARS)): + for candidate in itertools.combinations_with_replacement( + cls.LEADING_CHARS, i): + new_name = '~' + ''.join(candidate) + name + if new_name != name: + yield new_name + + def _create(self, kind): + # type: (str) -> str + root, name = os.path.split(self.original) + for candidate in self._generate_names(name): + path = os.path.join(root, candidate) + try: + os.mkdir(path) + except OSError as ex: + # Continue if the name exists already + if ex.errno != errno.EEXIST: + raise + else: + path = os.path.realpath(path) + break + else: + # Final fallback on the default behavior. + path = os.path.realpath( + tempfile.mkdtemp(prefix="pip-{}-".format(kind)) + ) + + logger.debug("Created temporary directory: {}".format(path)) + return path diff --git a/Lib/site-packages/pip/_internal/utils/typing.py b/Lib/site-packages/pip/_internal/utils/typing.py new file mode 100644 index 0000000..8505a29 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/typing.py @@ -0,0 +1,38 @@ +"""For neatly implementing static typing in pip. + +`mypy` - the static type analysis tool we use - uses the `typing` module, which +provides core functionality fundamental to mypy's functioning. + +Generally, `typing` would be imported at runtime and used in that fashion - +it acts as a no-op at runtime and does not have any run-time overhead by +design. + +As it turns out, `typing` is not vendorable - it uses separate sources for +Python 2/Python 3. Thus, this codebase can not expect it to be present. +To work around this, mypy allows the typing import to be behind a False-y +optional to prevent it from running at runtime and type-comments can be used +to remove the need for the types to be accessible directly during runtime. + +This module provides the False-y guard in a nicely named fashion so that a +curious maintainer can reach here to read this. + +In pip, all static-typing related imports should be guarded as follows: + + from pip._internal.utils.typing import MYPY_CHECK_RUNNING + + if MYPY_CHECK_RUNNING: + from typing import ... + +Ref: https://github.com/python/mypy/issues/3216 +""" + +MYPY_CHECK_RUNNING = False + + +if MYPY_CHECK_RUNNING: + from typing import cast +else: + # typing's cast() is needed at runtime, but we don't want to import typing. + # Thus, we use a dummy no-op version, which we tell mypy to ignore. + def cast(type_, value): # type: ignore + return value diff --git a/Lib/site-packages/pip/_internal/utils/ui.py b/Lib/site-packages/pip/_internal/utils/ui.py new file mode 100644 index 0000000..87782aa --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/ui.py @@ -0,0 +1,428 @@ +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import, division + +import contextlib +import itertools +import logging +import sys +import time +from signal import SIGINT, default_int_handler, signal + +from pip._vendor import six +from pip._vendor.progress import HIDE_CURSOR, SHOW_CURSOR +from pip._vendor.progress.bar import Bar, FillingCirclesBar, IncrementalBar +from pip._vendor.progress.spinner import Spinner + +from pip._internal.utils.compat import WINDOWS +from pip._internal.utils.logging import get_indentation +from pip._internal.utils.misc import format_size +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Any, Iterator, IO + +try: + from pip._vendor import colorama +# Lots of different errors can come from this, including SystemError and +# ImportError. +except Exception: + colorama = None + +logger = logging.getLogger(__name__) + + +def _select_progress_class(preferred, fallback): + encoding = getattr(preferred.file, "encoding", None) + + # If we don't know what encoding this file is in, then we'll just assume + # that it doesn't support unicode and use the ASCII bar. + if not encoding: + return fallback + + # Collect all of the possible characters we want to use with the preferred + # bar. + characters = [ + getattr(preferred, "empty_fill", six.text_type()), + getattr(preferred, "fill", six.text_type()), + ] + characters += list(getattr(preferred, "phases", [])) + + # Try to decode the characters we're using for the bar using the encoding + # of the given file, if this works then we'll assume that we can use the + # fancier bar and if not we'll fall back to the plaintext bar. + try: + six.text_type().join(characters).encode(encoding) + except UnicodeEncodeError: + return fallback + else: + return preferred + + +_BaseBar = _select_progress_class(IncrementalBar, Bar) # type: Any + + +class InterruptibleMixin(object): + """ + Helper to ensure that self.finish() gets called on keyboard interrupt. + + This allows downloads to be interrupted without leaving temporary state + (like hidden cursors) behind. + + This class is similar to the progress library's existing SigIntMixin + helper, but as of version 1.2, that helper has the following problems: + + 1. It calls sys.exit(). + 2. It discards the existing SIGINT handler completely. + 3. It leaves its own handler in place even after an uninterrupted finish, + which will have unexpected delayed effects if the user triggers an + unrelated keyboard interrupt some time after a progress-displaying + download has already completed, for example. + """ + + def __init__(self, *args, **kwargs): + """ + Save the original SIGINT handler for later. + """ + super(InterruptibleMixin, self).__init__(*args, **kwargs) + + self.original_handler = signal(SIGINT, self.handle_sigint) + + # If signal() returns None, the previous handler was not installed from + # Python, and we cannot restore it. This probably should not happen, + # but if it does, we must restore something sensible instead, at least. + # The least bad option should be Python's default SIGINT handler, which + # just raises KeyboardInterrupt. + if self.original_handler is None: + self.original_handler = default_int_handler + + def finish(self): + """ + Restore the original SIGINT handler after finishing. + + This should happen regardless of whether the progress display finishes + normally, or gets interrupted. + """ + super(InterruptibleMixin, self).finish() + signal(SIGINT, self.original_handler) + + def handle_sigint(self, signum, frame): + """ + Call self.finish() before delegating to the original SIGINT handler. + + This handler should only be in place while the progress display is + active. + """ + self.finish() + self.original_handler(signum, frame) + + +class SilentBar(Bar): + + def update(self): + pass + + +class BlueEmojiBar(IncrementalBar): + + suffix = "%(percent)d%%" + bar_prefix = " " + bar_suffix = " " + phases = (u"\U0001F539", u"\U0001F537", u"\U0001F535") # type: Any + + +class DownloadProgressMixin(object): + + def __init__(self, *args, **kwargs): + super(DownloadProgressMixin, self).__init__(*args, **kwargs) + self.message = (" " * (get_indentation() + 2)) + self.message + + @property + def downloaded(self): + return format_size(self.index) + + @property + def download_speed(self): + # Avoid zero division errors... + if self.avg == 0.0: + return "..." + return format_size(1 / self.avg) + "/s" + + @property + def pretty_eta(self): + if self.eta: + return "eta %s" % self.eta_td + return "" + + def iter(self, it): + for x in it: + yield x + self.next(len(x)) + self.finish() + + +class WindowsMixin(object): + + def __init__(self, *args, **kwargs): + # The Windows terminal does not support the hide/show cursor ANSI codes + # even with colorama. So we'll ensure that hide_cursor is False on + # Windows. + # This call needs to go before the super() call, so that hide_cursor + # is set in time. The base progress bar class writes the "hide cursor" + # code to the terminal in its init, so if we don't set this soon + # enough, we get a "hide" with no corresponding "show"... + if WINDOWS and self.hide_cursor: + self.hide_cursor = False + + super(WindowsMixin, self).__init__(*args, **kwargs) + + # Check if we are running on Windows and we have the colorama module, + # if we do then wrap our file with it. + if WINDOWS and colorama: + self.file = colorama.AnsiToWin32(self.file) + # The progress code expects to be able to call self.file.isatty() + # but the colorama.AnsiToWin32() object doesn't have that, so we'll + # add it. + self.file.isatty = lambda: self.file.wrapped.isatty() + # The progress code expects to be able to call self.file.flush() + # but the colorama.AnsiToWin32() object doesn't have that, so we'll + # add it. + self.file.flush = lambda: self.file.wrapped.flush() + + +class BaseDownloadProgressBar(WindowsMixin, InterruptibleMixin, + DownloadProgressMixin): + + file = sys.stdout + message = "%(percent)d%%" + suffix = "%(downloaded)s %(download_speed)s %(pretty_eta)s" + +# NOTE: The "type: ignore" comments on the following classes are there to +# work around https://github.com/python/typing/issues/241 + + +class DefaultDownloadProgressBar(BaseDownloadProgressBar, + _BaseBar): + pass + + +class DownloadSilentBar(BaseDownloadProgressBar, SilentBar): # type: ignore + pass + + +class DownloadBar(BaseDownloadProgressBar, # type: ignore + Bar): + pass + + +class DownloadFillingCirclesBar(BaseDownloadProgressBar, # type: ignore + FillingCirclesBar): + pass + + +class DownloadBlueEmojiProgressBar(BaseDownloadProgressBar, # type: ignore + BlueEmojiBar): + pass + + +class DownloadProgressSpinner(WindowsMixin, InterruptibleMixin, + DownloadProgressMixin, Spinner): + + file = sys.stdout + suffix = "%(downloaded)s %(download_speed)s" + + def next_phase(self): + if not hasattr(self, "_phaser"): + self._phaser = itertools.cycle(self.phases) + return next(self._phaser) + + def update(self): + message = self.message % self + phase = self.next_phase() + suffix = self.suffix % self + line = ''.join([ + message, + " " if message else "", + phase, + " " if suffix else "", + suffix, + ]) + + self.writeln(line) + + +BAR_TYPES = { + "off": (DownloadSilentBar, DownloadSilentBar), + "on": (DefaultDownloadProgressBar, DownloadProgressSpinner), + "ascii": (DownloadBar, DownloadProgressSpinner), + "pretty": (DownloadFillingCirclesBar, DownloadProgressSpinner), + "emoji": (DownloadBlueEmojiProgressBar, DownloadProgressSpinner) +} + + +def DownloadProgressProvider(progress_bar, max=None): + if max is None or max == 0: + return BAR_TYPES[progress_bar][1]().iter + else: + return BAR_TYPES[progress_bar][0](max=max).iter + + +################################################################ +# Generic "something is happening" spinners +# +# We don't even try using progress.spinner.Spinner here because it's actually +# simpler to reimplement from scratch than to coerce their code into doing +# what we need. +################################################################ + +@contextlib.contextmanager +def hidden_cursor(file): + # type: (IO[Any]) -> Iterator[None] + # The Windows terminal does not support the hide/show cursor ANSI codes, + # even via colorama. So don't even try. + if WINDOWS: + yield + # We don't want to clutter the output with control characters if we're + # writing to a file, or if the user is running with --quiet. + # See https://github.com/pypa/pip/issues/3418 + elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO: + yield + else: + file.write(HIDE_CURSOR) + try: + yield + finally: + file.write(SHOW_CURSOR) + + +class RateLimiter(object): + def __init__(self, min_update_interval_seconds): + # type: (float) -> None + self._min_update_interval_seconds = min_update_interval_seconds + self._last_update = 0 # type: float + + def ready(self): + # type: () -> bool + now = time.time() + delta = now - self._last_update + return delta >= self._min_update_interval_seconds + + def reset(self): + # type: () -> None + self._last_update = time.time() + + +class SpinnerInterface(object): + def spin(self): + # type: () -> None + raise NotImplementedError() + + def finish(self, final_status): + # type: (str) -> None + raise NotImplementedError() + + +class InteractiveSpinner(SpinnerInterface): + def __init__(self, message, file=None, spin_chars="-\\|/", + # Empirically, 8 updates/second looks nice + min_update_interval_seconds=0.125): + self._message = message + if file is None: + file = sys.stdout + self._file = file + self._rate_limiter = RateLimiter(min_update_interval_seconds) + self._finished = False + + self._spin_cycle = itertools.cycle(spin_chars) + + self._file.write(" " * get_indentation() + self._message + " ... ") + self._width = 0 + + def _write(self, status): + assert not self._finished + # Erase what we wrote before by backspacing to the beginning, writing + # spaces to overwrite the old text, and then backspacing again + backup = "\b" * self._width + self._file.write(backup + " " * self._width + backup) + # Now we have a blank slate to add our status + self._file.write(status) + self._width = len(status) + self._file.flush() + self._rate_limiter.reset() + + def spin(self): + # type: () -> None + if self._finished: + return + if not self._rate_limiter.ready(): + return + self._write(next(self._spin_cycle)) + + def finish(self, final_status): + # type: (str) -> None + if self._finished: + return + self._write(final_status) + self._file.write("\n") + self._file.flush() + self._finished = True + + +# Used for dumb terminals, non-interactive installs (no tty), etc. +# We still print updates occasionally (once every 60 seconds by default) to +# act as a keep-alive for systems like Travis-CI that take lack-of-output as +# an indication that a task has frozen. +class NonInteractiveSpinner(SpinnerInterface): + def __init__(self, message, min_update_interval_seconds=60): + # type: (str, float) -> None + self._message = message + self._finished = False + self._rate_limiter = RateLimiter(min_update_interval_seconds) + self._update("started") + + def _update(self, status): + assert not self._finished + self._rate_limiter.reset() + logger.info("%s: %s", self._message, status) + + def spin(self): + # type: () -> None + if self._finished: + return + if not self._rate_limiter.ready(): + return + self._update("still running...") + + def finish(self, final_status): + # type: (str) -> None + if self._finished: + return + self._update("finished with status '%s'" % (final_status,)) + self._finished = True + + +@contextlib.contextmanager +def open_spinner(message): + # type: (str) -> Iterator[SpinnerInterface] + # Interactive spinner goes directly to sys.stdout rather than being routed + # through the logging system, but it acts like it has level INFO, + # i.e. it's only displayed if we're at level INFO or better. + # Non-interactive spinner goes through the logging system, so it is always + # in sync with logging configuration. + if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO: + spinner = InteractiveSpinner(message) # type: SpinnerInterface + else: + spinner = NonInteractiveSpinner(message) + try: + with hidden_cursor(sys.stdout): + yield spinner + except KeyboardInterrupt: + spinner.finish("canceled") + raise + except Exception: + spinner.finish("error") + raise + else: + spinner.finish("done") diff --git a/Lib/site-packages/pip/_internal/utils/unpacking.py b/Lib/site-packages/pip/_internal/utils/unpacking.py new file mode 100644 index 0000000..7252dc2 --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/unpacking.py @@ -0,0 +1,272 @@ +"""Utilities related archives. +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import os +import shutil +import stat +import tarfile +import zipfile + +from pip._internal.exceptions import InstallationError +from pip._internal.utils.filetypes import ( + BZ2_EXTENSIONS, + TAR_EXTENSIONS, + XZ_EXTENSIONS, + ZIP_EXTENSIONS, +) +from pip._internal.utils.misc import ensure_dir +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Iterable, List, Optional, Text, Union + + +logger = logging.getLogger(__name__) + + +SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS + +try: + import bz2 # noqa + SUPPORTED_EXTENSIONS += BZ2_EXTENSIONS +except ImportError: + logger.debug('bz2 module is not available') + +try: + # Only for Python 3.3+ + import lzma # noqa + SUPPORTED_EXTENSIONS += XZ_EXTENSIONS +except ImportError: + logger.debug('lzma module is not available') + + +def current_umask(): + """Get the current umask which involves having to set it temporarily.""" + mask = os.umask(0) + os.umask(mask) + return mask + + +def split_leading_dir(path): + # type: (Union[str, Text]) -> List[Union[str, Text]] + path = path.lstrip('/').lstrip('\\') + if ( + '/' in path and ( + ('\\' in path and path.find('/') < path.find('\\')) or + '\\' not in path + ) + ): + return path.split('/', 1) + elif '\\' in path: + return path.split('\\', 1) + else: + return [path, ''] + + +def has_leading_dir(paths): + # type: (Iterable[Union[str, Text]]) -> bool + """Returns true if all the paths have the same leading path name + (i.e., everything is in one subdirectory in an archive)""" + common_prefix = None + for path in paths: + prefix, rest = split_leading_dir(path) + if not prefix: + return False + elif common_prefix is None: + common_prefix = prefix + elif prefix != common_prefix: + return False + return True + + +def is_within_directory(directory, target): + # type: ((Union[str, Text]), (Union[str, Text])) -> bool + """ + Return true if the absolute path of target is within the directory + """ + abs_directory = os.path.abspath(directory) + abs_target = os.path.abspath(target) + + prefix = os.path.commonprefix([abs_directory, abs_target]) + return prefix == abs_directory + + +def unzip_file(filename, location, flatten=True): + # type: (str, str, bool) -> None + """ + Unzip the file (with path `filename`) to the destination `location`. All + files are written based on system defaults and umask (i.e. permissions are + not preserved), except that regular file members with any execute + permissions (user, group, or world) have "chmod +x" applied after being + written. Note that for windows, any execute changes using os.chmod are + no-ops per the python docs. + """ + ensure_dir(location) + zipfp = open(filename, 'rb') + try: + zip = zipfile.ZipFile(zipfp, allowZip64=True) + leading = has_leading_dir(zip.namelist()) and flatten + for info in zip.infolist(): + name = info.filename + fn = name + if leading: + fn = split_leading_dir(name)[1] + fn = os.path.join(location, fn) + dir = os.path.dirname(fn) + if not is_within_directory(location, fn): + message = ( + 'The zip file ({}) has a file ({}) trying to install ' + 'outside target directory ({})' + ) + raise InstallationError(message.format(filename, fn, location)) + if fn.endswith('/') or fn.endswith('\\'): + # A directory + ensure_dir(fn) + else: + ensure_dir(dir) + # Don't use read() to avoid allocating an arbitrarily large + # chunk of memory for the file's content + fp = zip.open(name) + try: + with open(fn, 'wb') as destfp: + shutil.copyfileobj(fp, destfp) + finally: + fp.close() + mode = info.external_attr >> 16 + # if mode and regular file and any execute permissions for + # user/group/world? + if mode and stat.S_ISREG(mode) and mode & 0o111: + # make dest file have execute for user/group/world + # (chmod +x) no-op on windows per python docs + os.chmod(fn, (0o777 - current_umask() | 0o111)) + finally: + zipfp.close() + + +def untar_file(filename, location): + # type: (str, str) -> None + """ + Untar the file (with path `filename`) to the destination `location`. + All files are written based on system defaults and umask (i.e. permissions + are not preserved), except that regular file members with any execute + permissions (user, group, or world) have "chmod +x" applied after being + written. Note that for windows, any execute changes using os.chmod are + no-ops per the python docs. + """ + ensure_dir(location) + if filename.lower().endswith('.gz') or filename.lower().endswith('.tgz'): + mode = 'r:gz' + elif filename.lower().endswith(BZ2_EXTENSIONS): + mode = 'r:bz2' + elif filename.lower().endswith(XZ_EXTENSIONS): + mode = 'r:xz' + elif filename.lower().endswith('.tar'): + mode = 'r' + else: + logger.warning( + 'Cannot determine compression type for file %s', filename, + ) + mode = 'r:*' + tar = tarfile.open(filename, mode) + try: + leading = has_leading_dir([ + member.name for member in tar.getmembers() + ]) + for member in tar.getmembers(): + fn = member.name + if leading: + # https://github.com/python/mypy/issues/1174 + fn = split_leading_dir(fn)[1] # type: ignore + path = os.path.join(location, fn) + if not is_within_directory(location, path): + message = ( + 'The tar file ({}) has a file ({}) trying to install ' + 'outside target directory ({})' + ) + raise InstallationError( + message.format(filename, path, location) + ) + if member.isdir(): + ensure_dir(path) + elif member.issym(): + try: + # https://github.com/python/typeshed/issues/2673 + tar._extract_member(member, path) # type: ignore + except Exception as exc: + # Some corrupt tar files seem to produce this + # (specifically bad symlinks) + logger.warning( + 'In the tar file %s the member %s is invalid: %s', + filename, member.name, exc, + ) + continue + else: + try: + fp = tar.extractfile(member) + except (KeyError, AttributeError) as exc: + # Some corrupt tar files seem to produce this + # (specifically bad symlinks) + logger.warning( + 'In the tar file %s the member %s is invalid: %s', + filename, member.name, exc, + ) + continue + ensure_dir(os.path.dirname(path)) + with open(path, 'wb') as destfp: + shutil.copyfileobj(fp, destfp) + fp.close() + # Update the timestamp (useful for cython compiled files) + # https://github.com/python/typeshed/issues/2673 + tar.utime(member, path) # type: ignore + # member have any execute permissions for user/group/world? + if member.mode & 0o111: + # make dest file have execute for user/group/world + # no-op on windows per python docs + os.chmod(path, (0o777 - current_umask() | 0o111)) + finally: + tar.close() + + +def unpack_file( + filename, # type: str + location, # type: str + content_type=None, # type: Optional[str] +): + # type: (...) -> None + filename = os.path.realpath(filename) + if ( + content_type == 'application/zip' or + filename.lower().endswith(ZIP_EXTENSIONS) or + zipfile.is_zipfile(filename) + ): + unzip_file( + filename, + location, + flatten=not filename.endswith('.whl') + ) + elif ( + content_type == 'application/x-gzip' or + tarfile.is_tarfile(filename) or + filename.lower().endswith( + TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS + ) + ): + untar_file(filename, location) + else: + # FIXME: handle? + # FIXME: magic signatures? + logger.critical( + 'Cannot unpack file %s (downloaded from %s, content-type: %s); ' + 'cannot detect archive format', + filename, location, content_type, + ) + raise InstallationError( + 'Cannot determine archive format of {}'.format(location) + ) diff --git a/Lib/site-packages/pip/_internal/utils/urls.py b/Lib/site-packages/pip/_internal/utils/urls.py new file mode 100644 index 0000000..9ad40fe --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/urls.py @@ -0,0 +1,54 @@ +import os +import sys + +from pip._vendor.six.moves.urllib import parse as urllib_parse +from pip._vendor.six.moves.urllib import request as urllib_request + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import Optional, Text, Union + + +def get_url_scheme(url): + # type: (Union[str, Text]) -> Optional[Text] + if ':' not in url: + return None + return url.split(':', 1)[0].lower() + + +def path_to_url(path): + # type: (Union[str, Text]) -> str + """ + Convert a path to a file: URL. The path will be made absolute and have + quoted path parts. + """ + path = os.path.normpath(os.path.abspath(path)) + url = urllib_parse.urljoin('file:', urllib_request.pathname2url(path)) + return url + + +def url_to_path(url): + # type: (str) -> str + """ + Convert a file: URL to a path. + """ + assert url.startswith('file:'), ( + "You can only turn file: urls into filenames (not %r)" % url) + + _, netloc, path, _, _ = urllib_parse.urlsplit(url) + + if not netloc or netloc == 'localhost': + # According to RFC 8089, same as empty authority. + netloc = '' + elif sys.platform == 'win32': + # If we have a UNC path, prepend UNC share notation. + netloc = '\\\\' + netloc + else: + raise ValueError( + 'non-local file URIs are not supported on this platform: %r' + % url + ) + + path = urllib_request.url2pathname(netloc + path) + return path diff --git a/Lib/site-packages/pip/_internal/utils/virtualenv.py b/Lib/site-packages/pip/_internal/utils/virtualenv.py new file mode 100644 index 0000000..d81e6ac --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/virtualenv.py @@ -0,0 +1,115 @@ +from __future__ import absolute_import + +import logging +import os +import re +import site +import sys + +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from typing import List, Optional + +logger = logging.getLogger(__name__) +_INCLUDE_SYSTEM_SITE_PACKAGES_REGEX = re.compile( + r"include-system-site-packages\s*=\s*(?Ptrue|false)" +) + + +def _running_under_venv(): + # type: () -> bool + """Checks if sys.base_prefix and sys.prefix match. + + This handles PEP 405 compliant virtual environments. + """ + return sys.prefix != getattr(sys, "base_prefix", sys.prefix) + + +def _running_under_regular_virtualenv(): + # type: () -> bool + """Checks if sys.real_prefix is set. + + This handles virtual environments created with pypa's virtualenv. + """ + # pypa/virtualenv case + return hasattr(sys, 'real_prefix') + + +def running_under_virtualenv(): + # type: () -> bool + """Return True if we're running inside a virtualenv, False otherwise. + """ + return _running_under_venv() or _running_under_regular_virtualenv() + + +def _get_pyvenv_cfg_lines(): + # type: () -> Optional[List[str]] + """Reads {sys.prefix}/pyvenv.cfg and returns its contents as list of lines + + Returns None, if it could not read/access the file. + """ + pyvenv_cfg_file = os.path.join(sys.prefix, 'pyvenv.cfg') + try: + with open(pyvenv_cfg_file) as f: + return f.read().splitlines() # avoids trailing newlines + except IOError: + return None + + +def _no_global_under_venv(): + # type: () -> bool + """Check `{sys.prefix}/pyvenv.cfg` for system site-packages inclusion + + PEP 405 specifies that when system site-packages are not supposed to be + visible from a virtual environment, `pyvenv.cfg` must contain the following + line: + + include-system-site-packages = false + + Additionally, log a warning if accessing the file fails. + """ + cfg_lines = _get_pyvenv_cfg_lines() + if cfg_lines is None: + # We're not in a "sane" venv, so assume there is no system + # site-packages access (since that's PEP 405's default state). + logger.warning( + "Could not access 'pyvenv.cfg' despite a virtual environment " + "being active. Assuming global site-packages is not accessible " + "in this environment." + ) + return True + + for line in cfg_lines: + match = _INCLUDE_SYSTEM_SITE_PACKAGES_REGEX.match(line) + if match is not None and match.group('value') == 'false': + return True + return False + + +def _no_global_under_regular_virtualenv(): + # type: () -> bool + """Check if "no-global-site-packages.txt" exists beside site.py + + This mirrors logic in pypa/virtualenv for determining whether system + site-packages are visible in the virtual environment. + """ + site_mod_dir = os.path.dirname(os.path.abspath(site.__file__)) + no_global_site_packages_file = os.path.join( + site_mod_dir, 'no-global-site-packages.txt', + ) + return os.path.exists(no_global_site_packages_file) + + +def virtualenv_no_global(): + # type: () -> bool + """Returns a boolean, whether running in venv with no system site-packages. + """ + + if _running_under_regular_virtualenv(): + return _no_global_under_regular_virtualenv() + + if _running_under_venv(): + return _no_global_under_venv() + + return False diff --git a/Lib/site-packages/pip/_internal/utils/wheel.py b/Lib/site-packages/pip/_internal/utils/wheel.py new file mode 100644 index 0000000..837e0af --- /dev/null +++ b/Lib/site-packages/pip/_internal/utils/wheel.py @@ -0,0 +1,225 @@ +"""Support functions for working with wheel files. +""" + +from __future__ import absolute_import + +import logging +from email.parser import Parser +from zipfile import ZipFile + +from pip._vendor.packaging.utils import canonicalize_name +from pip._vendor.pkg_resources import DistInfoDistribution +from pip._vendor.six import PY2, ensure_str + +from pip._internal.exceptions import UnsupportedWheel +from pip._internal.utils.pkg_resources import DictMetadata +from pip._internal.utils.typing import MYPY_CHECK_RUNNING + +if MYPY_CHECK_RUNNING: + from email.message import Message + from typing import Dict, Tuple + + from pip._vendor.pkg_resources import Distribution + +if PY2: + from zipfile import BadZipfile as BadZipFile +else: + from zipfile import BadZipFile + + +VERSION_COMPATIBLE = (1, 0) + + +logger = logging.getLogger(__name__) + + +class WheelMetadata(DictMetadata): + """Metadata provider that maps metadata decoding exceptions to our + internal exception type. + """ + def __init__(self, metadata, wheel_name): + # type: (Dict[str, bytes], str) -> None + super(WheelMetadata, self).__init__(metadata) + self._wheel_name = wheel_name + + def get_metadata(self, name): + # type: (str) -> str + try: + return super(WheelMetadata, self).get_metadata(name) + except UnicodeDecodeError as e: + # Augment the default error with the origin of the file. + raise UnsupportedWheel( + "Error decoding metadata for {}: {}".format( + self._wheel_name, e + ) + ) + + +def pkg_resources_distribution_for_wheel(wheel_zip, name, location): + # type: (ZipFile, str, str) -> Distribution + """Get a pkg_resources distribution given a wheel. + + :raises UnsupportedWheel: on any errors + """ + info_dir, _ = parse_wheel(wheel_zip, name) + + metadata_files = [ + p for p in wheel_zip.namelist() if p.startswith("{}/".format(info_dir)) + ] + + metadata_text = {} # type: Dict[str, bytes] + for path in metadata_files: + # If a flag is set, namelist entries may be unicode in Python 2. + # We coerce them to native str type to match the types used in the rest + # of the code. This cannot fail because unicode can always be encoded + # with UTF-8. + full_path = ensure_str(path) + _, metadata_name = full_path.split("/", 1) + + try: + metadata_text[metadata_name] = read_wheel_metadata_file( + wheel_zip, full_path + ) + except UnsupportedWheel as e: + raise UnsupportedWheel( + "{} has an invalid wheel, {}".format(name, str(e)) + ) + + metadata = WheelMetadata(metadata_text, location) + + return DistInfoDistribution( + location=location, metadata=metadata, project_name=name + ) + + +def parse_wheel(wheel_zip, name): + # type: (ZipFile, str) -> Tuple[str, Message] + """Extract information from the provided wheel, ensuring it meets basic + standards. + + Returns the name of the .dist-info directory and the parsed WHEEL metadata. + """ + try: + info_dir = wheel_dist_info_dir(wheel_zip, name) + metadata = wheel_metadata(wheel_zip, info_dir) + version = wheel_version(metadata) + except UnsupportedWheel as e: + raise UnsupportedWheel( + "{} has an invalid wheel, {}".format(name, str(e)) + ) + + check_compatibility(version, name) + + return info_dir, metadata + + +def wheel_dist_info_dir(source, name): + # type: (ZipFile, str) -> str + """Returns the name of the contained .dist-info directory. + + Raises AssertionError or UnsupportedWheel if not found, >1 found, or + it doesn't match the provided name. + """ + # Zip file path separators must be / + subdirs = list(set(p.split("/")[0] for p in source.namelist())) + + info_dirs = [s for s in subdirs if s.endswith('.dist-info')] + + if not info_dirs: + raise UnsupportedWheel(".dist-info directory not found") + + if len(info_dirs) > 1: + raise UnsupportedWheel( + "multiple .dist-info directories found: {}".format( + ", ".join(info_dirs) + ) + ) + + info_dir = info_dirs[0] + + info_dir_name = canonicalize_name(info_dir) + canonical_name = canonicalize_name(name) + if not info_dir_name.startswith(canonical_name): + raise UnsupportedWheel( + ".dist-info directory {!r} does not start with {!r}".format( + info_dir, canonical_name + ) + ) + + # Zip file paths can be unicode or str depending on the zip entry flags, + # so normalize it. + return ensure_str(info_dir) + + +def read_wheel_metadata_file(source, path): + # type: (ZipFile, str) -> bytes + try: + return source.read(path) + # BadZipFile for general corruption, KeyError for missing entry, + # and RuntimeError for password-protected files + except (BadZipFile, KeyError, RuntimeError) as e: + raise UnsupportedWheel( + "could not read {!r} file: {!r}".format(path, e) + ) + + +def wheel_metadata(source, dist_info_dir): + # type: (ZipFile, str) -> Message + """Return the WHEEL metadata of an extracted wheel, if possible. + Otherwise, raise UnsupportedWheel. + """ + path = "{}/WHEEL".format(dist_info_dir) + # Zip file path separators must be / + wheel_contents = read_wheel_metadata_file(source, path) + + try: + wheel_text = ensure_str(wheel_contents) + except UnicodeDecodeError as e: + raise UnsupportedWheel("error decoding {!r}: {!r}".format(path, e)) + + # FeedParser (used by Parser) does not raise any exceptions. The returned + # message may have .defects populated, but for backwards-compatibility we + # currently ignore them. + return Parser().parsestr(wheel_text) + + +def wheel_version(wheel_data): + # type: (Message) -> Tuple[int, ...] + """Given WHEEL metadata, return the parsed Wheel-Version. + Otherwise, raise UnsupportedWheel. + """ + version_text = wheel_data["Wheel-Version"] + if version_text is None: + raise UnsupportedWheel("WHEEL is missing Wheel-Version") + + version = version_text.strip() + + try: + return tuple(map(int, version.split('.'))) + except ValueError: + raise UnsupportedWheel("invalid Wheel-Version: {!r}".format(version)) + + +def check_compatibility(version, name): + # type: (Tuple[int, ...], str) -> None + """Raises errors or warns if called with an incompatible Wheel-Version. + + Pip should refuse to install a Wheel-Version that's a major series + ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when + installing a version only minor version ahead (e.g 1.2 > 1.1). + + version: a 2-tuple representing a Wheel-Version (Major, Minor) + name: name of wheel or package to raise exception about + + :raises UnsupportedWheel: when an incompatible Wheel-Version is given + """ + if version[0] > VERSION_COMPATIBLE[0]: + raise UnsupportedWheel( + "%s's Wheel-Version (%s) is not compatible with this version " + "of pip" % (name, '.'.join(map(str, version))) + ) + elif version > VERSION_COMPATIBLE: + logger.warning( + 'Installing from a newer Wheel-Version (%s)', + '.'.join(map(str, version)), + ) diff --git a/Lib/site-packages/pip/_internal/vcs/__init__.py b/Lib/site-packages/pip/_internal/vcs/__init__.py new file mode 100644 index 0000000..2a4eb13 --- /dev/null +++ b/Lib/site-packages/pip/_internal/vcs/__init__.py @@ -0,0 +1,15 @@ +# Expose a limited set of classes and functions so callers outside of +# the vcs package don't need to import deeper than `pip._internal.vcs`. +# (The test directory and imports protected by MYPY_CHECK_RUNNING may +# still need to import from a vcs sub-package.) +# Import all vcs modules to register each VCS in the VcsSupport object. +import pip._internal.vcs.bazaar +import pip._internal.vcs.git +import pip._internal.vcs.mercurial +import pip._internal.vcs.subversion # noqa: F401 +from pip._internal.vcs.versioncontrol import ( # noqa: F401 + RemoteNotFoundError, + is_url, + make_vcs_requirement_url, + vcs, +) diff --git a/Lib/site-packages/pip/_internal/vcs/bazaar.py b/Lib/site-packages/pip/_internal/vcs/bazaar.py new file mode 100644 index 0000000..347c06f --- /dev/null +++ b/Lib/site-packages/pip/_internal/vcs/bazaar.py @@ -0,0 +1,120 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import os + +from pip._vendor.six.moves.urllib import parse as urllib_parse + +from pip._internal.utils.misc import display_path, rmtree +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs.versioncontrol import VersionControl, vcs + +if MYPY_CHECK_RUNNING: + from typing import Optional, Tuple + from pip._internal.utils.misc import HiddenText + from pip._internal.vcs.versioncontrol import AuthInfo, RevOptions + + +logger = logging.getLogger(__name__) + + +class Bazaar(VersionControl): + name = 'bzr' + dirname = '.bzr' + repo_name = 'branch' + schemes = ( + 'bzr', 'bzr+http', 'bzr+https', 'bzr+ssh', 'bzr+sftp', 'bzr+ftp', + 'bzr+lp', + ) + + def __init__(self, *args, **kwargs): + super(Bazaar, self).__init__(*args, **kwargs) + # This is only needed for python <2.7.5 + # Register lp but do not expose as a scheme to support bzr+lp. + if getattr(urllib_parse, 'uses_fragment', None): + urllib_parse.uses_fragment.extend(['lp']) + + @staticmethod + def get_base_rev_args(rev): + return ['-r', rev] + + def export(self, location, url): + # type: (str, HiddenText) -> None + """ + Export the Bazaar repository at the url to the destination location + """ + # Remove the location to make sure Bazaar can export it correctly + if os.path.exists(location): + rmtree(location) + + url, rev_options = self.get_url_rev_options(url) + self.run_command( + make_command('export', location, url, rev_options.to_args()), + show_stdout=False, + ) + + def fetch_new(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + rev_display = rev_options.to_display() + logger.info( + 'Checking out %s%s to %s', + url, + rev_display, + display_path(dest), + ) + cmd_args = ( + make_command('branch', '-q', rev_options.to_args(), url, dest) + ) + self.run_command(cmd_args) + + def switch(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + self.run_command(make_command('switch', url), cwd=dest) + + def update(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + cmd_args = make_command('pull', '-q', rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + @classmethod + def get_url_rev_and_auth(cls, url): + # type: (str) -> Tuple[str, Optional[str], AuthInfo] + # hotfix the URL scheme after removing bzr+ from bzr+ssh:// readd it + url, rev, user_pass = super(Bazaar, cls).get_url_rev_and_auth(url) + if url.startswith('ssh://'): + url = 'bzr+' + url + return url, rev, user_pass + + @classmethod + def get_remote_url(cls, location): + urls = cls.run_command(['info'], show_stdout=False, cwd=location) + for line in urls.splitlines(): + line = line.strip() + for x in ('checkout of branch: ', + 'parent branch: '): + if line.startswith(x): + repo = line.split(x)[1] + if cls._is_local_repository(repo): + return path_to_url(repo) + return repo + return None + + @classmethod + def get_revision(cls, location): + revision = cls.run_command( + ['revno'], show_stdout=False, cwd=location, + ) + return revision.splitlines()[-1] + + @classmethod + def is_commit_id_equal(cls, dest, name): + """Always assume the versions don't match""" + return False + + +vcs.register(Bazaar) diff --git a/Lib/site-packages/pip/_internal/vcs/git.py b/Lib/site-packages/pip/_internal/vcs/git.py new file mode 100644 index 0000000..7483303 --- /dev/null +++ b/Lib/site-packages/pip/_internal/vcs/git.py @@ -0,0 +1,389 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import os.path +import re + +from pip._vendor.packaging.version import parse as parse_version +from pip._vendor.six.moves.urllib import parse as urllib_parse +from pip._vendor.six.moves.urllib import request as urllib_request + +from pip._internal.exceptions import BadCommand +from pip._internal.utils.misc import display_path, hide_url +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.vcs.versioncontrol import ( + RemoteNotFoundError, + VersionControl, + find_path_to_setup_from_repo_root, + vcs, +) + +if MYPY_CHECK_RUNNING: + from typing import Optional, Tuple + from pip._internal.utils.misc import HiddenText + from pip._internal.vcs.versioncontrol import AuthInfo, RevOptions + + +urlsplit = urllib_parse.urlsplit +urlunsplit = urllib_parse.urlunsplit + + +logger = logging.getLogger(__name__) + + +HASH_REGEX = re.compile('^[a-fA-F0-9]{40}$') + + +def looks_like_hash(sha): + return bool(HASH_REGEX.match(sha)) + + +class Git(VersionControl): + name = 'git' + dirname = '.git' + repo_name = 'clone' + schemes = ( + 'git', 'git+http', 'git+https', 'git+ssh', 'git+git', 'git+file', + ) + # Prevent the user's environment variables from interfering with pip: + # https://github.com/pypa/pip/issues/1130 + unset_environ = ('GIT_DIR', 'GIT_WORK_TREE') + default_arg_rev = 'HEAD' + + @staticmethod + def get_base_rev_args(rev): + return [rev] + + def is_immutable_rev_checkout(self, url, dest): + # type: (str, str) -> bool + _, rev_options = self.get_url_rev_options(hide_url(url)) + if not rev_options.rev: + return False + if not self.is_commit_id_equal(dest, rev_options.rev): + # the current commit is different from rev, + # which means rev was something else than a commit hash + return False + # return False in the rare case rev is both a commit hash + # and a tag or a branch; we don't want to cache in that case + # because that branch/tag could point to something else in the future + is_tag_or_branch = bool( + self.get_revision_sha(dest, rev_options.rev)[0] + ) + return not is_tag_or_branch + + def get_git_version(self): + VERSION_PFX = 'git version ' + version = self.run_command(['version'], show_stdout=False) + if version.startswith(VERSION_PFX): + version = version[len(VERSION_PFX):].split()[0] + else: + version = '' + # get first 3 positions of the git version because + # on windows it is x.y.z.windows.t, and this parses as + # LegacyVersion which always smaller than a Version. + version = '.'.join(version.split('.')[:3]) + return parse_version(version) + + @classmethod + def get_current_branch(cls, location): + """ + Return the current branch, or None if HEAD isn't at a branch + (e.g. detached HEAD). + """ + # git-symbolic-ref exits with empty stdout if "HEAD" is a detached + # HEAD rather than a symbolic ref. In addition, the -q causes the + # command to exit with status code 1 instead of 128 in this case + # and to suppress the message to stderr. + args = ['symbolic-ref', '-q', 'HEAD'] + output = cls.run_command( + args, extra_ok_returncodes=(1, ), show_stdout=False, cwd=location, + ) + ref = output.strip() + + if ref.startswith('refs/heads/'): + return ref[len('refs/heads/'):] + + return None + + def export(self, location, url): + # type: (str, HiddenText) -> None + """Export the Git repository at the url to the destination location""" + if not location.endswith('/'): + location = location + '/' + + with TempDirectory(kind="export") as temp_dir: + self.unpack(temp_dir.path, url=url) + self.run_command( + ['checkout-index', '-a', '-f', '--prefix', location], + show_stdout=False, cwd=temp_dir.path + ) + + @classmethod + def get_revision_sha(cls, dest, rev): + """ + Return (sha_or_none, is_branch), where sha_or_none is a commit hash + if the revision names a remote branch or tag, otherwise None. + + Args: + dest: the repository directory. + rev: the revision name. + """ + # Pass rev to pre-filter the list. + output = cls.run_command(['show-ref', rev], cwd=dest, + show_stdout=False, on_returncode='ignore') + refs = {} + for line in output.strip().splitlines(): + try: + sha, ref = line.split() + except ValueError: + # Include the offending line to simplify troubleshooting if + # this error ever occurs. + raise ValueError('unexpected show-ref line: {!r}'.format(line)) + + refs[ref] = sha + + branch_ref = 'refs/remotes/origin/{}'.format(rev) + tag_ref = 'refs/tags/{}'.format(rev) + + sha = refs.get(branch_ref) + if sha is not None: + return (sha, True) + + sha = refs.get(tag_ref) + + return (sha, False) + + @classmethod + def resolve_revision(cls, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> RevOptions + """ + Resolve a revision to a new RevOptions object with the SHA1 of the + branch, tag, or ref if found. + + Args: + rev_options: a RevOptions object. + """ + rev = rev_options.arg_rev + # The arg_rev property's implementation for Git ensures that the + # rev return value is always non-None. + assert rev is not None + + sha, is_branch = cls.get_revision_sha(dest, rev) + + if sha is not None: + rev_options = rev_options.make_new(sha) + rev_options.branch_name = rev if is_branch else None + + return rev_options + + # Do not show a warning for the common case of something that has + # the form of a Git commit hash. + if not looks_like_hash(rev): + logger.warning( + "Did not find branch or tag '%s', assuming revision or ref.", + rev, + ) + + if not rev.startswith('refs/'): + return rev_options + + # If it looks like a ref, we have to fetch it explicitly. + cls.run_command( + make_command('fetch', '-q', url, rev_options.to_args()), + cwd=dest, + ) + # Change the revision to the SHA of the ref we fetched + sha = cls.get_revision(dest, rev='FETCH_HEAD') + rev_options = rev_options.make_new(sha) + + return rev_options + + @classmethod + def is_commit_id_equal(cls, dest, name): + """ + Return whether the current commit hash equals the given name. + + Args: + dest: the repository directory. + name: a string name. + """ + if not name: + # Then avoid an unnecessary subprocess call. + return False + + return cls.get_revision(dest) == name + + def fetch_new(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + rev_display = rev_options.to_display() + logger.info('Cloning %s%s to %s', url, rev_display, display_path(dest)) + self.run_command(make_command('clone', '-q', url, dest)) + + if rev_options.rev: + # Then a specific revision was requested. + rev_options = self.resolve_revision(dest, url, rev_options) + branch_name = getattr(rev_options, 'branch_name', None) + if branch_name is None: + # Only do a checkout if the current commit id doesn't match + # the requested revision. + if not self.is_commit_id_equal(dest, rev_options.rev): + cmd_args = make_command( + 'checkout', '-q', rev_options.to_args(), + ) + self.run_command(cmd_args, cwd=dest) + elif self.get_current_branch(dest) != branch_name: + # Then a specific branch was requested, and that branch + # is not yet checked out. + track_branch = 'origin/{}'.format(branch_name) + cmd_args = [ + 'checkout', '-b', branch_name, '--track', track_branch, + ] + self.run_command(cmd_args, cwd=dest) + + #: repo may contain submodules + self.update_submodules(dest) + + def switch(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + self.run_command( + make_command('config', 'remote.origin.url', url), + cwd=dest, + ) + cmd_args = make_command('checkout', '-q', rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + self.update_submodules(dest) + + def update(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + # First fetch changes from the default remote + if self.get_git_version() >= parse_version('1.9.0'): + # fetch tags in addition to everything else + self.run_command(['fetch', '-q', '--tags'], cwd=dest) + else: + self.run_command(['fetch', '-q'], cwd=dest) + # Then reset to wanted revision (maybe even origin/master) + rev_options = self.resolve_revision(dest, url, rev_options) + cmd_args = make_command('reset', '--hard', '-q', rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + #: update submodules + self.update_submodules(dest) + + @classmethod + def get_remote_url(cls, location): + """ + Return URL of the first remote encountered. + + Raises RemoteNotFoundError if the repository does not have a remote + url configured. + """ + # We need to pass 1 for extra_ok_returncodes since the command + # exits with return code 1 if there are no matching lines. + stdout = cls.run_command( + ['config', '--get-regexp', r'remote\..*\.url'], + extra_ok_returncodes=(1, ), show_stdout=False, cwd=location, + ) + remotes = stdout.splitlines() + try: + found_remote = remotes[0] + except IndexError: + raise RemoteNotFoundError + + for remote in remotes: + if remote.startswith('remote.origin.url '): + found_remote = remote + break + url = found_remote.split(' ')[1] + return url.strip() + + @classmethod + def get_revision(cls, location, rev=None): + if rev is None: + rev = 'HEAD' + current_rev = cls.run_command( + ['rev-parse', rev], show_stdout=False, cwd=location, + ) + return current_rev.strip() + + @classmethod + def get_subdirectory(cls, location): + """ + Return the path to setup.py, relative to the repo root. + Return None if setup.py is in the repo root. + """ + # find the repo root + git_dir = cls.run_command( + ['rev-parse', '--git-dir'], + show_stdout=False, cwd=location).strip() + if not os.path.isabs(git_dir): + git_dir = os.path.join(location, git_dir) + repo_root = os.path.abspath(os.path.join(git_dir, '..')) + return find_path_to_setup_from_repo_root(location, repo_root) + + @classmethod + def get_url_rev_and_auth(cls, url): + # type: (str) -> Tuple[str, Optional[str], AuthInfo] + """ + Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'. + That's required because although they use SSH they sometimes don't + work with a ssh:// scheme (e.g. GitHub). But we need a scheme for + parsing. Hence we remove it again afterwards and return it as a stub. + """ + # Works around an apparent Git bug + # (see https://article.gmane.org/gmane.comp.version-control.git/146500) + scheme, netloc, path, query, fragment = urlsplit(url) + if scheme.endswith('file'): + initial_slashes = path[:-len(path.lstrip('/'))] + newpath = ( + initial_slashes + + urllib_request.url2pathname(path) + .replace('\\', '/').lstrip('/') + ) + url = urlunsplit((scheme, netloc, newpath, query, fragment)) + after_plus = scheme.find('+') + 1 + url = scheme[:after_plus] + urlunsplit( + (scheme[after_plus:], netloc, newpath, query, fragment), + ) + + if '://' not in url: + assert 'file:' not in url + url = url.replace('git+', 'git+ssh://') + url, rev, user_pass = super(Git, cls).get_url_rev_and_auth(url) + url = url.replace('ssh://', '') + else: + url, rev, user_pass = super(Git, cls).get_url_rev_and_auth(url) + + return url, rev, user_pass + + @classmethod + def update_submodules(cls, location): + if not os.path.exists(os.path.join(location, '.gitmodules')): + return + cls.run_command( + ['submodule', 'update', '--init', '--recursive', '-q'], + cwd=location, + ) + + @classmethod + def controls_location(cls, location): + if super(Git, cls).controls_location(location): + return True + try: + r = cls.run_command(['rev-parse'], + cwd=location, + show_stdout=False, + on_returncode='ignore', + log_failed_cmd=False) + return not r + except BadCommand: + logger.debug("could not determine if %s is under git control " + "because git is not available", location) + return False + + +vcs.register(Git) diff --git a/Lib/site-packages/pip/_internal/vcs/mercurial.py b/Lib/site-packages/pip/_internal/vcs/mercurial.py new file mode 100644 index 0000000..d9b58cf --- /dev/null +++ b/Lib/site-packages/pip/_internal/vcs/mercurial.py @@ -0,0 +1,155 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import os + +from pip._vendor.six.moves import configparser + +from pip._internal.exceptions import BadCommand, InstallationError +from pip._internal.utils.misc import display_path +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs.versioncontrol import ( + VersionControl, + find_path_to_setup_from_repo_root, + vcs, +) + +if MYPY_CHECK_RUNNING: + from pip._internal.utils.misc import HiddenText + from pip._internal.vcs.versioncontrol import RevOptions + + +logger = logging.getLogger(__name__) + + +class Mercurial(VersionControl): + name = 'hg' + dirname = '.hg' + repo_name = 'clone' + schemes = ( + 'hg', 'hg+file', 'hg+http', 'hg+https', 'hg+ssh', 'hg+static-http', + ) + + @staticmethod + def get_base_rev_args(rev): + return [rev] + + def export(self, location, url): + # type: (str, HiddenText) -> None + """Export the Hg repository at the url to the destination location""" + with TempDirectory(kind="export") as temp_dir: + self.unpack(temp_dir.path, url=url) + + self.run_command( + ['archive', location], show_stdout=False, cwd=temp_dir.path + ) + + def fetch_new(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + rev_display = rev_options.to_display() + logger.info( + 'Cloning hg %s%s to %s', + url, + rev_display, + display_path(dest), + ) + self.run_command(make_command('clone', '--noupdate', '-q', url, dest)) + self.run_command( + make_command('update', '-q', rev_options.to_args()), + cwd=dest, + ) + + def switch(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + repo_config = os.path.join(dest, self.dirname, 'hgrc') + config = configparser.RawConfigParser() + try: + config.read(repo_config) + config.set('paths', 'default', url.secret) + with open(repo_config, 'w') as config_file: + config.write(config_file) + except (OSError, configparser.NoSectionError) as exc: + logger.warning( + 'Could not switch Mercurial repository to %s: %s', url, exc, + ) + else: + cmd_args = make_command('update', '-q', rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + def update(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + self.run_command(['pull', '-q'], cwd=dest) + cmd_args = make_command('update', '-q', rev_options.to_args()) + self.run_command(cmd_args, cwd=dest) + + @classmethod + def get_remote_url(cls, location): + url = cls.run_command( + ['showconfig', 'paths.default'], + show_stdout=False, cwd=location).strip() + if cls._is_local_repository(url): + url = path_to_url(url) + return url.strip() + + @classmethod + def get_revision(cls, location): + """ + Return the repository-local changeset revision number, as an integer. + """ + current_revision = cls.run_command( + ['parents', '--template={rev}'], + show_stdout=False, cwd=location).strip() + return current_revision + + @classmethod + def get_requirement_revision(cls, location): + """ + Return the changeset identification hash, as a 40-character + hexadecimal string + """ + current_rev_hash = cls.run_command( + ['parents', '--template={node}'], + show_stdout=False, cwd=location).strip() + return current_rev_hash + + @classmethod + def is_commit_id_equal(cls, dest, name): + """Always assume the versions don't match""" + return False + + @classmethod + def get_subdirectory(cls, location): + """ + Return the path to setup.py, relative to the repo root. + Return None if setup.py is in the repo root. + """ + # find the repo root + repo_root = cls.run_command( + ['root'], show_stdout=False, cwd=location).strip() + if not os.path.isabs(repo_root): + repo_root = os.path.abspath(os.path.join(location, repo_root)) + return find_path_to_setup_from_repo_root(location, repo_root) + + @classmethod + def controls_location(cls, location): + if super(Mercurial, cls).controls_location(location): + return True + try: + cls.run_command( + ['identify'], + cwd=location, + show_stdout=False, + on_returncode='raise', + log_failed_cmd=False) + return True + except (BadCommand, InstallationError): + return False + + +vcs.register(Mercurial) diff --git a/Lib/site-packages/pip/_internal/vcs/subversion.py b/Lib/site-packages/pip/_internal/vcs/subversion.py new file mode 100644 index 0000000..6c76d1a --- /dev/null +++ b/Lib/site-packages/pip/_internal/vcs/subversion.py @@ -0,0 +1,333 @@ +# The following comment should be removed at some point in the future. +# mypy: disallow-untyped-defs=False + +from __future__ import absolute_import + +import logging +import os +import re + +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ( + display_path, + is_console_interactive, + rmtree, + split_auth_from_netloc, +) +from pip._internal.utils.subprocess import make_command +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.vcs.versioncontrol import VersionControl, vcs + +_svn_xml_url_re = re.compile('url="([^"]+)"') +_svn_rev_re = re.compile(r'committed-rev="(\d+)"') +_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"') +_svn_info_xml_url_re = re.compile(r'(.*)') + + +if MYPY_CHECK_RUNNING: + from typing import Optional, Tuple + from pip._internal.utils.subprocess import CommandArgs + from pip._internal.utils.misc import HiddenText + from pip._internal.vcs.versioncontrol import AuthInfo, RevOptions + + +logger = logging.getLogger(__name__) + + +class Subversion(VersionControl): + name = 'svn' + dirname = '.svn' + repo_name = 'checkout' + schemes = ('svn', 'svn+ssh', 'svn+http', 'svn+https', 'svn+svn') + + @classmethod + def should_add_vcs_url_prefix(cls, remote_url): + return True + + @staticmethod + def get_base_rev_args(rev): + return ['-r', rev] + + @classmethod + def get_revision(cls, location): + """ + Return the maximum revision for all files under a given location + """ + # Note: taken from setuptools.command.egg_info + revision = 0 + + for base, dirs, files in os.walk(location): + if cls.dirname not in dirs: + dirs[:] = [] + continue # no sense walking uncontrolled subdirs + dirs.remove(cls.dirname) + entries_fn = os.path.join(base, cls.dirname, 'entries') + if not os.path.exists(entries_fn): + # FIXME: should we warn? + continue + + dirurl, localrev = cls._get_svn_url_rev(base) + + if base == location: + base = dirurl + '/' # save the root url + elif not dirurl or not dirurl.startswith(base): + dirs[:] = [] + continue # not part of the same svn tree, skip it + revision = max(revision, localrev) + return revision + + @classmethod + def get_netloc_and_auth(cls, netloc, scheme): + """ + This override allows the auth information to be passed to svn via the + --username and --password options instead of via the URL. + """ + if scheme == 'ssh': + # The --username and --password options can't be used for + # svn+ssh URLs, so keep the auth information in the URL. + return super(Subversion, cls).get_netloc_and_auth(netloc, scheme) + + return split_auth_from_netloc(netloc) + + @classmethod + def get_url_rev_and_auth(cls, url): + # type: (str) -> Tuple[str, Optional[str], AuthInfo] + # hotfix the URL scheme after removing svn+ from svn+ssh:// readd it + url, rev, user_pass = super(Subversion, cls).get_url_rev_and_auth(url) + if url.startswith('ssh://'): + url = 'svn+' + url + return url, rev, user_pass + + @staticmethod + def make_rev_args(username, password): + # type: (Optional[str], Optional[HiddenText]) -> CommandArgs + extra_args = [] # type: CommandArgs + if username: + extra_args += ['--username', username] + if password: + extra_args += ['--password', password] + + return extra_args + + @classmethod + def get_remote_url(cls, location): + # In cases where the source is in a subdirectory, not alongside + # setup.py we have to look up in the location until we find a real + # setup.py + orig_location = location + while not os.path.exists(os.path.join(location, 'setup.py')): + last_location = location + location = os.path.dirname(location) + if location == last_location: + # We've traversed up to the root of the filesystem without + # finding setup.py + logger.warning( + "Could not find setup.py for directory %s (tried all " + "parent directories)", + orig_location, + ) + return None + + return cls._get_svn_url_rev(location)[0] + + @classmethod + def _get_svn_url_rev(cls, location): + from pip._internal.exceptions import InstallationError + + entries_path = os.path.join(location, cls.dirname, 'entries') + if os.path.exists(entries_path): + with open(entries_path) as f: + data = f.read() + else: # subversion >= 1.7 does not have the 'entries' file + data = '' + + if (data.startswith('8') or + data.startswith('9') or + data.startswith('10')): + data = list(map(str.splitlines, data.split('\n\x0c\n'))) + del data[0][0] # get rid of the '8' + url = data[0][3] + revs = [int(d[9]) for d in data if len(d) > 9 and d[9]] + [0] + elif data.startswith('= 1.7 + # Note that using get_remote_call_options is not necessary here + # because `svn info` is being run against a local directory. + # We don't need to worry about making sure interactive mode + # is being used to prompt for passwords, because passwords + # are only potentially needed for remote server requests. + xml = cls.run_command( + ['info', '--xml', location], + show_stdout=False, + ) + url = _svn_info_xml_url_re.search(xml).group(1) + revs = [ + int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml) + ] + except InstallationError: + url, revs = None, [] + + if revs: + rev = max(revs) + else: + rev = 0 + + return url, rev + + @classmethod + def is_commit_id_equal(cls, dest, name): + """Always assume the versions don't match""" + return False + + def __init__(self, use_interactive=None): + # type: (bool) -> None + if use_interactive is None: + use_interactive = is_console_interactive() + self.use_interactive = use_interactive + + # This member is used to cache the fetched version of the current + # ``svn`` client. + # Special value definitions: + # None: Not evaluated yet. + # Empty tuple: Could not parse version. + self._vcs_version = None # type: Optional[Tuple[int, ...]] + + super(Subversion, self).__init__() + + def call_vcs_version(self): + # type: () -> Tuple[int, ...] + """Query the version of the currently installed Subversion client. + + :return: A tuple containing the parts of the version information or + ``()`` if the version returned from ``svn`` could not be parsed. + :raises: BadCommand: If ``svn`` is not installed. + """ + # Example versions: + # svn, version 1.10.3 (r1842928) + # compiled Feb 25 2019, 14:20:39 on x86_64-apple-darwin17.0.0 + # svn, version 1.7.14 (r1542130) + # compiled Mar 28 2018, 08:49:13 on x86_64-pc-linux-gnu + version_prefix = 'svn, version ' + version = self.run_command(['--version'], show_stdout=False) + if not version.startswith(version_prefix): + return () + + version = version[len(version_prefix):].split()[0] + version_list = version.split('.') + try: + parsed_version = tuple(map(int, version_list)) + except ValueError: + return () + + return parsed_version + + def get_vcs_version(self): + # type: () -> Tuple[int, ...] + """Return the version of the currently installed Subversion client. + + If the version of the Subversion client has already been queried, + a cached value will be used. + + :return: A tuple containing the parts of the version information or + ``()`` if the version returned from ``svn`` could not be parsed. + :raises: BadCommand: If ``svn`` is not installed. + """ + if self._vcs_version is not None: + # Use cached version, if available. + # If parsing the version failed previously (empty tuple), + # do not attempt to parse it again. + return self._vcs_version + + vcs_version = self.call_vcs_version() + self._vcs_version = vcs_version + return vcs_version + + def get_remote_call_options(self): + # type: () -> CommandArgs + """Return options to be used on calls to Subversion that contact the server. + + These options are applicable for the following ``svn`` subcommands used + in this class. + + - checkout + - export + - switch + - update + + :return: A list of command line arguments to pass to ``svn``. + """ + if not self.use_interactive: + # --non-interactive switch is available since Subversion 0.14.4. + # Subversion < 1.8 runs in interactive mode by default. + return ['--non-interactive'] + + svn_version = self.get_vcs_version() + # By default, Subversion >= 1.8 runs in non-interactive mode if + # stdin is not a TTY. Since that is how pip invokes SVN, in + # call_subprocess(), pip must pass --force-interactive to ensure + # the user can be prompted for a password, if required. + # SVN added the --force-interactive option in SVN 1.8. Since + # e.g. RHEL/CentOS 7, which is supported until 2024, ships with + # SVN 1.7, pip should continue to support SVN 1.7. Therefore, pip + # can't safely add the option if the SVN version is < 1.8 (or unknown). + if svn_version >= (1, 8): + return ['--force-interactive'] + + return [] + + def export(self, location, url): + # type: (str, HiddenText) -> None + """Export the svn repository at the url to the destination location""" + url, rev_options = self.get_url_rev_options(url) + + logger.info('Exporting svn repository %s to %s', url, location) + with indent_log(): + if os.path.exists(location): + # Subversion doesn't like to check out over an existing + # directory --force fixes this, but was only added in svn 1.5 + rmtree(location) + cmd_args = make_command( + 'export', self.get_remote_call_options(), + rev_options.to_args(), url, location, + ) + self.run_command(cmd_args, show_stdout=False) + + def fetch_new(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + rev_display = rev_options.to_display() + logger.info( + 'Checking out %s%s to %s', + url, + rev_display, + display_path(dest), + ) + cmd_args = make_command( + 'checkout', '-q', self.get_remote_call_options(), + rev_options.to_args(), url, dest, + ) + self.run_command(cmd_args) + + def switch(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + cmd_args = make_command( + 'switch', self.get_remote_call_options(), rev_options.to_args(), + url, dest, + ) + self.run_command(cmd_args) + + def update(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + cmd_args = make_command( + 'update', self.get_remote_call_options(), rev_options.to_args(), + dest, + ) + self.run_command(cmd_args) + + +vcs.register(Subversion) diff --git a/Lib/site-packages/pip/_internal/vcs/versioncontrol.py b/Lib/site-packages/pip/_internal/vcs/versioncontrol.py new file mode 100644 index 0000000..7cfd568 --- /dev/null +++ b/Lib/site-packages/pip/_internal/vcs/versioncontrol.py @@ -0,0 +1,700 @@ +"""Handles all VCS (version control) support""" + +from __future__ import absolute_import + +import errno +import logging +import os +import shutil +import sys + +from pip._vendor import pkg_resources +from pip._vendor.six.moves.urllib import parse as urllib_parse + +from pip._internal.exceptions import BadCommand +from pip._internal.utils.compat import samefile +from pip._internal.utils.misc import ( + ask_path_exists, + backup_dir, + display_path, + hide_url, + hide_value, + rmtree, +) +from pip._internal.utils.subprocess import call_subprocess, make_command +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import get_url_scheme + +if MYPY_CHECK_RUNNING: + from typing import ( + Any, Dict, Iterable, Iterator, List, Mapping, Optional, Text, Tuple, + Type, Union + ) + from pip._internal.utils.ui import SpinnerInterface + from pip._internal.utils.misc import HiddenText + from pip._internal.utils.subprocess import CommandArgs + + AuthInfo = Tuple[Optional[str], Optional[str]] + + +__all__ = ['vcs'] + + +logger = logging.getLogger(__name__) + + +def is_url(name): + # type: (Union[str, Text]) -> bool + """ + Return true if the name looks like a URL. + """ + scheme = get_url_scheme(name) + if scheme is None: + return False + return scheme in ['http', 'https', 'file', 'ftp'] + vcs.all_schemes + + +def make_vcs_requirement_url(repo_url, rev, project_name, subdir=None): + # type: (str, str, str, Optional[str]) -> str + """ + Return the URL for a VCS requirement. + + Args: + repo_url: the remote VCS url, with any needed VCS prefix (e.g. "git+"). + project_name: the (unescaped) project name. + """ + egg_project_name = pkg_resources.to_filename(project_name) + req = '{}@{}#egg={}'.format(repo_url, rev, egg_project_name) + if subdir: + req += '&subdirectory={}'.format(subdir) + + return req + + +def find_path_to_setup_from_repo_root(location, repo_root): + # type: (str, str) -> Optional[str] + """ + Find the path to `setup.py` by searching up the filesystem from `location`. + Return the path to `setup.py` relative to `repo_root`. + Return None if `setup.py` is in `repo_root` or cannot be found. + """ + # find setup.py + orig_location = location + while not os.path.exists(os.path.join(location, 'setup.py')): + last_location = location + location = os.path.dirname(location) + if location == last_location: + # We've traversed up to the root of the filesystem without + # finding setup.py + logger.warning( + "Could not find setup.py for directory %s (tried all " + "parent directories)", + orig_location, + ) + return None + + if samefile(repo_root, location): + return None + + return os.path.relpath(location, repo_root) + + +class RemoteNotFoundError(Exception): + pass + + +class RevOptions(object): + + """ + Encapsulates a VCS-specific revision to install, along with any VCS + install options. + + Instances of this class should be treated as if immutable. + """ + + def __init__( + self, + vc_class, # type: Type[VersionControl] + rev=None, # type: Optional[str] + extra_args=None, # type: Optional[CommandArgs] + ): + # type: (...) -> None + """ + Args: + vc_class: a VersionControl subclass. + rev: the name of the revision to install. + extra_args: a list of extra options. + """ + if extra_args is None: + extra_args = [] + + self.extra_args = extra_args + self.rev = rev + self.vc_class = vc_class + self.branch_name = None # type: Optional[str] + + def __repr__(self): + # type: () -> str + return ''.format(self.vc_class.name, self.rev) + + @property + def arg_rev(self): + # type: () -> Optional[str] + if self.rev is None: + return self.vc_class.default_arg_rev + + return self.rev + + def to_args(self): + # type: () -> CommandArgs + """ + Return the VCS-specific command arguments. + """ + args = [] # type: CommandArgs + rev = self.arg_rev + if rev is not None: + args += self.vc_class.get_base_rev_args(rev) + args += self.extra_args + + return args + + def to_display(self): + # type: () -> str + if not self.rev: + return '' + + return ' (to revision {})'.format(self.rev) + + def make_new(self, rev): + # type: (str) -> RevOptions + """ + Make a copy of the current instance, but with a new rev. + + Args: + rev: the name of the revision for the new object. + """ + return self.vc_class.make_rev_options(rev, extra_args=self.extra_args) + + +class VcsSupport(object): + _registry = {} # type: Dict[str, VersionControl] + schemes = ['ssh', 'git', 'hg', 'bzr', 'sftp', 'svn'] + + def __init__(self): + # type: () -> None + # Register more schemes with urlparse for various version control + # systems + urllib_parse.uses_netloc.extend(self.schemes) + # Python >= 2.7.4, 3.3 doesn't have uses_fragment + if getattr(urllib_parse, 'uses_fragment', None): + urllib_parse.uses_fragment.extend(self.schemes) + super(VcsSupport, self).__init__() + + def __iter__(self): + # type: () -> Iterator[str] + return self._registry.__iter__() + + @property + def backends(self): + # type: () -> List[VersionControl] + return list(self._registry.values()) + + @property + def dirnames(self): + # type: () -> List[str] + return [backend.dirname for backend in self.backends] + + @property + def all_schemes(self): + # type: () -> List[str] + schemes = [] # type: List[str] + for backend in self.backends: + schemes.extend(backend.schemes) + return schemes + + def register(self, cls): + # type: (Type[VersionControl]) -> None + if not hasattr(cls, 'name'): + logger.warning('Cannot register VCS %s', cls.__name__) + return + if cls.name not in self._registry: + self._registry[cls.name] = cls() + logger.debug('Registered VCS backend: %s', cls.name) + + def unregister(self, name): + # type: (str) -> None + if name in self._registry: + del self._registry[name] + + def get_backend_for_dir(self, location): + # type: (str) -> Optional[VersionControl] + """ + Return a VersionControl object if a repository of that type is found + at the given directory. + """ + for vcs_backend in self._registry.values(): + if vcs_backend.controls_location(location): + logger.debug('Determine that %s uses VCS: %s', + location, vcs_backend.name) + return vcs_backend + return None + + def get_backend_for_scheme(self, scheme): + # type: (str) -> Optional[VersionControl] + """ + Return a VersionControl object or None. + """ + for vcs_backend in self._registry.values(): + if scheme in vcs_backend.schemes: + return vcs_backend + return None + + def get_backend(self, name): + # type: (str) -> Optional[VersionControl] + """ + Return a VersionControl object or None. + """ + name = name.lower() + return self._registry.get(name) + + +vcs = VcsSupport() + + +class VersionControl(object): + name = '' + dirname = '' + repo_name = '' + # List of supported schemes for this Version Control + schemes = () # type: Tuple[str, ...] + # Iterable of environment variable names to pass to call_subprocess(). + unset_environ = () # type: Tuple[str, ...] + default_arg_rev = None # type: Optional[str] + + @classmethod + def should_add_vcs_url_prefix(cls, remote_url): + # type: (str) -> bool + """ + Return whether the vcs prefix (e.g. "git+") should be added to a + repository's remote url when used in a requirement. + """ + return not remote_url.lower().startswith('{}:'.format(cls.name)) + + @classmethod + def get_subdirectory(cls, location): + # type: (str) -> Optional[str] + """ + Return the path to setup.py, relative to the repo root. + Return None if setup.py is in the repo root. + """ + return None + + @classmethod + def get_requirement_revision(cls, repo_dir): + # type: (str) -> str + """ + Return the revision string that should be used in a requirement. + """ + return cls.get_revision(repo_dir) + + @classmethod + def get_src_requirement(cls, repo_dir, project_name): + # type: (str, str) -> Optional[str] + """ + Return the requirement string to use to redownload the files + currently at the given repository directory. + + Args: + project_name: the (unescaped) project name. + + The return value has a form similar to the following: + + {repository_url}@{revision}#egg={project_name} + """ + repo_url = cls.get_remote_url(repo_dir) + if repo_url is None: + return None + + if cls.should_add_vcs_url_prefix(repo_url): + repo_url = '{}+{}'.format(cls.name, repo_url) + + revision = cls.get_requirement_revision(repo_dir) + subdir = cls.get_subdirectory(repo_dir) + req = make_vcs_requirement_url(repo_url, revision, project_name, + subdir=subdir) + + return req + + @staticmethod + def get_base_rev_args(rev): + # type: (str) -> List[str] + """ + Return the base revision arguments for a vcs command. + + Args: + rev: the name of a revision to install. Cannot be None. + """ + raise NotImplementedError + + def is_immutable_rev_checkout(self, url, dest): + # type: (str, str) -> bool + """ + Return true if the commit hash checked out at dest matches + the revision in url. + + Always return False, if the VCS does not support immutable commit + hashes. + + This method does not check if there are local uncommitted changes + in dest after checkout, as pip currently has no use case for that. + """ + return False + + @classmethod + def make_rev_options(cls, rev=None, extra_args=None): + # type: (Optional[str], Optional[CommandArgs]) -> RevOptions + """ + Return a RevOptions object. + + Args: + rev: the name of a revision to install. + extra_args: a list of extra options. + """ + return RevOptions(cls, rev, extra_args=extra_args) + + @classmethod + def _is_local_repository(cls, repo): + # type: (str) -> bool + """ + posix absolute paths start with os.path.sep, + win32 ones start with drive (like c:\\folder) + """ + drive, tail = os.path.splitdrive(repo) + return repo.startswith(os.path.sep) or bool(drive) + + def export(self, location, url): + # type: (str, HiddenText) -> None + """ + Export the repository at the url to the destination location + i.e. only download the files, without vcs informations + + :param url: the repository URL starting with a vcs prefix. + """ + raise NotImplementedError + + @classmethod + def get_netloc_and_auth(cls, netloc, scheme): + # type: (str, str) -> Tuple[str, Tuple[Optional[str], Optional[str]]] + """ + Parse the repository URL's netloc, and return the new netloc to use + along with auth information. + + Args: + netloc: the original repository URL netloc. + scheme: the repository URL's scheme without the vcs prefix. + + This is mainly for the Subversion class to override, so that auth + information can be provided via the --username and --password options + instead of through the URL. For other subclasses like Git without + such an option, auth information must stay in the URL. + + Returns: (netloc, (username, password)). + """ + return netloc, (None, None) + + @classmethod + def get_url_rev_and_auth(cls, url): + # type: (str) -> Tuple[str, Optional[str], AuthInfo] + """ + Parse the repository URL to use, and return the URL, revision, + and auth info to use. + + Returns: (url, rev, (username, password)). + """ + scheme, netloc, path, query, frag = urllib_parse.urlsplit(url) + if '+' not in scheme: + raise ValueError( + "Sorry, {!r} is a malformed VCS url. " + "The format is +://, " + "e.g. svn+http://myrepo/svn/MyApp#egg=MyApp".format(url) + ) + # Remove the vcs prefix. + scheme = scheme.split('+', 1)[1] + netloc, user_pass = cls.get_netloc_and_auth(netloc, scheme) + rev = None + if '@' in path: + path, rev = path.rsplit('@', 1) + url = urllib_parse.urlunsplit((scheme, netloc, path, query, '')) + return url, rev, user_pass + + @staticmethod + def make_rev_args(username, password): + # type: (Optional[str], Optional[HiddenText]) -> CommandArgs + """ + Return the RevOptions "extra arguments" to use in obtain(). + """ + return [] + + def get_url_rev_options(self, url): + # type: (HiddenText) -> Tuple[HiddenText, RevOptions] + """ + Return the URL and RevOptions object to use in obtain() and in + some cases export(), as a tuple (url, rev_options). + """ + secret_url, rev, user_pass = self.get_url_rev_and_auth(url.secret) + username, secret_password = user_pass + password = None # type: Optional[HiddenText] + if secret_password is not None: + password = hide_value(secret_password) + extra_args = self.make_rev_args(username, password) + rev_options = self.make_rev_options(rev, extra_args=extra_args) + + return hide_url(secret_url), rev_options + + @staticmethod + def normalize_url(url): + # type: (str) -> str + """ + Normalize a URL for comparison by unquoting it and removing any + trailing slash. + """ + return urllib_parse.unquote(url).rstrip('/') + + @classmethod + def compare_urls(cls, url1, url2): + # type: (str, str) -> bool + """ + Compare two repo URLs for identity, ignoring incidental differences. + """ + return (cls.normalize_url(url1) == cls.normalize_url(url2)) + + def fetch_new(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + """ + Fetch a revision from a repository, in the case that this is the + first fetch from the repository. + + Args: + dest: the directory to fetch the repository to. + rev_options: a RevOptions object. + """ + raise NotImplementedError + + def switch(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + """ + Switch the repo at ``dest`` to point to ``URL``. + + Args: + rev_options: a RevOptions object. + """ + raise NotImplementedError + + def update(self, dest, url, rev_options): + # type: (str, HiddenText, RevOptions) -> None + """ + Update an already-existing repo to the given ``rev_options``. + + Args: + rev_options: a RevOptions object. + """ + raise NotImplementedError + + @classmethod + def is_commit_id_equal(cls, dest, name): + # type: (str, Optional[str]) -> bool + """ + Return whether the id of the current commit equals the given name. + + Args: + dest: the repository directory. + name: a string name. + """ + raise NotImplementedError + + def obtain(self, dest, url): + # type: (str, HiddenText) -> None + """ + Install or update in editable mode the package represented by this + VersionControl object. + + :param dest: the repository directory in which to install or update. + :param url: the repository URL starting with a vcs prefix. + """ + url, rev_options = self.get_url_rev_options(url) + + if not os.path.exists(dest): + self.fetch_new(dest, url, rev_options) + return + + rev_display = rev_options.to_display() + if self.is_repository_directory(dest): + existing_url = self.get_remote_url(dest) + if self.compare_urls(existing_url, url.secret): + logger.debug( + '%s in %s exists, and has correct URL (%s)', + self.repo_name.title(), + display_path(dest), + url, + ) + if not self.is_commit_id_equal(dest, rev_options.rev): + logger.info( + 'Updating %s %s%s', + display_path(dest), + self.repo_name, + rev_display, + ) + self.update(dest, url, rev_options) + else: + logger.info('Skipping because already up-to-date.') + return + + logger.warning( + '%s %s in %s exists with URL %s', + self.name, + self.repo_name, + display_path(dest), + existing_url, + ) + prompt = ('(s)witch, (i)gnore, (w)ipe, (b)ackup ', + ('s', 'i', 'w', 'b')) + else: + logger.warning( + 'Directory %s already exists, and is not a %s %s.', + dest, + self.name, + self.repo_name, + ) + # https://github.com/python/mypy/issues/1174 + prompt = ('(i)gnore, (w)ipe, (b)ackup ', # type: ignore + ('i', 'w', 'b')) + + logger.warning( + 'The plan is to install the %s repository %s', + self.name, + url, + ) + response = ask_path_exists('What to do? %s' % prompt[0], prompt[1]) + + if response == 'a': + sys.exit(-1) + + if response == 'w': + logger.warning('Deleting %s', display_path(dest)) + rmtree(dest) + self.fetch_new(dest, url, rev_options) + return + + if response == 'b': + dest_dir = backup_dir(dest) + logger.warning( + 'Backing up %s to %s', display_path(dest), dest_dir, + ) + shutil.move(dest, dest_dir) + self.fetch_new(dest, url, rev_options) + return + + # Do nothing if the response is "i". + if response == 's': + logger.info( + 'Switching %s %s to %s%s', + self.repo_name, + display_path(dest), + url, + rev_display, + ) + self.switch(dest, url, rev_options) + + def unpack(self, location, url): + # type: (str, HiddenText) -> None + """ + Clean up current location and download the url repository + (and vcs infos) into location + + :param url: the repository URL starting with a vcs prefix. + """ + if os.path.exists(location): + rmtree(location) + self.obtain(location, url=url) + + @classmethod + def get_remote_url(cls, location): + # type: (str) -> str + """ + Return the url used at location + + Raises RemoteNotFoundError if the repository does not have a remote + url configured. + """ + raise NotImplementedError + + @classmethod + def get_revision(cls, location): + # type: (str) -> str + """ + Return the current commit id of the files at the given location. + """ + raise NotImplementedError + + @classmethod + def run_command( + cls, + cmd, # type: Union[List[str], CommandArgs] + show_stdout=True, # type: bool + cwd=None, # type: Optional[str] + on_returncode='raise', # type: str + extra_ok_returncodes=None, # type: Optional[Iterable[int]] + command_desc=None, # type: Optional[str] + extra_environ=None, # type: Optional[Mapping[str, Any]] + spinner=None, # type: Optional[SpinnerInterface] + log_failed_cmd=True # type: bool + ): + # type: (...) -> Text + """ + Run a VCS subcommand + This is simply a wrapper around call_subprocess that adds the VCS + command name, and checks that the VCS is available + """ + cmd = make_command(cls.name, *cmd) + try: + return call_subprocess(cmd, show_stdout, cwd, + on_returncode=on_returncode, + extra_ok_returncodes=extra_ok_returncodes, + command_desc=command_desc, + extra_environ=extra_environ, + unset_environ=cls.unset_environ, + spinner=spinner, + log_failed_cmd=log_failed_cmd) + except OSError as e: + # errno.ENOENT = no such file or directory + # In other words, the VCS executable isn't available + if e.errno == errno.ENOENT: + raise BadCommand( + 'Cannot find command %r - do you have ' + '%r installed and in your ' + 'PATH?' % (cls.name, cls.name)) + else: + raise # re-raise exception if a different error occurred + + @classmethod + def is_repository_directory(cls, path): + # type: (str) -> bool + """ + Return whether a directory path is a repository directory. + """ + logger.debug('Checking in %s for %s (%s)...', + path, cls.dirname, cls.name) + return os.path.exists(os.path.join(path, cls.dirname)) + + @classmethod + def controls_location(cls, location): + # type: (str) -> bool + """ + Check if a location is controlled by the vcs. + It is meant to be overridden to implement smarter detection + mechanisms for specific vcs. + + This can do more than is_repository_directory() alone. For example, + the Git override checks that Git is actually available. + """ + return cls.is_repository_directory(location) diff --git a/Lib/site-packages/pip/_internal/wheel_builder.py b/Lib/site-packages/pip/_internal/wheel_builder.py new file mode 100644 index 0000000..7c7820d --- /dev/null +++ b/Lib/site-packages/pip/_internal/wheel_builder.py @@ -0,0 +1,305 @@ +"""Orchestrator for building wheels from InstallRequirements. +""" + +# The following comment should be removed at some point in the future. +# mypy: strict-optional=False + +import logging +import os.path +import re +import shutil + +from pip._internal.models.link import Link +from pip._internal.operations.build.wheel import build_wheel_pep517 +from pip._internal.operations.build.wheel_legacy import build_wheel_legacy +from pip._internal.utils.logging import indent_log +from pip._internal.utils.misc import ensure_dir, hash_file, is_wheel_installed +from pip._internal.utils.setuptools_build import make_setuptools_clean_args +from pip._internal.utils.subprocess import call_subprocess +from pip._internal.utils.temp_dir import TempDirectory +from pip._internal.utils.typing import MYPY_CHECK_RUNNING +from pip._internal.utils.urls import path_to_url +from pip._internal.vcs import vcs + +if MYPY_CHECK_RUNNING: + from typing import ( + Any, Callable, Iterable, List, Optional, Pattern, Tuple, + ) + + from pip._internal.cache import WheelCache + from pip._internal.req.req_install import InstallRequirement + + BinaryAllowedPredicate = Callable[[InstallRequirement], bool] + BuildResult = Tuple[List[InstallRequirement], List[InstallRequirement]] + +logger = logging.getLogger(__name__) + + +def _contains_egg_info( + s, _egg_info_re=re.compile(r'([a-z0-9_.]+)-([a-z0-9_.!+-]+)', re.I)): + # type: (str, Pattern[str]) -> bool + """Determine whether the string looks like an egg_info. + + :param s: The string to parse. E.g. foo-2.1 + """ + return bool(_egg_info_re.search(s)) + + +def _should_build( + req, # type: InstallRequirement + need_wheel, # type: bool + check_binary_allowed, # type: BinaryAllowedPredicate +): + # type: (...) -> bool + """Return whether an InstallRequirement should be built into a wheel.""" + if req.constraint: + # never build requirements that are merely constraints + return False + if req.is_wheel: + if need_wheel: + logger.info( + 'Skipping %s, due to already being wheel.', req.name, + ) + return False + + if need_wheel: + # i.e. pip wheel, not pip install + return True + + # From this point, this concerns the pip install command only + # (need_wheel=False). + + if not req.use_pep517 and not is_wheel_installed(): + # we don't build legacy requirements if wheel is not installed + return False + + if req.editable or not req.source_dir: + return False + + if not check_binary_allowed(req): + logger.info( + "Skipping wheel build for %s, due to binaries " + "being disabled for it.", req.name, + ) + return False + + return True + + +def should_build_for_wheel_command( + req, # type: InstallRequirement +): + # type: (...) -> bool + return _should_build( + req, need_wheel=True, check_binary_allowed=_always_true + ) + + +def should_build_for_install_command( + req, # type: InstallRequirement + check_binary_allowed, # type: BinaryAllowedPredicate +): + # type: (...) -> bool + return _should_build( + req, need_wheel=False, check_binary_allowed=check_binary_allowed + ) + + +def _should_cache( + req, # type: InstallRequirement +): + # type: (...) -> Optional[bool] + """ + Return whether a built InstallRequirement can be stored in the persistent + wheel cache, assuming the wheel cache is available, and _should_build() + has determined a wheel needs to be built. + """ + if not should_build_for_install_command( + req, check_binary_allowed=_always_true + ): + # never cache if pip install would not have built + # (editable mode, etc) + return False + + if req.link and req.link.is_vcs: + # VCS checkout. Do not cache + # unless it points to an immutable commit hash. + assert not req.editable + assert req.source_dir + vcs_backend = vcs.get_backend_for_scheme(req.link.scheme) + assert vcs_backend + if vcs_backend.is_immutable_rev_checkout(req.link.url, req.source_dir): + return True + return False + + base, ext = req.link.splitext() + if _contains_egg_info(base): + return True + + # Otherwise, do not cache. + return False + + +def _get_cache_dir( + req, # type: InstallRequirement + wheel_cache, # type: WheelCache +): + # type: (...) -> str + """Return the persistent or temporary cache directory where the built + wheel need to be stored. + """ + cache_available = bool(wheel_cache.cache_dir) + if cache_available and _should_cache(req): + cache_dir = wheel_cache.get_path_for_link(req.link) + else: + cache_dir = wheel_cache.get_ephem_path_for_link(req.link) + return cache_dir + + +def _always_true(_): + # type: (Any) -> bool + return True + + +def _build_one( + req, # type: InstallRequirement + output_dir, # type: str + build_options, # type: List[str] + global_options, # type: List[str] +): + # type: (...) -> Optional[str] + """Build one wheel. + + :return: The filename of the built wheel, or None if the build failed. + """ + try: + ensure_dir(output_dir) + except OSError as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, e, + ) + return None + + # Install build deps into temporary directory (PEP 518) + with req.build_env: + return _build_one_inside_env( + req, output_dir, build_options, global_options + ) + + +def _build_one_inside_env( + req, # type: InstallRequirement + output_dir, # type: str + build_options, # type: List[str] + global_options, # type: List[str] +): + # type: (...) -> Optional[str] + with TempDirectory(kind="wheel") as temp_dir: + if req.use_pep517: + wheel_path = build_wheel_pep517( + name=req.name, + backend=req.pep517_backend, + metadata_directory=req.metadata_directory, + build_options=build_options, + tempd=temp_dir.path, + ) + else: + wheel_path = build_wheel_legacy( + name=req.name, + setup_py_path=req.setup_py_path, + source_dir=req.unpacked_source_directory, + global_options=global_options, + build_options=build_options, + tempd=temp_dir.path, + ) + + if wheel_path is not None: + wheel_name = os.path.basename(wheel_path) + dest_path = os.path.join(output_dir, wheel_name) + try: + wheel_hash, length = hash_file(wheel_path) + shutil.move(wheel_path, dest_path) + logger.info('Created wheel for %s: ' + 'filename=%s size=%d sha256=%s', + req.name, wheel_name, length, + wheel_hash.hexdigest()) + logger.info('Stored in directory: %s', output_dir) + return dest_path + except Exception as e: + logger.warning( + "Building wheel for %s failed: %s", + req.name, e, + ) + # Ignore return, we can't do anything else useful. + if not req.use_pep517: + _clean_one_legacy(req, global_options) + return None + + +def _clean_one_legacy(req, global_options): + # type: (InstallRequirement, List[str]) -> bool + clean_args = make_setuptools_clean_args( + req.setup_py_path, + global_options=global_options, + ) + + logger.info('Running setup.py clean for %s', req.name) + try: + call_subprocess(clean_args, cwd=req.source_dir) + return True + except Exception: + logger.error('Failed cleaning build dir for %s', req.name) + return False + + +def build( + requirements, # type: Iterable[InstallRequirement] + wheel_cache, # type: WheelCache + build_options, # type: List[str] + global_options, # type: List[str] +): + # type: (...) -> BuildResult + """Build wheels. + + :return: The list of InstallRequirement that succeeded to build and + the list of InstallRequirement that failed to build. + """ + if not requirements: + return [], [] + + # Build the wheels. + logger.info( + 'Building wheels for collected packages: %s', + ', '.join(req.name for req in requirements), + ) + + with indent_log(): + build_successes, build_failures = [], [] + for req in requirements: + cache_dir = _get_cache_dir(req, wheel_cache) + wheel_file = _build_one( + req, cache_dir, build_options, global_options + ) + if wheel_file: + # Update the link for this. + req.link = Link(path_to_url(wheel_file)) + req.local_file_path = req.link.file_path + assert req.link.is_wheel + build_successes.append(req) + else: + build_failures.append(req) + + # notify success/failure + if build_successes: + logger.info( + 'Successfully built %s', + ' '.join([req.name for req in build_successes]), + ) + if build_failures: + logger.info( + 'Failed to build %s', + ' '.join([req.name for req in build_failures]), + ) + # Return a list of requirements that failed to build + return build_successes, build_failures diff --git a/Lib/site-packages/pip/_vendor/__init__.py b/Lib/site-packages/pip/_vendor/__init__.py new file mode 100644 index 0000000..a0fcb8e --- /dev/null +++ b/Lib/site-packages/pip/_vendor/__init__.py @@ -0,0 +1,109 @@ +""" +pip._vendor is for vendoring dependencies of pip to prevent needing pip to +depend on something external. + +Files inside of pip._vendor should be considered immutable and should only be +updated to versions from upstream. +""" +from __future__ import absolute_import + +import glob +import os.path +import sys + +# Downstream redistributors which have debundled our dependencies should also +# patch this value to be true. This will trigger the additional patching +# to cause things like "six" to be available as pip. +DEBUNDLED = False + +# By default, look in this directory for a bunch of .whl files which we will +# add to the beginning of sys.path before attempting to import anything. This +# is done to support downstream re-distributors like Debian and Fedora who +# wish to create their own Wheels for our dependencies to aid in debundling. +WHEEL_DIR = os.path.abspath(os.path.dirname(__file__)) + + +# Define a small helper function to alias our vendored modules to the real ones +# if the vendored ones do not exist. This idea of this was taken from +# https://github.com/kennethreitz/requests/pull/2567. +def vendored(modulename): + vendored_name = "{0}.{1}".format(__name__, modulename) + + try: + __import__(modulename, globals(), locals(), level=0) + except ImportError: + # We can just silently allow import failures to pass here. If we + # got to this point it means that ``import pip._vendor.whatever`` + # failed and so did ``import whatever``. Since we're importing this + # upfront in an attempt to alias imports, not erroring here will + # just mean we get a regular import error whenever pip *actually* + # tries to import one of these modules to use it, which actually + # gives us a better error message than we would have otherwise + # gotten. + pass + else: + sys.modules[vendored_name] = sys.modules[modulename] + base, head = vendored_name.rsplit(".", 1) + setattr(sys.modules[base], head, sys.modules[modulename]) + + +# If we're operating in a debundled setup, then we want to go ahead and trigger +# the aliasing of our vendored libraries as well as looking for wheels to add +# to our sys.path. This will cause all of this code to be a no-op typically +# however downstream redistributors can enable it in a consistent way across +# all platforms. +if DEBUNDLED: + # Actually look inside of WHEEL_DIR to find .whl files and add them to the + # front of our sys.path. + sys.path[:] = glob.glob(os.path.join(WHEEL_DIR, "*.whl")) + sys.path + + # Actually alias all of our vendored dependencies. + vendored("cachecontrol") + vendored("colorama") + vendored("contextlib2") + vendored("distlib") + vendored("distro") + vendored("html5lib") + vendored("six") + vendored("six.moves") + vendored("six.moves.urllib") + vendored("six.moves.urllib.parse") + vendored("packaging") + vendored("packaging.version") + vendored("packaging.specifiers") + vendored("pep517") + vendored("pkg_resources") + vendored("progress") + vendored("pytoml") + vendored("retrying") + vendored("requests") + vendored("requests.exceptions") + vendored("requests.packages") + vendored("requests.packages.urllib3") + vendored("requests.packages.urllib3._collections") + vendored("requests.packages.urllib3.connection") + vendored("requests.packages.urllib3.connectionpool") + vendored("requests.packages.urllib3.contrib") + vendored("requests.packages.urllib3.contrib.ntlmpool") + vendored("requests.packages.urllib3.contrib.pyopenssl") + vendored("requests.packages.urllib3.exceptions") + vendored("requests.packages.urllib3.fields") + vendored("requests.packages.urllib3.filepost") + vendored("requests.packages.urllib3.packages") + vendored("requests.packages.urllib3.packages.ordered_dict") + vendored("requests.packages.urllib3.packages.six") + vendored("requests.packages.urllib3.packages.ssl_match_hostname") + vendored("requests.packages.urllib3.packages.ssl_match_hostname." + "_implementation") + vendored("requests.packages.urllib3.poolmanager") + vendored("requests.packages.urllib3.request") + vendored("requests.packages.urllib3.response") + vendored("requests.packages.urllib3.util") + vendored("requests.packages.urllib3.util.connection") + vendored("requests.packages.urllib3.util.request") + vendored("requests.packages.urllib3.util.response") + vendored("requests.packages.urllib3.util.retry") + vendored("requests.packages.urllib3.util.ssl_") + vendored("requests.packages.urllib3.util.timeout") + vendored("requests.packages.urllib3.util.url") + vendored("urllib3") diff --git a/Lib/site-packages/pip/_vendor/appdirs.py b/Lib/site-packages/pip/_vendor/appdirs.py new file mode 100644 index 0000000..3a52b75 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/appdirs.py @@ -0,0 +1,639 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright (c) 2005-2010 ActiveState Software Inc. +# Copyright (c) 2013 Eddy Petrișor + +"""Utilities for determining application-specific dirs. + +See for details and usage. +""" +# Dev Notes: +# - MSDN on where to store app data files: +# http://support.microsoft.com/default.aspx?scid=kb;en-us;310294#XSLTH3194121123120121120120 +# - Mac OS X: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/index.html +# - XDG spec for Un*x: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + +__version_info__ = (1, 4, 3) +__version__ = '.'.join(map(str, __version_info__)) + + +import sys +import os + +PY3 = sys.version_info[0] == 3 + +if PY3: + unicode = str + +if sys.platform.startswith('java'): + import platform + os_name = platform.java_ver()[3][0] + if os_name.startswith('Windows'): # "Windows XP", "Windows 7", etc. + system = 'win32' + elif os_name.startswith('Mac'): # "Mac OS X", etc. + system = 'darwin' + else: # "Linux", "SunOS", "FreeBSD", etc. + # Setting this to "linux2" is not ideal, but only Windows or Mac + # are actually checked for and the rest of the module expects + # *sys.platform* style strings. + system = 'linux2' +elif sys.platform == 'cli' and os.name == 'nt': + # Detect Windows in IronPython to match pip._internal.utils.compat.WINDOWS + # Discussion: + system = 'win32' +else: + system = sys.platform + + + +def user_data_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user data directories are: + Mac OS X: ~/Library/Application Support/ # or ~/.config/, if the other does not exist + Unix: ~/.local/share/ # or in $XDG_DATA_HOME, if defined + Win XP (not roaming): C:\Documents and Settings\\Application Data\\ + Win XP (roaming): C:\Documents and Settings\\Local Settings\Application Data\\ + Win 7 (not roaming): C:\Users\\AppData\Local\\ + Win 7 (roaming): C:\Users\\AppData\Roaming\\ + + For Unix, we follow the XDG spec and support $XDG_DATA_HOME. + That means, by default "~/.local/share/". + """ + if system == "win32": + if appauthor is None: + appauthor = appname + const = roaming and "CSIDL_APPDATA" or "CSIDL_LOCAL_APPDATA" + path = os.path.normpath(_get_win_folder(const)) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + elif system == 'darwin': + path = os.path.expanduser('~/Library/Application Support/') + if appname: + path = os.path.join(path, appname) + if not os.path.isdir(path): + path = os.path.expanduser('~/.config/') + if appname: + path = os.path.join(path, appname) + else: + path = os.getenv('XDG_DATA_HOME', os.path.expanduser("~/.local/share")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def site_data_dir(appname=None, appauthor=None, version=None, multipath=False): + r"""Return full path to the user-shared data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "multipath" is an optional parameter only applicable to *nix + which indicates that the entire list of data dirs should be + returned. By default, the first item from XDG_DATA_DIRS is + returned, or '/usr/local/share/', + if XDG_DATA_DIRS is not set + + Typical site data directories are: + Mac OS X: /Library/Application Support/ + Unix: /usr/local/share/ or /usr/share/ + Win XP: C:\Documents and Settings\All Users\Application Data\\ + Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) + Win 7: C:\ProgramData\\ # Hidden, but writeable on Win 7. + + For Unix, this is using the $XDG_DATA_DIRS[0] default. + + WARNING: Do not use this on Windows. See the Vista-Fail note above for why. + """ + if system == "win32": + if appauthor is None: + appauthor = appname + path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA")) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + elif system == 'darwin': + path = os.path.expanduser('/Library/Application Support') + if appname: + path = os.path.join(path, appname) + else: + # XDG default for $XDG_DATA_DIRS + # only first, if multipath is False + path = os.getenv('XDG_DATA_DIRS', + os.pathsep.join(['/usr/local/share', '/usr/share'])) + pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] + if appname: + if version: + appname = os.path.join(appname, version) + pathlist = [os.path.join(x, appname) for x in pathlist] + + if multipath: + path = os.pathsep.join(pathlist) + else: + path = pathlist[0] + return path + + if appname and version: + path = os.path.join(path, version) + return path + + +def user_config_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific config dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user config directories are: + Mac OS X: same as user_data_dir + Unix: ~/.config/ # or in $XDG_CONFIG_HOME, if defined + Win *: same as user_data_dir + + For Unix, we follow the XDG spec and support $XDG_CONFIG_HOME. + That means, by default "~/.config/". + """ + if system in ["win32", "darwin"]: + path = user_data_dir(appname, appauthor, None, roaming) + else: + path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser("~/.config")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +# for the discussion regarding site_config_dir locations +# see +def site_config_dir(appname=None, appauthor=None, version=None, multipath=False): + r"""Return full path to the user-shared data dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "multipath" is an optional parameter only applicable to *nix + which indicates that the entire list of config dirs should be + returned. By default, the first item from XDG_CONFIG_DIRS is + returned, or '/etc/xdg/', if XDG_CONFIG_DIRS is not set + + Typical site config directories are: + Mac OS X: same as site_data_dir + Unix: /etc/xdg/ or $XDG_CONFIG_DIRS[i]/ for each value in + $XDG_CONFIG_DIRS + Win *: same as site_data_dir + Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) + + For Unix, this is using the $XDG_CONFIG_DIRS[0] default, if multipath=False + + WARNING: Do not use this on Windows. See the Vista-Fail note above for why. + """ + if system in ["win32", "darwin"]: + path = site_data_dir(appname, appauthor) + if appname and version: + path = os.path.join(path, version) + else: + # XDG default for $XDG_CONFIG_DIRS (missing or empty) + # see + # only first, if multipath is False + path = os.getenv('XDG_CONFIG_DIRS') or '/etc/xdg' + pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep) if x] + if appname: + if version: + appname = os.path.join(appname, version) + pathlist = [os.path.join(x, appname) for x in pathlist] + # always look in /etc directly as well + pathlist.append('/etc') + + if multipath: + path = os.pathsep.join(pathlist) + else: + path = pathlist[0] + return path + + +def user_cache_dir(appname=None, appauthor=None, version=None, opinion=True): + r"""Return full path to the user-specific cache dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "opinion" (boolean) can be False to disable the appending of + "Cache" to the base app data dir for Windows. See + discussion below. + + Typical user cache directories are: + Mac OS X: ~/Library/Caches/ + Unix: ~/.cache/ (XDG default) + Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Cache + Vista: C:\Users\\AppData\Local\\\Cache + + On Windows the only suggestion in the MSDN docs is that local settings go in + the `CSIDL_LOCAL_APPDATA` directory. This is identical to the non-roaming + app data dir (the default returned by `user_data_dir` above). Apps typically + put cache data somewhere *under* the given dir here. Some examples: + ...\Mozilla\Firefox\Profiles\\Cache + ...\Acme\SuperApp\Cache\1.0 + OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value. + This can be disabled with the `opinion=False` option. + """ + if system == "win32": + if appauthor is None: + appauthor = appname + path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA")) + # When using Python 2, return paths as bytes on Windows like we do on + # other operating systems. See helper function docs for more details. + if not PY3 and isinstance(path, unicode): + path = _win_path_to_bytes(path) + if appname: + if appauthor is not False: + path = os.path.join(path, appauthor, appname) + else: + path = os.path.join(path, appname) + if opinion: + path = os.path.join(path, "Cache") + elif system == 'darwin': + path = os.path.expanduser('~/Library/Caches') + if appname: + path = os.path.join(path, appname) + else: + path = os.getenv('XDG_CACHE_HOME', os.path.expanduser('~/.cache')) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def user_state_dir(appname=None, appauthor=None, version=None, roaming=False): + r"""Return full path to the user-specific state dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "roaming" (boolean, default False) can be set True to use the Windows + roaming appdata directory. That means that for users on a Windows + network setup for roaming profiles, this user data will be + sync'd on login. See + + for a discussion of issues. + + Typical user state directories are: + Mac OS X: same as user_data_dir + Unix: ~/.local/state/ # or in $XDG_STATE_HOME, if defined + Win *: same as user_data_dir + + For Unix, we follow this Debian proposal + to extend the XDG spec and support $XDG_STATE_HOME. + + That means, by default "~/.local/state/". + """ + if system in ["win32", "darwin"]: + path = user_data_dir(appname, appauthor, None, roaming) + else: + path = os.getenv('XDG_STATE_HOME', os.path.expanduser("~/.local/state")) + if appname: + path = os.path.join(path, appname) + if appname and version: + path = os.path.join(path, version) + return path + + +def user_log_dir(appname=None, appauthor=None, version=None, opinion=True): + r"""Return full path to the user-specific log dir for this application. + + "appname" is the name of application. + If None, just the system directory is returned. + "appauthor" (only used on Windows) is the name of the + appauthor or distributing body for this application. Typically + it is the owning company name. This falls back to appname. You may + pass False to disable it. + "version" is an optional version path element to append to the + path. You might want to use this if you want multiple versions + of your app to be able to run independently. If used, this + would typically be ".". + Only applied when appname is present. + "opinion" (boolean) can be False to disable the appending of + "Logs" to the base app data dir for Windows, and "log" to the + base cache dir for Unix. See discussion below. + + Typical user log directories are: + Mac OS X: ~/Library/Logs/ + Unix: ~/.cache//log # or under $XDG_CACHE_HOME if defined + Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Logs + Vista: C:\Users\\AppData\Local\\\Logs + + On Windows the only suggestion in the MSDN docs is that local settings + go in the `CSIDL_LOCAL_APPDATA` directory. (Note: I'm interested in + examples of what some windows apps use for a logs dir.) + + OPINION: This function appends "Logs" to the `CSIDL_LOCAL_APPDATA` + value for Windows and appends "log" to the user cache dir for Unix. + This can be disabled with the `opinion=False` option. + """ + if system == "darwin": + path = os.path.join( + os.path.expanduser('~/Library/Logs'), + appname) + elif system == "win32": + path = user_data_dir(appname, appauthor, version) + version = False + if opinion: + path = os.path.join(path, "Logs") + else: + path = user_cache_dir(appname, appauthor, version) + version = False + if opinion: + path = os.path.join(path, "log") + if appname and version: + path = os.path.join(path, version) + return path + + +class AppDirs(object): + """Convenience wrapper for getting application dirs.""" + def __init__(self, appname=None, appauthor=None, version=None, + roaming=False, multipath=False): + self.appname = appname + self.appauthor = appauthor + self.version = version + self.roaming = roaming + self.multipath = multipath + + @property + def user_data_dir(self): + return user_data_dir(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_data_dir(self): + return site_data_dir(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_config_dir(self): + return user_config_dir(self.appname, self.appauthor, + version=self.version, roaming=self.roaming) + + @property + def site_config_dir(self): + return site_config_dir(self.appname, self.appauthor, + version=self.version, multipath=self.multipath) + + @property + def user_cache_dir(self): + return user_cache_dir(self.appname, self.appauthor, + version=self.version) + + @property + def user_state_dir(self): + return user_state_dir(self.appname, self.appauthor, + version=self.version) + + @property + def user_log_dir(self): + return user_log_dir(self.appname, self.appauthor, + version=self.version) + + +#---- internal support stuff + +def _get_win_folder_from_registry(csidl_name): + """This is a fallback technique at best. I'm not sure if using the + registry for this guarantees us the correct answer for all CSIDL_* + names. + """ + if PY3: + import winreg as _winreg + else: + import _winreg + + shell_folder_name = { + "CSIDL_APPDATA": "AppData", + "CSIDL_COMMON_APPDATA": "Common AppData", + "CSIDL_LOCAL_APPDATA": "Local AppData", + }[csidl_name] + + key = _winreg.OpenKey( + _winreg.HKEY_CURRENT_USER, + r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" + ) + dir, type = _winreg.QueryValueEx(key, shell_folder_name) + return dir + + +def _get_win_folder_with_pywin32(csidl_name): + from win32com.shell import shellcon, shell + dir = shell.SHGetFolderPath(0, getattr(shellcon, csidl_name), 0, 0) + # Try to make this a unicode path because SHGetFolderPath does + # not return unicode strings when there is unicode data in the + # path. + try: + dir = unicode(dir) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in dir: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + try: + import win32api + dir = win32api.GetShortPathName(dir) + except ImportError: + pass + except UnicodeError: + pass + return dir + + +def _get_win_folder_with_ctypes(csidl_name): + import ctypes + + csidl_const = { + "CSIDL_APPDATA": 26, + "CSIDL_COMMON_APPDATA": 35, + "CSIDL_LOCAL_APPDATA": 28, + }[csidl_name] + + buf = ctypes.create_unicode_buffer(1024) + ctypes.windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in buf: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf2 = ctypes.create_unicode_buffer(1024) + if ctypes.windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): + buf = buf2 + + return buf.value + +def _get_win_folder_with_jna(csidl_name): + import array + from com.sun import jna + from com.sun.jna.platform import win32 + + buf_size = win32.WinDef.MAX_PATH * 2 + buf = array.zeros('c', buf_size) + shell = win32.Shell32.INSTANCE + shell.SHGetFolderPath(None, getattr(win32.ShlObj, csidl_name), None, win32.ShlObj.SHGFP_TYPE_CURRENT, buf) + dir = jna.Native.toString(buf.tostring()).rstrip("\0") + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in dir: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf = array.zeros('c', buf_size) + kernel = win32.Kernel32.INSTANCE + if kernel.GetShortPathName(dir, buf, buf_size): + dir = jna.Native.toString(buf.tostring()).rstrip("\0") + + return dir + +if system == "win32": + try: + from ctypes import windll + _get_win_folder = _get_win_folder_with_ctypes + except ImportError: + try: + import com.sun.jna + _get_win_folder = _get_win_folder_with_jna + except ImportError: + _get_win_folder = _get_win_folder_from_registry + + +def _win_path_to_bytes(path): + """Encode Windows paths to bytes. Only used on Python 2. + + Motivation is to be consistent with other operating systems where paths + are also returned as bytes. This avoids problems mixing bytes and Unicode + elsewhere in the codebase. For more details and discussion see + . + + If encoding using ASCII and MBCS fails, return the original Unicode path. + """ + for encoding in ('ASCII', 'MBCS'): + try: + return path.encode(encoding) + except (UnicodeEncodeError, LookupError): + pass + return path + + +#---- self test code + +if __name__ == "__main__": + appname = "MyApp" + appauthor = "MyCompany" + + props = ("user_data_dir", + "user_config_dir", + "user_cache_dir", + "user_state_dir", + "user_log_dir", + "site_data_dir", + "site_config_dir") + + print("-- app dirs %s --" % __version__) + + print("-- app dirs (with optional 'version')") + dirs = AppDirs(appname, appauthor, version="1.0") + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (without optional 'version')") + dirs = AppDirs(appname, appauthor) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (without optional 'appauthor')") + dirs = AppDirs(appname) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) + + print("\n-- app dirs (with disabled 'appauthor')") + dirs = AppDirs(appname, appauthor=False) + for prop in props: + print("%s: %s" % (prop, getattr(dirs, prop))) diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py b/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py new file mode 100644 index 0000000..a1bbbbe --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py @@ -0,0 +1,11 @@ +"""CacheControl import Interface. + +Make it easy to import from cachecontrol without long namespaces. +""" +__author__ = "Eric Larson" +__email__ = "eric@ionrock.org" +__version__ = "0.12.6" + +from .wrapper import CacheControl +from .adapter import CacheControlAdapter +from .controller import CacheController diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py b/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py new file mode 100644 index 0000000..f1e0ad9 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py @@ -0,0 +1,57 @@ +import logging + +from pip._vendor import requests + +from pip._vendor.cachecontrol.adapter import CacheControlAdapter +from pip._vendor.cachecontrol.cache import DictCache +from pip._vendor.cachecontrol.controller import logger + +from argparse import ArgumentParser + + +def setup_logging(): + logger.setLevel(logging.DEBUG) + handler = logging.StreamHandler() + logger.addHandler(handler) + + +def get_session(): + adapter = CacheControlAdapter( + DictCache(), cache_etags=True, serializer=None, heuristic=None + ) + sess = requests.Session() + sess.mount("http://", adapter) + sess.mount("https://", adapter) + + sess.cache_controller = adapter.controller + return sess + + +def get_args(): + parser = ArgumentParser() + parser.add_argument("url", help="The URL to try and cache") + return parser.parse_args() + + +def main(args=None): + args = get_args() + sess = get_session() + + # Make a request to get a response + resp = sess.get(args.url) + + # Turn on logging + setup_logging() + + # try setting the cache + sess.cache_controller.cache_response(resp.request, resp.raw) + + # Now try to get it + if sess.cache_controller.cached_request(resp.request): + print("Cached!") + else: + print("Not cached :(") + + +if __name__ == "__main__": + main() diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py b/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py new file mode 100644 index 0000000..815650e --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py @@ -0,0 +1,133 @@ +import types +import functools +import zlib + +from pip._vendor.requests.adapters import HTTPAdapter + +from .controller import CacheController +from .cache import DictCache +from .filewrapper import CallbackFileWrapper + + +class CacheControlAdapter(HTTPAdapter): + invalidating_methods = {"PUT", "DELETE"} + + def __init__( + self, + cache=None, + cache_etags=True, + controller_class=None, + serializer=None, + heuristic=None, + cacheable_methods=None, + *args, + **kw + ): + super(CacheControlAdapter, self).__init__(*args, **kw) + self.cache = DictCache() if cache is None else cache + self.heuristic = heuristic + self.cacheable_methods = cacheable_methods or ("GET",) + + controller_factory = controller_class or CacheController + self.controller = controller_factory( + self.cache, cache_etags=cache_etags, serializer=serializer + ) + + def send(self, request, cacheable_methods=None, **kw): + """ + Send a request. Use the request information to see if it + exists in the cache and cache the response if we need to and can. + """ + cacheable = cacheable_methods or self.cacheable_methods + if request.method in cacheable: + try: + cached_response = self.controller.cached_request(request) + except zlib.error: + cached_response = None + if cached_response: + return self.build_response(request, cached_response, from_cache=True) + + # check for etags and add headers if appropriate + request.headers.update(self.controller.conditional_headers(request)) + + resp = super(CacheControlAdapter, self).send(request, **kw) + + return resp + + def build_response( + self, request, response, from_cache=False, cacheable_methods=None + ): + """ + Build a response by making a request or using the cache. + + This will end up calling send and returning a potentially + cached response + """ + cacheable = cacheable_methods or self.cacheable_methods + if not from_cache and request.method in cacheable: + # Check for any heuristics that might update headers + # before trying to cache. + if self.heuristic: + response = self.heuristic.apply(response) + + # apply any expiration heuristics + if response.status == 304: + # We must have sent an ETag request. This could mean + # that we've been expired already or that we simply + # have an etag. In either case, we want to try and + # update the cache if that is the case. + cached_response = self.controller.update_cached_response( + request, response + ) + + if cached_response is not response: + from_cache = True + + # We are done with the server response, read a + # possible response body (compliant servers will + # not return one, but we cannot be 100% sure) and + # release the connection back to the pool. + response.read(decode_content=False) + response.release_conn() + + response = cached_response + + # We always cache the 301 responses + elif response.status == 301: + self.controller.cache_response(request, response) + else: + # Wrap the response file with a wrapper that will cache the + # response when the stream has been consumed. + response._fp = CallbackFileWrapper( + response._fp, + functools.partial( + self.controller.cache_response, request, response + ), + ) + if response.chunked: + super_update_chunk_length = response._update_chunk_length + + def _update_chunk_length(self): + super_update_chunk_length() + if self.chunk_left == 0: + self._fp._close() + + response._update_chunk_length = types.MethodType( + _update_chunk_length, response + ) + + resp = super(CacheControlAdapter, self).build_response(request, response) + + # See if we should invalidate the cache. + if request.method in self.invalidating_methods and resp.ok: + cache_url = self.controller.cache_url(request.url) + self.cache.delete(cache_url) + + # Give the request a from_cache attr to let people use it + resp.from_cache = from_cache + + return resp + + def close(self): + self.cache.close() + super(CacheControlAdapter, self).close() diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/cache.py b/Lib/site-packages/pip/_vendor/cachecontrol/cache.py new file mode 100644 index 0000000..94e0773 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/cache.py @@ -0,0 +1,39 @@ +""" +The cache object API for implementing caches. The default is a thread +safe in-memory dictionary. +""" +from threading import Lock + + +class BaseCache(object): + + def get(self, key): + raise NotImplementedError() + + def set(self, key, value): + raise NotImplementedError() + + def delete(self, key): + raise NotImplementedError() + + def close(self): + pass + + +class DictCache(BaseCache): + + def __init__(self, init_dict=None): + self.lock = Lock() + self.data = init_dict or {} + + def get(self, key): + return self.data.get(key, None) + + def set(self, key, value): + with self.lock: + self.data.update({key: value}) + + def delete(self, key): + with self.lock: + if key in self.data: + self.data.pop(key) diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py b/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py new file mode 100644 index 0000000..0e1658f --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py @@ -0,0 +1,2 @@ +from .file_cache import FileCache # noqa +from .redis_cache import RedisCache # noqa diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py b/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py new file mode 100644 index 0000000..607b945 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py @@ -0,0 +1,146 @@ +import hashlib +import os +from textwrap import dedent + +from ..cache import BaseCache +from ..controller import CacheController + +try: + FileNotFoundError +except NameError: + # py2.X + FileNotFoundError = (IOError, OSError) + + +def _secure_open_write(filename, fmode): + # We only want to write to this file, so open it in write only mode + flags = os.O_WRONLY + + # os.O_CREAT | os.O_EXCL will fail if the file already exists, so we only + # will open *new* files. + # We specify this because we want to ensure that the mode we pass is the + # mode of the file. + flags |= os.O_CREAT | os.O_EXCL + + # Do not follow symlinks to prevent someone from making a symlink that + # we follow and insecurely open a cache file. + if hasattr(os, "O_NOFOLLOW"): + flags |= os.O_NOFOLLOW + + # On Windows we'll mark this file as binary + if hasattr(os, "O_BINARY"): + flags |= os.O_BINARY + + # Before we open our file, we want to delete any existing file that is + # there + try: + os.remove(filename) + except (IOError, OSError): + # The file must not exist already, so we can just skip ahead to opening + pass + + # Open our file, the use of os.O_CREAT | os.O_EXCL will ensure that if a + # race condition happens between the os.remove and this line, that an + # error will be raised. Because we utilize a lockfile this should only + # happen if someone is attempting to attack us. + fd = os.open(filename, flags, fmode) + try: + return os.fdopen(fd, "wb") + + except: + # An error occurred wrapping our FD in a file object + os.close(fd) + raise + + +class FileCache(BaseCache): + + def __init__( + self, + directory, + forever=False, + filemode=0o0600, + dirmode=0o0700, + use_dir_lock=None, + lock_class=None, + ): + + if use_dir_lock is not None and lock_class is not None: + raise ValueError("Cannot use use_dir_lock and lock_class together") + + try: + from lockfile import LockFile + from lockfile.mkdirlockfile import MkdirLockFile + except ImportError: + notice = dedent( + """ + NOTE: In order to use the FileCache you must have + lockfile installed. You can install it via pip: + pip install lockfile + """ + ) + raise ImportError(notice) + + else: + if use_dir_lock: + lock_class = MkdirLockFile + + elif lock_class is None: + lock_class = LockFile + + self.directory = directory + self.forever = forever + self.filemode = filemode + self.dirmode = dirmode + self.lock_class = lock_class + + @staticmethod + def encode(x): + return hashlib.sha224(x.encode()).hexdigest() + + def _fn(self, name): + # NOTE: This method should not change as some may depend on it. + # See: https://github.com/ionrock/cachecontrol/issues/63 + hashed = self.encode(name) + parts = list(hashed[:5]) + [hashed] + return os.path.join(self.directory, *parts) + + def get(self, key): + name = self._fn(key) + try: + with open(name, "rb") as fh: + return fh.read() + + except FileNotFoundError: + return None + + def set(self, key, value): + name = self._fn(key) + + # Make sure the directory exists + try: + os.makedirs(os.path.dirname(name), self.dirmode) + except (IOError, OSError): + pass + + with self.lock_class(name) as lock: + # Write our actual file + with _secure_open_write(lock.path, self.filemode) as fh: + fh.write(value) + + def delete(self, key): + name = self._fn(key) + if not self.forever: + try: + os.remove(name) + except FileNotFoundError: + pass + + +def url_to_file_path(url, filecache): + """Return the file cache path based on the URL. + + This does not ensure the file exists! + """ + key = CacheController.cache_url(url) + return filecache._fn(key) diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py b/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py new file mode 100644 index 0000000..ed705ce --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py @@ -0,0 +1,33 @@ +from __future__ import division + +from datetime import datetime +from pip._vendor.cachecontrol.cache import BaseCache + + +class RedisCache(BaseCache): + + def __init__(self, conn): + self.conn = conn + + def get(self, key): + return self.conn.get(key) + + def set(self, key, value, expires=None): + if not expires: + self.conn.set(key, value) + else: + expires = expires - datetime.utcnow() + self.conn.setex(key, int(expires.total_seconds()), value) + + def delete(self, key): + self.conn.delete(key) + + def clear(self): + """Helper for clearing all the keys in a database. Use with + caution!""" + for key in self.conn.keys(): + self.conn.delete(key) + + def close(self): + """Redis uses connection pooling, no need to close the connection.""" + pass diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/compat.py b/Lib/site-packages/pip/_vendor/cachecontrol/compat.py new file mode 100644 index 0000000..33b5aed --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/compat.py @@ -0,0 +1,29 @@ +try: + from urllib.parse import urljoin +except ImportError: + from urlparse import urljoin + + +try: + import cPickle as pickle +except ImportError: + import pickle + + +# Handle the case where the requests module has been patched to not have +# urllib3 bundled as part of its source. +try: + from pip._vendor.requests.packages.urllib3.response import HTTPResponse +except ImportError: + from pip._vendor.urllib3.response import HTTPResponse + +try: + from pip._vendor.requests.packages.urllib3.util import is_fp_closed +except ImportError: + from pip._vendor.urllib3.util import is_fp_closed + +# Replicate some six behaviour +try: + text_type = unicode +except NameError: + text_type = str diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/controller.py b/Lib/site-packages/pip/_vendor/cachecontrol/controller.py new file mode 100644 index 0000000..dafe55c --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/controller.py @@ -0,0 +1,376 @@ +""" +The httplib2 algorithms ported for use with requests. +""" +import logging +import re +import calendar +import time +from email.utils import parsedate_tz + +from pip._vendor.requests.structures import CaseInsensitiveDict + +from .cache import DictCache +from .serialize import Serializer + + +logger = logging.getLogger(__name__) + +URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") + + +def parse_uri(uri): + """Parses a URI using the regex given in Appendix B of RFC 3986. + + (scheme, authority, path, query, fragment) = parse_uri(uri) + """ + groups = URI.match(uri).groups() + return (groups[1], groups[3], groups[4], groups[6], groups[8]) + + +class CacheController(object): + """An interface to see if request should cached or not. + """ + + def __init__( + self, cache=None, cache_etags=True, serializer=None, status_codes=None + ): + self.cache = DictCache() if cache is None else cache + self.cache_etags = cache_etags + self.serializer = serializer or Serializer() + self.cacheable_status_codes = status_codes or (200, 203, 300, 301) + + @classmethod + def _urlnorm(cls, uri): + """Normalize the URL to create a safe key for the cache""" + (scheme, authority, path, query, fragment) = parse_uri(uri) + if not scheme or not authority: + raise Exception("Only absolute URIs are allowed. uri = %s" % uri) + + scheme = scheme.lower() + authority = authority.lower() + + if not path: + path = "/" + + # Could do syntax based normalization of the URI before + # computing the digest. See Section 6.2.2 of Std 66. + request_uri = query and "?".join([path, query]) or path + defrag_uri = scheme + "://" + authority + request_uri + + return defrag_uri + + @classmethod + def cache_url(cls, uri): + return cls._urlnorm(uri) + + def parse_cache_control(self, headers): + known_directives = { + # https://tools.ietf.org/html/rfc7234#section-5.2 + "max-age": (int, True), + "max-stale": (int, False), + "min-fresh": (int, True), + "no-cache": (None, False), + "no-store": (None, False), + "no-transform": (None, False), + "only-if-cached": (None, False), + "must-revalidate": (None, False), + "public": (None, False), + "private": (None, False), + "proxy-revalidate": (None, False), + "s-maxage": (int, True), + } + + cc_headers = headers.get("cache-control", headers.get("Cache-Control", "")) + + retval = {} + + for cc_directive in cc_headers.split(","): + if not cc_directive.strip(): + continue + + parts = cc_directive.split("=", 1) + directive = parts[0].strip() + + try: + typ, required = known_directives[directive] + except KeyError: + logger.debug("Ignoring unknown cache-control directive: %s", directive) + continue + + if not typ or not required: + retval[directive] = None + if typ: + try: + retval[directive] = typ(parts[1].strip()) + except IndexError: + if required: + logger.debug( + "Missing value for cache-control " "directive: %s", + directive, + ) + except ValueError: + logger.debug( + "Invalid value for cache-control directive " "%s, must be %s", + directive, + typ.__name__, + ) + + return retval + + def cached_request(self, request): + """ + Return a cached response if it exists in the cache, otherwise + return False. + """ + cache_url = self.cache_url(request.url) + logger.debug('Looking up "%s" in the cache', cache_url) + cc = self.parse_cache_control(request.headers) + + # Bail out if the request insists on fresh data + if "no-cache" in cc: + logger.debug('Request header has "no-cache", cache bypassed') + return False + + if "max-age" in cc and cc["max-age"] == 0: + logger.debug('Request header has "max_age" as 0, cache bypassed') + return False + + # Request allows serving from the cache, let's see if we find something + cache_data = self.cache.get(cache_url) + if cache_data is None: + logger.debug("No cache entry available") + return False + + # Check whether it can be deserialized + resp = self.serializer.loads(request, cache_data) + if not resp: + logger.warning("Cache entry deserialization failed, entry ignored") + return False + + # If we have a cached 301, return it immediately. We don't + # need to test our response for other headers b/c it is + # intrinsically "cacheable" as it is Permanent. + # See: + # https://tools.ietf.org/html/rfc7231#section-6.4.2 + # + # Client can try to refresh the value by repeating the request + # with cache busting headers as usual (ie no-cache). + if resp.status == 301: + msg = ( + 'Returning cached "301 Moved Permanently" response ' + "(ignoring date and etag information)" + ) + logger.debug(msg) + return resp + + headers = CaseInsensitiveDict(resp.headers) + if not headers or "date" not in headers: + if "etag" not in headers: + # Without date or etag, the cached response can never be used + # and should be deleted. + logger.debug("Purging cached response: no date or etag") + self.cache.delete(cache_url) + logger.debug("Ignoring cached response: no date") + return False + + now = time.time() + date = calendar.timegm(parsedate_tz(headers["date"])) + current_age = max(0, now - date) + logger.debug("Current age based on date: %i", current_age) + + # TODO: There is an assumption that the result will be a + # urllib3 response object. This may not be best since we + # could probably avoid instantiating or constructing the + # response until we know we need it. + resp_cc = self.parse_cache_control(headers) + + # determine freshness + freshness_lifetime = 0 + + # Check the max-age pragma in the cache control header + if "max-age" in resp_cc: + freshness_lifetime = resp_cc["max-age"] + logger.debug("Freshness lifetime from max-age: %i", freshness_lifetime) + + # If there isn't a max-age, check for an expires header + elif "expires" in headers: + expires = parsedate_tz(headers["expires"]) + if expires is not None: + expire_time = calendar.timegm(expires) - date + freshness_lifetime = max(0, expire_time) + logger.debug("Freshness lifetime from expires: %i", freshness_lifetime) + + # Determine if we are setting freshness limit in the + # request. Note, this overrides what was in the response. + if "max-age" in cc: + freshness_lifetime = cc["max-age"] + logger.debug( + "Freshness lifetime from request max-age: %i", freshness_lifetime + ) + + if "min-fresh" in cc: + min_fresh = cc["min-fresh"] + # adjust our current age by our min fresh + current_age += min_fresh + logger.debug("Adjusted current age from min-fresh: %i", current_age) + + # Return entry if it is fresh enough + if freshness_lifetime > current_age: + logger.debug('The response is "fresh", returning cached response') + logger.debug("%i > %i", freshness_lifetime, current_age) + return resp + + # we're not fresh. If we don't have an Etag, clear it out + if "etag" not in headers: + logger.debug('The cached response is "stale" with no etag, purging') + self.cache.delete(cache_url) + + # return the original handler + return False + + def conditional_headers(self, request): + cache_url = self.cache_url(request.url) + resp = self.serializer.loads(request, self.cache.get(cache_url)) + new_headers = {} + + if resp: + headers = CaseInsensitiveDict(resp.headers) + + if "etag" in headers: + new_headers["If-None-Match"] = headers["ETag"] + + if "last-modified" in headers: + new_headers["If-Modified-Since"] = headers["Last-Modified"] + + return new_headers + + def cache_response(self, request, response, body=None, status_codes=None): + """ + Algorithm for caching requests. + + This assumes a requests Response object. + """ + # From httplib2: Don't cache 206's since we aren't going to + # handle byte range requests + cacheable_status_codes = status_codes or self.cacheable_status_codes + if response.status not in cacheable_status_codes: + logger.debug( + "Status code %s not in %s", response.status, cacheable_status_codes + ) + return + + response_headers = CaseInsensitiveDict(response.headers) + + # If we've been given a body, our response has a Content-Length, that + # Content-Length is valid then we can check to see if the body we've + # been given matches the expected size, and if it doesn't we'll just + # skip trying to cache it. + if ( + body is not None + and "content-length" in response_headers + and response_headers["content-length"].isdigit() + and int(response_headers["content-length"]) != len(body) + ): + return + + cc_req = self.parse_cache_control(request.headers) + cc = self.parse_cache_control(response_headers) + + cache_url = self.cache_url(request.url) + logger.debug('Updating cache with response from "%s"', cache_url) + + # Delete it from the cache if we happen to have it stored there + no_store = False + if "no-store" in cc: + no_store = True + logger.debug('Response header has "no-store"') + if "no-store" in cc_req: + no_store = True + logger.debug('Request header has "no-store"') + if no_store and self.cache.get(cache_url): + logger.debug('Purging existing cache entry to honor "no-store"') + self.cache.delete(cache_url) + if no_store: + return + + # https://tools.ietf.org/html/rfc7234#section-4.1: + # A Vary header field-value of "*" always fails to match. + # Storing such a response leads to a deserialization warning + # during cache lookup and is not allowed to ever be served, + # so storing it can be avoided. + if "*" in response_headers.get("vary", ""): + logger.debug('Response header has "Vary: *"') + return + + # If we've been given an etag, then keep the response + if self.cache_etags and "etag" in response_headers: + logger.debug("Caching due to etag") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + # Add to the cache any 301s. We do this before looking that + # the Date headers. + elif response.status == 301: + logger.debug("Caching permanant redirect") + self.cache.set(cache_url, self.serializer.dumps(request, response)) + + # Add to the cache if the response headers demand it. If there + # is no date header then we can't do anything about expiring + # the cache. + elif "date" in response_headers: + # cache when there is a max-age > 0 + if "max-age" in cc and cc["max-age"] > 0: + logger.debug("Caching b/c date exists and max-age > 0") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + # If the request can expire, it means we should cache it + # in the meantime. + elif "expires" in response_headers: + if response_headers["expires"]: + logger.debug("Caching b/c of expires header") + self.cache.set( + cache_url, self.serializer.dumps(request, response, body=body) + ) + + def update_cached_response(self, request, response): + """On a 304 we will get a new set of headers that we want to + update our cached value with, assuming we have one. + + This should only ever be called when we've sent an ETag and + gotten a 304 as the response. + """ + cache_url = self.cache_url(request.url) + + cached_response = self.serializer.loads(request, self.cache.get(cache_url)) + + if not cached_response: + # we didn't have a cached response + return response + + # Lets update our headers with the headers from the new request: + # http://tools.ietf.org/html/draft-ietf-httpbis-p4-conditional-26#section-4.1 + # + # The server isn't supposed to send headers that would make + # the cached body invalid. But... just in case, we'll be sure + # to strip out ones we know that might be problmatic due to + # typical assumptions. + excluded_headers = ["content-length"] + + cached_response.headers.update( + dict( + (k, v) + for k, v in response.headers.items() + if k.lower() not in excluded_headers + ) + ) + + # we want a 200 b/c we have content via the cache + cached_response.status = 200 + + # update our cache + self.cache.set(cache_url, self.serializer.dumps(request, cached_response)) + + return cached_response diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py new file mode 100644 index 0000000..30ed4c5 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py @@ -0,0 +1,80 @@ +from io import BytesIO + + +class CallbackFileWrapper(object): + """ + Small wrapper around a fp object which will tee everything read into a + buffer, and when that file is closed it will execute a callback with the + contents of that buffer. + + All attributes are proxied to the underlying file object. + + This class uses members with a double underscore (__) leading prefix so as + not to accidentally shadow an attribute. + """ + + def __init__(self, fp, callback): + self.__buf = BytesIO() + self.__fp = fp + self.__callback = callback + + def __getattr__(self, name): + # The vaguaries of garbage collection means that self.__fp is + # not always set. By using __getattribute__ and the private + # name[0] allows looking up the attribute value and raising an + # AttributeError when it doesn't exist. This stop thigns from + # infinitely recursing calls to getattr in the case where + # self.__fp hasn't been set. + # + # [0] https://docs.python.org/2/reference/expressions.html#atom-identifiers + fp = self.__getattribute__("_CallbackFileWrapper__fp") + return getattr(fp, name) + + def __is_fp_closed(self): + try: + return self.__fp.fp is None + + except AttributeError: + pass + + try: + return self.__fp.closed + + except AttributeError: + pass + + # We just don't cache it then. + # TODO: Add some logging here... + return False + + def _close(self): + if self.__callback: + self.__callback(self.__buf.getvalue()) + + # We assign this to None here, because otherwise we can get into + # really tricky problems where the CPython interpreter dead locks + # because the callback is holding a reference to something which + # has a __del__ method. Setting this to None breaks the cycle + # and allows the garbage collector to do it's thing normally. + self.__callback = None + + def read(self, amt=None): + data = self.__fp.read(amt) + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data + + def _safe_read(self, amt): + data = self.__fp._safe_read(amt) + if amt == 2 and data == b"\r\n": + # urllib executes this read to toss the CRLF at the end + # of the chunk. + return data + + self.__buf.write(data) + if self.__is_fp_closed(): + self._close() + + return data diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py b/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py new file mode 100644 index 0000000..6c0e979 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py @@ -0,0 +1,135 @@ +import calendar +import time + +from email.utils import formatdate, parsedate, parsedate_tz + +from datetime import datetime, timedelta + +TIME_FMT = "%a, %d %b %Y %H:%M:%S GMT" + + +def expire_after(delta, date=None): + date = date or datetime.utcnow() + return date + delta + + +def datetime_to_header(dt): + return formatdate(calendar.timegm(dt.timetuple())) + + +class BaseHeuristic(object): + + def warning(self, response): + """ + Return a valid 1xx warning header value describing the cache + adjustments. + + The response is provided too allow warnings like 113 + http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need + to explicitly say response is over 24 hours old. + """ + return '110 - "Response is Stale"' + + def update_headers(self, response): + """Update the response headers with any new headers. + + NOTE: This SHOULD always include some Warning header to + signify that the response was cached by the client, not + by way of the provided headers. + """ + return {} + + def apply(self, response): + updated_headers = self.update_headers(response) + + if updated_headers: + response.headers.update(updated_headers) + warning_header_value = self.warning(response) + if warning_header_value is not None: + response.headers.update({"Warning": warning_header_value}) + + return response + + +class OneDayCache(BaseHeuristic): + """ + Cache the response by providing an expires 1 day in the + future. + """ + + def update_headers(self, response): + headers = {} + + if "expires" not in response.headers: + date = parsedate(response.headers["date"]) + expires = expire_after(timedelta(days=1), date=datetime(*date[:6])) + headers["expires"] = datetime_to_header(expires) + headers["cache-control"] = "public" + return headers + + +class ExpiresAfter(BaseHeuristic): + """ + Cache **all** requests for a defined time period. + """ + + def __init__(self, **kw): + self.delta = timedelta(**kw) + + def update_headers(self, response): + expires = expire_after(self.delta) + return {"expires": datetime_to_header(expires), "cache-control": "public"} + + def warning(self, response): + tmpl = "110 - Automatically cached for %s. Response might be stale" + return tmpl % self.delta + + +class LastModified(BaseHeuristic): + """ + If there is no Expires header already, fall back on Last-Modified + using the heuristic from + http://tools.ietf.org/html/rfc7234#section-4.2.2 + to calculate a reasonable value. + + Firefox also does something like this per + https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ + http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397 + Unlike mozilla we limit this to 24-hr. + """ + cacheable_by_default_statuses = { + 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501 + } + + def update_headers(self, resp): + headers = resp.headers + + if "expires" in headers: + return {} + + if "cache-control" in headers and headers["cache-control"] != "public": + return {} + + if resp.status not in self.cacheable_by_default_statuses: + return {} + + if "date" not in headers or "last-modified" not in headers: + return {} + + date = calendar.timegm(parsedate_tz(headers["date"])) + last_modified = parsedate(headers["last-modified"]) + if date is None or last_modified is None: + return {} + + now = time.time() + current_age = max(0, now - date) + delta = date - calendar.timegm(last_modified) + freshness_lifetime = max(0, min(delta / 10, 24 * 3600)) + if freshness_lifetime <= current_age: + return {} + + expires = date + freshness_lifetime + return {"expires": time.strftime(TIME_FMT, time.gmtime(expires))} + + def warning(self, resp): + return None diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py b/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py new file mode 100644 index 0000000..3b6ec2d --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py @@ -0,0 +1,188 @@ +import base64 +import io +import json +import zlib + +from pip._vendor import msgpack +from pip._vendor.requests.structures import CaseInsensitiveDict + +from .compat import HTTPResponse, pickle, text_type + + +def _b64_decode_bytes(b): + return base64.b64decode(b.encode("ascii")) + + +def _b64_decode_str(s): + return _b64_decode_bytes(s).decode("utf8") + + +class Serializer(object): + + def dumps(self, request, response, body=None): + response_headers = CaseInsensitiveDict(response.headers) + + if body is None: + body = response.read(decode_content=False) + + # NOTE: 99% sure this is dead code. I'm only leaving it + # here b/c I don't have a test yet to prove + # it. Basically, before using + # `cachecontrol.filewrapper.CallbackFileWrapper`, + # this made an effort to reset the file handle. The + # `CallbackFileWrapper` short circuits this code by + # setting the body as the content is consumed, the + # result being a `body` argument is *always* passed + # into cache_response, and in turn, + # `Serializer.dump`. + response._fp = io.BytesIO(body) + + # NOTE: This is all a bit weird, but it's really important that on + # Python 2.x these objects are unicode and not str, even when + # they contain only ascii. The problem here is that msgpack + # understands the difference between unicode and bytes and we + # have it set to differentiate between them, however Python 2 + # doesn't know the difference. Forcing these to unicode will be + # enough to have msgpack know the difference. + data = { + u"response": { + u"body": body, + u"headers": dict( + (text_type(k), text_type(v)) for k, v in response.headers.items() + ), + u"status": response.status, + u"version": response.version, + u"reason": text_type(response.reason), + u"strict": response.strict, + u"decode_content": response.decode_content, + } + } + + # Construct our vary headers + data[u"vary"] = {} + if u"vary" in response_headers: + varied_headers = response_headers[u"vary"].split(",") + for header in varied_headers: + header = text_type(header).strip() + header_value = request.headers.get(header, None) + if header_value is not None: + header_value = text_type(header_value) + data[u"vary"][header] = header_value + + return b",".join([b"cc=4", msgpack.dumps(data, use_bin_type=True)]) + + def loads(self, request, data): + # Short circuit if we've been given an empty set of data + if not data: + return + + # Determine what version of the serializer the data was serialized + # with + try: + ver, data = data.split(b",", 1) + except ValueError: + ver = b"cc=0" + + # Make sure that our "ver" is actually a version and isn't a false + # positive from a , being in the data stream. + if ver[:3] != b"cc=": + data = ver + data + ver = b"cc=0" + + # Get the version number out of the cc=N + ver = ver.split(b"=", 1)[-1].decode("ascii") + + # Dispatch to the actual load method for the given version + try: + return getattr(self, "_loads_v{}".format(ver))(request, data) + + except AttributeError: + # This is a version we don't have a loads function for, so we'll + # just treat it as a miss and return None + return + + def prepare_response(self, request, cached): + """Verify our vary headers match and construct a real urllib3 + HTTPResponse object. + """ + # Special case the '*' Vary value as it means we cannot actually + # determine if the cached response is suitable for this request. + # This case is also handled in the controller code when creating + # a cache entry, but is left here for backwards compatibility. + if "*" in cached.get("vary", {}): + return + + # Ensure that the Vary headers for the cached response match our + # request + for header, value in cached.get("vary", {}).items(): + if request.headers.get(header, None) != value: + return + + body_raw = cached["response"].pop("body") + + headers = CaseInsensitiveDict(data=cached["response"]["headers"]) + if headers.get("transfer-encoding", "") == "chunked": + headers.pop("transfer-encoding") + + cached["response"]["headers"] = headers + + try: + body = io.BytesIO(body_raw) + except TypeError: + # This can happen if cachecontrol serialized to v1 format (pickle) + # using Python 2. A Python 2 str(byte string) will be unpickled as + # a Python 3 str (unicode string), which will cause the above to + # fail with: + # + # TypeError: 'str' does not support the buffer interface + body = io.BytesIO(body_raw.encode("utf8")) + + return HTTPResponse(body=body, preload_content=False, **cached["response"]) + + def _loads_v0(self, request, data): + # The original legacy cache data. This doesn't contain enough + # information to construct everything we need, so we'll treat this as + # a miss. + return + + def _loads_v1(self, request, data): + try: + cached = pickle.loads(data) + except ValueError: + return + + return self.prepare_response(request, cached) + + def _loads_v2(self, request, data): + try: + cached = json.loads(zlib.decompress(data).decode("utf8")) + except (ValueError, zlib.error): + return + + # We need to decode the items that we've base64 encoded + cached["response"]["body"] = _b64_decode_bytes(cached["response"]["body"]) + cached["response"]["headers"] = dict( + (_b64_decode_str(k), _b64_decode_str(v)) + for k, v in cached["response"]["headers"].items() + ) + cached["response"]["reason"] = _b64_decode_str(cached["response"]["reason"]) + cached["vary"] = dict( + (_b64_decode_str(k), _b64_decode_str(v) if v is not None else v) + for k, v in cached["vary"].items() + ) + + return self.prepare_response(request, cached) + + def _loads_v3(self, request, data): + # Due to Python 2 encoding issues, it's impossible to know for sure + # exactly how to load v3 entries, thus we'll treat these as a miss so + # that they get rewritten out as v4 entries. + return + + def _loads_v4(self, request, data): + try: + cached = msgpack.loads(data, raw=False) + except ValueError: + return + + return self.prepare_response(request, cached) diff --git a/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py b/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py new file mode 100644 index 0000000..d8e6fc6 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py @@ -0,0 +1,29 @@ +from .adapter import CacheControlAdapter +from .cache import DictCache + + +def CacheControl( + sess, + cache=None, + cache_etags=True, + serializer=None, + heuristic=None, + controller_class=None, + adapter_class=None, + cacheable_methods=None, +): + + cache = DictCache() if cache is None else cache + adapter_class = adapter_class or CacheControlAdapter + adapter = adapter_class( + cache, + cache_etags=cache_etags, + serializer=serializer, + heuristic=heuristic, + controller_class=controller_class, + cacheable_methods=cacheable_methods, + ) + sess.mount("http://", adapter) + sess.mount("https://", adapter) + + return sess diff --git a/Lib/site-packages/pip/_vendor/certifi/__init__.py b/Lib/site-packages/pip/_vendor/certifi/__init__.py new file mode 100644 index 0000000..0d59a05 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/certifi/__init__.py @@ -0,0 +1,3 @@ +from .core import where + +__version__ = "2019.11.28" diff --git a/Lib/site-packages/pip/_vendor/certifi/__main__.py b/Lib/site-packages/pip/_vendor/certifi/__main__.py new file mode 100644 index 0000000..ae2aff5 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/certifi/__main__.py @@ -0,0 +1,2 @@ +from pip._vendor.certifi import where +print(where()) diff --git a/Lib/site-packages/pip/_vendor/certifi/cacert.pem b/Lib/site-packages/pip/_vendor/certifi/cacert.pem new file mode 100644 index 0000000..a4758ef --- /dev/null +++ b/Lib/site-packages/pip/_vendor/certifi/cacert.pem @@ -0,0 +1,4602 @@ + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Label: "GlobalSign Root CA - R2" +# Serial: 4835703278459682885658125 +# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 +# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe +# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 +MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL +v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 +eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq +tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd +C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa +zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB +mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH +V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n +bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG +3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs +J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO +291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS +ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd +AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 3 Public Primary Certification Authority - G3" +# Serial: 206684696279472310254277870180966723415 +# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 +# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 +# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946069240 +# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 +# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 +# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 +MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub +j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo +U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b +u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ +bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er +fF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Label: "AddTrust External Root" +# Serial: 1 +# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f +# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 +# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA O=GeoTrust Inc. +# Label: "GeoTrust Global CA" +# Serial: 144470 +# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 +# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 +# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Label: "GeoTrust Universal CA" +# Serial: 1 +# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 +# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 +# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy +c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 +IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV +VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 +cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT +QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh +F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v +c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w +mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd +VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX +teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ +f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe +Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ +nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY +MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG +9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX +IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn +ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z +uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN +Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja +QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW +koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 +ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt +DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm +bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Universal CA 2" +# Serial: 1 +# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 +# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 +# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy +c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD +VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 +c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 +WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG +FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq +XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL +se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb +KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd +IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 +y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt +hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc +QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 +Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV +HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ +KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ +L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr +Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo +ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY +T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz +GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m +1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV +OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH +6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX +QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority +# Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority +# Label: "QuoVadis Root CA" +# Serial: 985026699 +# MD5 Fingerprint: 27:de:36:fe:72:b7:00:03:00:9d:f4:f0:1e:6c:04:24 +# SHA1 Fingerprint: de:3f:40:bd:50:93:d3:9b:6c:60:f6:da:bc:07:62:01:00:89:76:c9 +# SHA256 Fingerprint: a4:5e:de:3b:bb:f0:9c:8a:e1:5c:72:ef:c0:72:68:d6:93:a2:1c:99:6f:d5:1e:67:ca:07:94:60:fd:6d:88:73 +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz +MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw +IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR +dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp +li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D +rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ +WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug +F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU +xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC +Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv +dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw +ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl +IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh +c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy +ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI +KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T +KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq +y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p +dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD +VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL +MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk +fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 +7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R +cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y +mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW +xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK +SnQ2+Q== +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2" +# Serial: 1289 +# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b +# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 +# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa +GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg +Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J +WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB +rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp ++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 +ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i +Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz +PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og +/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH +oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI +yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud +EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 +A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL +MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f +BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn +g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl +fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K +WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha +B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc +hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR +TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD +mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z +ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y +4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza +8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3" +# Serial: 1478 +# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf +# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 +# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x +GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv +b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV +BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W +YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM +V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB +4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr +H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd +8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv +vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT +mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe +btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc +T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt +WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ +c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A +4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD +VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG +CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 +aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu +dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw +czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G +A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC +TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg +Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 +7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem +d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd ++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B +4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN +t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x +DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 +k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s +zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j +Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT +mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK +4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 +# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 +# Label: "Security Communication Root CA" +# Serial: 0 +# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a +# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 +# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY +MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t +dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 +WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD +VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 +9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ +DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 +Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N +QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ +xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G +A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG +kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr +Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 +Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU +JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot +RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== +-----END CERTIFICATE----- + +# Issuer: CN=Sonera Class2 CA O=Sonera +# Subject: CN=Sonera Class2 CA O=Sonera +# Label: "Sonera Class 2 Root CA" +# Serial: 29 +# MD5 Fingerprint: a3:ec:75:0f:2e:88:df:fa:48:01:4e:0b:5c:48:6f:fb +# SHA1 Fingerprint: 37:f7:6d:e6:07:7c:90:c5:b1:3e:93:1a:b7:41:10:b4:f2:e4:9a:27 +# SHA256 Fingerprint: 79:08:b4:03:14:c1:38:10:0b:51:8d:07:35:80:7f:fb:fc:f8:51:8a:00:95:33:71:05:ba:38:6b:15:3d:d9:27 +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP +MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx +MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV +BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o +Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt +5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s +3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej +vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu +8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw +DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG +MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil +zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ +3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD +FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 +Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 +ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: O=Government Root Certification Authority +# Subject: O=Government Root Certification Authority +# Label: "Taiwan GRCA" +# Serial: 42023070807708724159991140556527066870 +# MD5 Fingerprint: 37:85:44:53:32:45:1f:20:f0:f3:95:e1:25:c4:43:4e +# SHA1 Fingerprint: f4:8b:11:bf:de:ab:be:94:54:20:71:e6:41:de:6b:be:88:2b:40:b9 +# SHA256 Fingerprint: 76:00:29:5e:ef:e8:5b:9e:1f:d6:24:db:76:06:2a:aa:ae:59:81:8a:54:d2:77:4c:d4:c0:b2:c0:11:31:e1:b3 +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ +MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow +PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR +IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q +gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy +yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts +F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 +jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx +ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC +VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK +YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH +EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN +Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud +DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE +MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK +UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf +qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK +ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE +JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 +hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 +EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm +nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX +udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz +ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe +LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl +pYYsfPQS +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co. +# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co. +# Label: "DST Root CA X3" +# Serial: 91299735575339953335919266965803778155 +# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5 +# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13 +# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39 +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ +MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT +DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow +PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD +Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O +rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq +OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b +xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw +7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD +aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG +SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 +ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr +AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz +R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 +JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo +Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG +# Label: "SwissSign Gold CA - G2" +# Serial: 13492815561806991280 +# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 +# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 +# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG +# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG +# Label: "SwissSign Silver CA - G2" +# Serial: 5700383053117599563 +# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 +# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb +# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Label: "GeoTrust Primary Certification Authority" +# Serial: 32798226551256963324313806436981982369 +# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf +# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 +# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx +MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 +AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA +ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 +7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W +kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI +mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ +KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 +6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl +4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K +oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj +UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU +AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA" +# Serial: 69529181992039203566298953787712940909 +# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 +# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 +# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G5" +# Serial: 33037644167568058970164719475676101450 +# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c +# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 +# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +# Issuer: CN=SecureTrust CA O=SecureTrust Corporation +# Subject: CN=SecureTrust CA O=SecureTrust Corporation +# Label: "SecureTrust CA" +# Serial: 17199774589125277788362757014266862032 +# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 +# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 +# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz +MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv +cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz +Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO +0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao +wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj +7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS +8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT +BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg +JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 +6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ +3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm +D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS +CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +# Issuer: CN=Secure Global CA O=SecureTrust Corporation +# Subject: CN=Secure Global CA O=SecureTrust Corporation +# Label: "Secure Global CA" +# Serial: 9751836167731051554232119481456978597 +# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de +# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b +# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK +MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x +GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx +MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg +Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ +iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa +/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ +jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI +HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 +sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w +gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw +KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG +AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L +URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO +H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm +I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY +iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Label: "Network Solutions Certificate Authority" +# Serial: 116697915152937497490437556386812487904 +# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e +# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce +# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi +MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV +UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO +ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz +c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP +OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl +mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF +BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 +qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw +gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu +bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp +dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 +6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ +h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH +/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN +pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GA CA" +# Serial: 86718877871133159090080555911823548314 +# MD5 Fingerprint: bc:6c:51:33:a7:e9:d3:66:63:54:15:72:1b:21:92:93 +# SHA1 Fingerprint: 59:22:a1:e1:5a:ea:16:35:21:f8:98:39:6a:46:46:b0:44:1b:0f:a9 +# SHA256 Fingerprint: 41:c9:23:86:6a:b4:ca:d6:b7:ad:57:80:81:58:2e:02:07:97:a6:cb:df:4f:ff:78:ce:83:96:b3:89:37:d7:f5 +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB +ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly +aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl +ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w +NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G +A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD +VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX +SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR +VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2 +w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF +mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg +4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9 +4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw +EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx +SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2 +ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8 +vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi +Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ +/L7fCg0= +-----END CERTIFICATE----- + +# Issuer: CN=Certigna O=Dhimyotis +# Subject: CN=Certigna O=Dhimyotis +# Label: "Certigna" +# Serial: 18364802974209362175 +# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff +# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 +# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV +BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X +DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ +BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 +QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny +gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw +zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q +130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 +JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw +ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT +AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj +AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG +9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h +bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc +fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu +HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w +t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc +# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc +# Label: "Cybertrust Global Root" +# Serial: 4835703278459682877484360 +# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 +# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 +# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG +A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh +bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE +ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS +b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 +7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS +J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y +HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP +t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz +FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY +XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ +MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw +hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js +MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA +A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj +Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx +XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o +omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc +A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority +# Label: "ePKI Root Certification Authority" +# Serial: 28956088682735189655030529057352760477 +# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 +# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 +# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw +IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL +SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH +SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh +ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X +DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 +TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ +fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA +sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU +WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS +nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH +dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip +NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC +AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF +MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB +uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl +PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP +JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ +gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 +j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 +5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB +o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS +/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z +Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE +W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D +hNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +# Issuer: O=certSIGN OU=certSIGN ROOT CA +# Subject: O=certSIGN OU=certSIGN ROOT CA +# Label: "certSIGN ROOT CA" +# Serial: 35210227249154 +# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 +# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b +# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT +AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD +QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP +MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do +0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ +UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d +RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ +OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv +JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C +AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O +BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ +LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY +MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ +44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I +Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw +i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN +9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G3" +# Serial: 28809105769928564313984085209975885599 +# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 +# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd +# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ +BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 +BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz ++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm +hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn +5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W +JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL +DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC +huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB +AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB +zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN +kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH +SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G +spki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G2" +# Serial: 71758320672825410020661621085256472406 +# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f +# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 +# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp +IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi +BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw +MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig +YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v +dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ +BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 +papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K +DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 +KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox +XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G3" +# Serial: 127614157056681299805556476275995414779 +# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 +# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 +# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa +Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl +LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u +MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm +gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 +YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf +b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 +9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S +zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk +OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA +2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW +oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c +KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM +m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu +MdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G2" +# Serial: 80682863203381065782177908751794619243 +# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a +# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 +# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL +MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj +KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 +MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw +NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV +BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL +So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal +tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG +CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT +qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz +rD6ogRLQy7rQkgu2npaqBA+K +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Universal Root Certification Authority" +# Serial: 85209574734084581917763752644031726877 +# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 +# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 +# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G4" +# Serial: 63143484348153506665311985501458640051 +# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 +# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a +# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp +U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg +SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln +biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm +GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve +fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ +aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj +aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW +kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC +4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga +FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" +# Serial: 80544274841616 +# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 +# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 +# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG +EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 +MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl +cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR +dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB +pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM +b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm +aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz +IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT +lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz +AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 +VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG +ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 +BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M +U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh +bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C ++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F +uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 +XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden +# Label: "Staat der Nederlanden Root CA - G2" +# Serial: 10000012 +# MD5 Fingerprint: 7c:a5:0f:f8:5b:9a:7d:6d:30:ae:54:5a:e3:42:a2:8a +# SHA1 Fingerprint: 59:af:82:79:91:86:c7:b4:75:07:cb:cf:03:57:46:eb:04:dd:b7:16 +# SHA256 Fingerprint: 66:8c:83:94:7d:a6:3b:72:4b:ec:e1:74:3c:31:a0:e6:ae:d0:db:8e:c5:b3:1b:e3:77:bb:78:4f:91:b6:71:6f +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oX +DTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl +ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv +b3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ5291 +qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8Sp +uOUfiUtnvWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPU +Z5uW6M7XxgpT0GtJlvOjCwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvE +pMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiile7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp +5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCROME4HYYEhLoaJXhena/M +UGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpICT0ugpTN +GmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy +5V6548r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv +6q012iDTiIJh8BIitrzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEK +eN5KzlW/HdXZt1bv8Hb/C3m1r737qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6 +B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMBAAGjgZcwgZQwDwYDVR0TAQH/ +BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcCARYxaHR0cDov +L3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqG +SIb3DQEBCwUAA4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLyS +CZa59sCrI2AGeYwRTlHSeYAz+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen +5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwjf/ST7ZwaUb7dRUG/kSS0H4zpX897 +IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaNkqbG9AclVMwWVxJK +gnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfkCpYL ++63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxL +vJxxcypFURmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkm +bEgeqmiSBeGCc1qb3AdbCG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvk +N1trSt8sV4pAWja63XVECDdCcAz+3F4hoKOKwJCcaNpQ5kUQR3i2TtJlycM33+FC +Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z +ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post +# Label: "Hongkong Post Root CA 1" +# Serial: 1000 +# MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca +# SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 +# SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx +FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg +Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG +A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr +b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ +jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn +PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh +ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 +nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h +q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED +MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC +mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 +7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB +oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs +EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO +fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi +AmvZWg== +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. +# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. +# Label: "SecureSign RootCA11" +# Serial: 1 +# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 +# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 +# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr +MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG +A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 +MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp +Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD +QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz +i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 +h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV +MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 +UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni +8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC +h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD +VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB +AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm +KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ +X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr +QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 +pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN +QSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Label: "Microsec e-Szigno Root CA 2009" +# Serial: 14014712776195784473 +# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 +# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e +# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G +CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y +OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx +FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp +Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP +kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc +cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U +fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 +N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC +xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 ++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM +Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG +SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h +mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk +ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c +2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t +HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Serial: 6047274297262753887 +# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 +# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa +# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE +BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h +cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy +MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg +Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 +thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM +cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG +L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i +NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h +X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b +m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy +Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja +EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T +KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF +6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh +OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD +VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv +ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl +AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF +661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 +am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 +ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 +PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS +3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k +SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF +3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM +ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g +StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz +Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB +jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +# Issuer: CN=Izenpe.com O=IZENPE S.A. +# Subject: CN=Izenpe.com O=IZENPE S.A. +# Label: "Izenpe.com" +# Serial: 917563065490389241595536686991402621 +# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 +# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 +# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +# Issuer: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. +# Subject: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. +# Label: "Chambers of Commerce Root - 2008" +# Serial: 11806822484801597146 +# MD5 Fingerprint: 5e:80:9e:84:5a:0e:65:0b:17:02:f3:55:18:2a:3e:d7 +# SHA1 Fingerprint: 78:6a:74:ac:76:ab:14:7f:9c:6a:30:50:ba:9e:a8:7e:fe:9a:ce:3c +# SHA256 Fingerprint: 06:3e:4a:fa:c4:91:df:d3:32:f3:08:9b:85:42:e9:46:17:d8:93:d7:fe:94:4e:10:a7:93:7e:e2:9d:96:93:c0 +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD +VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 +IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 +MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz +IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz +MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj +dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw +EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp +MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 +28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq +VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q +DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR +5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL +ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a +Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl +UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s ++12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 +Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx +hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV +HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 ++HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN +YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t +L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy +ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt +IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV +HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w +DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW +PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF +5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 +glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH +FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 +pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD +xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG +tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq +jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De +fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ +d0jQ +-----END CERTIFICATE----- + +# Issuer: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. +# Subject: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. +# Label: "Global Chambersign Root - 2008" +# Serial: 14541511773111788494 +# MD5 Fingerprint: 9e:80:ff:78:01:0c:2e:c1:36:bd:fe:96:90:6e:08:f3 +# SHA1 Fingerprint: 4a:bd:ee:ec:95:0d:35:9c:89:ae:c7:52:a1:2c:5b:29:f6:d6:aa:0c +# SHA256 Fingerprint: 13:63:35:43:93:34:a7:69:80:16:a0:d3:24:de:72:28:4e:07:9d:7b:52:20:bb:8f:bd:74:78:16:ee:be:ba:ca +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD +VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 +IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 +MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx +MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy +cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG +A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl +BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed +KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 +G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 +zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 +ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG +HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 +Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V +yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e +beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r +6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog +zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW +BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr +ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp +ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk +cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt +YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC +CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow +KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI +hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ +UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz +X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x +fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz +a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd +Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd +SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O +AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso +M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge +v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA" +# Serial: 279744 +# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 +# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e +# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Label: "TWCA Root Certification Authority" +# Serial: 1 +# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 +# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 +# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES +MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU +V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz +WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO +LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE +AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH +K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX +RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z +rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx +3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq +hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC +MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls +XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D +lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn +aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ +YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Label: "Security Communication RootCA2" +# Serial: 0 +# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 +# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 +# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2011" +# Serial: 0 +# MD5 Fingerprint: 73:9f:4c:4b:73:5b:79:e9:fa:ba:1c:ef:6e:cb:d5:c9 +# SHA1 Fingerprint: fe:45:65:9b:79:03:5b:98:a1:61:b5:51:2e:ac:da:58:09:48:22:4d +# SHA256 Fingerprint: bc:10:4f:15:a4:8b:e7:09:dc:a5:42:a7:e1:d4:b9:df:6f:05:45:27:e8:02:ea:a9:2d:59:54:44:25:8a:fe:71 +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix +RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p +YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw +NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK +EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl +cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz +dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ +fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns +bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD +75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP +FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV +HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp +5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu +b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA +A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p +6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7 +dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys +Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI +l7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Label: "Actalis Authentication Root CA" +# Serial: 6271844772424770508 +# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 +# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac +# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +# Issuer: O=Trustis Limited OU=Trustis FPS Root CA +# Subject: O=Trustis Limited OU=Trustis FPS Root CA +# Label: "Trustis FPS Root CA" +# Serial: 36053640375399034304724988975563710553 +# MD5 Fingerprint: 30:c9:e7:1e:6b:e6:14:eb:65:b2:16:69:20:31:67:4d +# SHA1 Fingerprint: 3b:c0:38:0b:33:c3:f6:a6:0c:86:15:22:93:d9:df:f5:4b:81:c0:04 +# SHA256 Fingerprint: c1:b4:82:99:ab:a5:20:8f:e9:63:0a:ce:55:ca:68:a0:3e:da:5a:51:9c:88:02:a0:d3:a6:73:be:8f:8e:55:7d +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL +ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx +MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc +MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+ +AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH +iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj +vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA +0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB +OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/ +BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E +FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01 +GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW +zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4 +1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE +f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F +jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN +ZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 2 Root CA" +# Serial: 2 +# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 +# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 +# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 3 Root CA" +# Serial: 2 +# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec +# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 +# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 3" +# Serial: 1 +# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef +# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 +# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- + +# Issuer: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus +# Subject: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus +# Label: "EE Certification Centre Root CA" +# Serial: 112324828676200291871926431888494945866 +# MD5 Fingerprint: 43:5e:88:d4:7d:1a:4a:7e:fd:84:2e:52:eb:01:d4:6f +# SHA1 Fingerprint: c9:a8:b9:e7:55:80:5e:58:e3:53:77:a7:25:eb:af:c3:7b:27:cc:d7 +# SHA256 Fingerprint: 3e:84:ba:43:42:90:85:16:e7:75:73:c0:99:2f:09:79:ca:08:4e:46:85:68:1f:f1:95:cc:ba:8a:22:9b:8a:76 +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1 +MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1 +czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG +CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy +MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl +ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS +b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy +euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO +bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw +WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d +MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE +1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/ +zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB +BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF +BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV +v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG +E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW +iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v +GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 2009" +# Serial: 623603 +# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f +# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 +# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 EV 2009" +# Serial: 623604 +# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 +# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 +# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R2 O=Disig a.s. +# Subject: CN=CA Disig Root R2 O=Disig a.s. +# Label: "CA Disig Root R2" +# Serial: 10572350602393338211 +# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 +# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 +# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy +MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe +NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH +PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I +x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe +QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR +yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO +QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 +H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ +QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD +i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs +nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 +rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI +hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf +GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb +lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka ++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal +TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i +nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 +gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr +G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os +zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x +L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Label: "ACCVRAIZ1" +# Serial: 6828503384748696800 +# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 +# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 +# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA Global Root CA" +# Serial: 3262 +# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 +# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 +# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx +EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT +VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 +NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT +B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF +10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz +0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh +MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH +zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc +46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 +yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi +laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP +oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA +BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE +qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm +4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL +1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF +H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo +RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ +nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh +15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW +6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW +nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j +wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz +aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy +KwbQBM0= +-----END CERTIFICATE----- + +# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera +# Label: "TeliaSonera Root CA v1" +# Serial: 199041966741090107964904287217786801558 +# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c +# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 +# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw +NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv +b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD +VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F +VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 +7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X +Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ +/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs +81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm +dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe +Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu +sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 +pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs +slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ +arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD +VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG +9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl +dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj +TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed +Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 +Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI +OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 +vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW +t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn +HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx +SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +# Issuer: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi +# Subject: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi +# Label: "E-Tugra Certification Authority" +# Serial: 7667447206703254355 +# MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 +# SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 +# SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV +BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC +aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV +BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 +Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz +MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ +BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp +em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY +B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH +D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF +Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo +q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D +k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH +fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut +dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM +ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 +zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX +U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 +Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 +XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF +Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR +HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY +GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c +77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 ++GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK +vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 +FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl +yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P +AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD +y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d +NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 2" +# Serial: 1 +# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a +# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 +# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot 2011 O=Atos +# Subject: CN=Atos TrustedRoot 2011 O=Atos +# Label: "Atos TrustedRoot 2011" +# Serial: 6643877497813316402 +# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 +# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 +# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE +AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG +EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM +FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC +REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp +Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM +VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ +SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ +4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L +cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi +eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG +A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j +vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP +DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc +maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D +lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv +KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 14367148294922964480859022125800977897474 +# MD5 Fingerprint: 20:f0:27:68:d1:7e:a0:9d:0e:e6:2a:ca:df:5c:89:8e +# SHA1 Fingerprint: 69:69:56:2e:40:80:f4:24:a1:e7:19:9f:14:ba:f3:ee:58:ab:6a:bb +# SHA256 Fingerprint: be:c9:49:11:c2:95:56:76:db:6c:0a:55:09:86:d7:6e:3b:a0:05:66:7c:44:2c:97:62:b4:fb:b7:73:de:22:8c +-----BEGIN CERTIFICATE----- +MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ +FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F +uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX +kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs +ewv4n4Q= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden +# Label: "Staat der Nederlanden Root CA - G3" +# Serial: 10003001 +# MD5 Fingerprint: 0b:46:67:07:db:10:2f:19:8c:35:50:60:d1:0b:f4:37 +# SHA1 Fingerprint: d8:eb:6b:41:51:92:59:e0:f3:e7:85:00:c0:3d:b6:88:97:c9:ee:fc +# SHA256 Fingerprint: 3c:4f:b0:b9:5a:b8:b3:00:32:f4:32:b8:6f:53:5f:e1:72:c1:85:d0:fd:39:86:58:37:cf:36:18:7f:a6:f4:28 +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX +DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl +ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv +b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP +cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW +IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX +xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy +KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR +9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az +5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8 +6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7 +Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP +bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt +BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt +XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd +INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD +U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp +LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8 +Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp +gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh +/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw +0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A +fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq +4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR +1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/ +QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM +94B7IWcnMFk= +-----END CERTIFICATE----- + +# Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden +# Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden +# Label: "Staat der Nederlanden EV Root CA" +# Serial: 10000013 +# MD5 Fingerprint: fc:06:af:7b:e8:1a:f1:9a:b4:e8:d2:70:1f:c0:f5:ba +# SHA1 Fingerprint: 76:e2:7e:c1:4f:db:82:c1:c0:a6:75:b5:05:be:3d:29:b4:ed:db:bb +# SHA256 Fingerprint: 4d:24:91:41:4c:fe:95:67:46:ec:4c:ef:a6:cf:6f:72:e2:8a:13:29:43:2f:9d:8a:90:7a:c4:cb:5d:ad:c1:5a +-----BEGIN CERTIFICATE----- +MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO +TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh +dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y +MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg +TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS +b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS +M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC +UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d +Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p +rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l +pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb +j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC +KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS +/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X +cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH +1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP +px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7 +MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI +eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u +2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS +v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC +wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy +CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e +vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6 +Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa +Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL +eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8 +FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc +7uzXLg== +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G2" +# Serial: 1246989352 +# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 +# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 +# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 +cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs +IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz +dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy +NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu +dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt +dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 +aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T +RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN +cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW +wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 +U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 +jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN +BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ +jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v +1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R +nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH +VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - EC1" +# Serial: 51543124481930649114116133369 +# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc +# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 +# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG +A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 +d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu +dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq +RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy +MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g +Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi +A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt +ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH +Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC +R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX +hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GB CA" +# Serial: 157768595616588414422159278966750757568 +# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d +# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed +# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt +MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg +Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i +YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x +CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG +b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 +HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx +WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX +1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk +u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P +99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r +M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB +BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh +cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 +gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO +ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf +aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Label: "SZAFIR ROOT CA2" +# Serial: 357043034767186914217277344587386743377558296292 +# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 +# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de +# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 +ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw +NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L +cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg +Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN +QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT +3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw +3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 +3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 +BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN +XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF +AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw +8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG +nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP +oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy +d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg +LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA 2" +# Serial: 44979900017204383099463764357512596969 +# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 +# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 +# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB +gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG +A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz +OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ +VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 +b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA +DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn +0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB +OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE +fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E +Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m +o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i +sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW +OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez +Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS +adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n +3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ +F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf +CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 +XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm +djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ +WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb +AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq +P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko +b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj +XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P +5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi +DrW5viSP +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce +# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 +# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix +DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k +IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT +N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v +dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG +A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh +ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx +QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA +4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 +AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 +4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C +ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV +9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD +gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 +Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq +NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko +LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd +ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I +XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI +M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot +9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V +Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea +j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh +X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ +l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf +bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 +pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK +e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 +vm9qp/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef +# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 +# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN +BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl +bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv +b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ +BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj +YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 +MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 +dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg +QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa +jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi +C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep +lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof +TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Label: "AC RAIZ FNMT-RCM" +# Serial: 485876308206448804701554682760554759 +# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d +# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 +# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx +CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ +WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ +BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG +Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ +yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf +BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz +WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF +tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z +374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC +IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL +mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 +wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS +MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 +ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet +UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H +YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 +LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 +RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM +LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf +77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N +JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm +fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp +6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp +1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B +9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok +RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv +uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 1 O=Amazon +# Subject: CN=Amazon Root CA 1 O=Amazon +# Label: "Amazon Root CA 1" +# Serial: 143266978916655856878034712317230054538369994 +# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 +# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 +# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA +A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI +U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs +N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv +o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU +5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy +rqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 2 O=Amazon +# Subject: CN=Amazon Root CA 2 O=Amazon +# Label: "Amazon Root CA 2" +# Serial: 143266982885963551818349160658925006970653239 +# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 +# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a +# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK +gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ +W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg +1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K +8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r +2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me +z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR +8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj +mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz +7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 ++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI +0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm +UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 +LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS +k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl +7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm +btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl +urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ +fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 +n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE +76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H +9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT +4PsJYGw= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 3 O=Amazon +# Subject: CN=Amazon Root CA 3 O=Amazon +# Label: "Amazon Root CA 3" +# Serial: 143266986699090766294700635381230934788665930 +# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 +# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e +# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl +ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr +ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr +BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM +YyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 4 O=Amazon +# Subject: CN=Amazon Root CA 4 O=Amazon +# Label: "Amazon Root CA 4" +# Serial: 143266989758080763974105200630763877849284878 +# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd +# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be +# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi +9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk +M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB +MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw +CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW +1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +# Issuer: CN=LuxTrust Global Root 2 O=LuxTrust S.A. +# Subject: CN=LuxTrust Global Root 2 O=LuxTrust S.A. +# Label: "LuxTrust Global Root 2" +# Serial: 59914338225734147123941058376788110305822489521 +# MD5 Fingerprint: b2:e1:09:00:61:af:f7:f1:91:6f:c4:ad:8d:5e:3b:7c +# SHA1 Fingerprint: 1e:0e:56:19:0a:d1:8b:25:98:b2:04:44:ff:66:8a:04:17:99:5f:3f +# SHA256 Fingerprint: 54:45:5f:71:29:c2:0b:14:47:c4:18:f9:97:16:8f:24:c5:8f:c5:02:3b:f5:da:5b:e2:eb:6e:1d:d8:90:2e:d5 +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# Serial: 1 +# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 +# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca +# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx +GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp +bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w +KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 +BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy +dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG +EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll +IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU +QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT +TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg +LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 +a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr +LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr +N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X +YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ +iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f +AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH +V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf +IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 +lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c +8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf +lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Label: "GDCA TrustAUTH R5 ROOT" +# Serial: 9009899650740120186 +# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 +# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 +# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE +BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 +MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w +HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj +Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj +TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u +KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj +qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm +MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 +ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP +zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk +L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC +jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA +HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC +AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm +DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 +COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry +L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf +JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg +IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io +2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV +09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ +XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq +T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe +MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +# Issuer: CN=TrustCor RootCert CA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor RootCert CA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor RootCert CA-1" +# Serial: 15752444095811006489 +# MD5 Fingerprint: 6e:85:f1:dc:1a:00:d3:22:d5:b2:b2:ac:6b:37:05:45 +# SHA1 Fingerprint: ff:bd:cd:e7:82:c8:43:5e:3c:6f:26:86:5c:ca:a8:3a:45:5b:c3:0a +# SHA256 Fingerprint: d4:0e:9c:86:cd:8f:e4:68:c1:77:69:59:f4:9e:a7:74:fa:54:86:84:b6:c4:06:f3:90:92:61:f4:dc:e2:57:5c +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYD +VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk +MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U +cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29y +IFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkxMjMxMTcyMzE2WjCB +pDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFuYW1h +IENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUG +A1UECwweVHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZU +cnVzdENvciBSb290Q2VydCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAv463leLCJhJrMxnHQFgKq1mqjQCj/IDHUHuO1CAmujIS2CNUSSUQIpid +RtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4pQa81QBeCQryJ3pS/C3V +seq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0JEsq1pme +9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CV +EY4hgLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorW +hnAbJN7+KIor0Gqw/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/ +DeOxCbeKyKsZn3MzUOcwHwYDVR0jBBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD +ggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5mDo4Nvu7Zp5I +/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf +ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZ +yonnMlo2HD6CqFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djts +L1Ac59v2Z3kf9YKVmgenFK+P3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdN +zl/HHk484IkzlQsPpTLWPFp5LBk= +-----END CERTIFICATE----- + +# Issuer: CN=TrustCor RootCert CA-2 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor RootCert CA-2 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor RootCert CA-2" +# Serial: 2711694510199101698 +# MD5 Fingerprint: a2:e1:f8:18:0b:ba:45:d5:c7:41:2a:bb:37:52:45:64 +# SHA1 Fingerprint: b8:be:6d:cb:56:f1:55:b9:63:d4:12:ca:4e:06:34:c7:94:b2:1c:c0 +# SHA256 Fingerprint: 07:53:e9:40:37:8c:1b:d5:e3:83:6e:39:5d:ae:a5:cb:83:9e:50:46:f1:bd:0e:ae:19:51:cf:10:fe:c7:c9:65 +-----BEGIN CERTIFICATE----- +MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNV +BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw +IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy +dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEfMB0GA1UEAwwWVHJ1c3RDb3Ig +Um9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEyMzExNzI2MzlaMIGk +MQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEg +Q2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYD +VQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRy +dXN0Q29yIFJvb3RDZXJ0IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCnIG7CKqJiJJWQdsg4foDSq8GbZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+ +QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9NkRvRUqdw6VC0xK5mC8tkq +1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1oYxOdqHp +2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nK +DOObXUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hape +az6LMvYHL1cEksr1/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF +3wP+TfSvPd9cW436cOGlfifHhi5qjxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88 +oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQPeSghYA2FFn3XVDjxklb9tTNM +g9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+CtgrKAmrhQhJ8Z3 +mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh +8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAd +BgNVHQ4EFgQU2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6U +nrybPZx9mCAZ5YwwYrIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYw +DQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/hOsh80QA9z+LqBrWyOrsGS2h60COX +dKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnpkpfbsEZC89NiqpX+ +MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv2wnL +/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RX +CI/hOWB3S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYa +ZH9bDTMJBzN7Bj8RpFxwPIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW +2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dvDDqPys/cA8GiCcjl/YBeyGBCARsaU1q7 +N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYURpFHmygk71dSTlxCnKr3 +Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANExdqtvArB +As8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp +5KeXRKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu +1uwJ +-----END CERTIFICATE----- + +# Issuer: CN=TrustCor ECA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Subject: CN=TrustCor ECA-1 O=TrustCor Systems S. de R.L. OU=TrustCor Certificate Authority +# Label: "TrustCor ECA-1" +# Serial: 9548242946988625984 +# MD5 Fingerprint: 27:92:23:1d:0a:f5:40:7c:e9:e6:6b:9d:d8:f5:e7:6c +# SHA1 Fingerprint: 58:d1:df:95:95:67:6b:63:c0:f0:5b:1c:17:4d:8b:84:0b:c8:78:bd +# SHA256 Fingerprint: 5a:88:5d:b1:9c:01:d9:12:c5:75:93:88:93:8c:af:bb:df:03:1a:b2:d4:8e:91:ee:15:58:9b:42:97:1d:03:9c +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYD +VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk +MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U +cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFzAVBgNVBAMMDlRydXN0Q29y +IEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3MjgwN1owgZwxCzAJBgNV +BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw +IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy +dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3Ig +RUNBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb +3w9U73NjKYKtR8aja+3+XzP4Q1HpGjORMRegdMTUpwHmspI+ap3tDvl0mEDTPwOA +BoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23xFUfJ3zSCNV2HykVh0A5 +3ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmcp0yJF4Ou +owReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/ +wZ0+fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZF +ZtS6mFjBAgMBAAGjYzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAf +BgNVHSMEGDAWgBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEABT41XBVwm8nHc2Fv +civUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u/ukZMjgDfxT2 +AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F +hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50 +soIipX1TH0XsJ5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BI +WJZpTdwHjFGTot+fDz2LYLSCjaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1Wi +tJ/X5g== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Label: "SSL.com Root Certification Authority RSA" +# Serial: 8875640296558310041 +# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 +# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb +# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE +BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK +DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz +OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R +xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX +qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC +C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 +6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh +/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF +YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E +JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc +US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 +ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm ++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi +M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G +A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV +cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc +Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs +PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ +q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 +cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr +a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I +H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y +K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu +nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf +oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY +Ic2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com Root Certification Authority ECC" +# Serial: 8495723813297216424 +# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e +# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a +# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz +WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 +b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS +b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI +7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg +CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD +VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T +kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ +gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority RSA R2" +# Serial: 6248227494352943350 +# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 +# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a +# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV +BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE +CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy +MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G +A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD +DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq +M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf +OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa +4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 +HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR +aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA +b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ +Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV +PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO +pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu +UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY +MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 +9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW +s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 +Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg +cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM +79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz +/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt +ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm +Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK +QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ +w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi +S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 +mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority ECC" +# Serial: 3182246526754555285 +# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 +# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d +# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx +NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv +bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA +VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku +WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX +5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ +ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg +h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Label: "GlobalSign Root CA - R6" +# Serial: 1417766617973444989252670301619537 +# MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae +# SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 +# SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg +MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx +MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET +MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI +xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k +ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD +aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw +LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw +1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX +k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 +SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h +bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n +WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY +rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce +MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu +bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt +Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 +55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj +vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf +cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz +oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp +nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs +pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v +JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R +8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 +5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GC CA" +# Serial: 44084345621038548146064804565436152554 +# MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 +# SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 +# SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw +CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 +bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg +Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ +BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu +ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS +b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni +eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W +p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T +rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV +57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg +Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC +# Subject: CN=GTS Root R1 O=Google Trust Services LLC +# Label: "GTS Root R1" +# Serial: 146587175971765017618439757810265552097 +# MD5 Fingerprint: 82:1a:ef:d4:d2:4a:f2:9f:e2:3d:97:06:14:70:72:85 +# SHA1 Fingerprint: e1:c9:50:e6:ef:22:f8:4c:56:45:72:8b:92:20:60:d7:d5:a7:a3:e8 +# SHA256 Fingerprint: 2a:57:54:71:e3:13:40:bc:21:58:1c:bd:2c:f1:3e:15:84:63:20:3e:ce:94:bc:f9:d3:cc:19:6b:f0:9a:54:72 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH +MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM +QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy +MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl +cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM +f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vX +mX7wCl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7 +zUjwTcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0P +fyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtc +vfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4 +Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUsp +zBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOO +Rc92wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYW +k70paDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+ +DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgF +lQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBADiW +Cu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1 +d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6Z +XPYfcX3v73svfuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZR +gyFmxhE+885H7pwoHyXa/6xmld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3 +d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9bgsiG1eGZbYwE8na6SfZu6W0eX6Dv +J4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq4BjFbkerQUIpm/Zg +DdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWErtXvM ++SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyy +F62ARPBopY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9 +SQ98POyDGCBDTtWTurQ0sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdws +E3PYJ/HQcu51OyLemGhmW/HGY0dVHLqlCFF1pkgl +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R2 O=Google Trust Services LLC +# Subject: CN=GTS Root R2 O=Google Trust Services LLC +# Label: "GTS Root R2" +# Serial: 146587176055767053814479386953112547951 +# MD5 Fingerprint: 44:ed:9a:0e:a4:09:3b:00:f2:ae:4c:a3:c6:61:b0:8b +# SHA1 Fingerprint: d2:73:96:2a:2a:5e:39:9f:73:3f:e1:c7:1e:64:3f:03:38:34:fc:4d +# SHA256 Fingerprint: c4:5d:7b:b0:8e:6d:67:e6:2e:42:35:11:0b:56:4e:5f:78:fd:92:ef:05:8c:84:0a:ea:4e:64:55:d7:58:5c:60 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBH +MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM +QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy +MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl +cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv +CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3Kg +GjSY6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9Bu +XvAuMC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOd +re7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXu +PuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1 +mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K +8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqj +x5RWIr9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsR +nTKaG73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0 +kzCqgc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9Ok +twIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBALZp +8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT +vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiT +z9D2PGcDFWEJ+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiA +pJiS4wGWAqoC7o87xdFtCjMwc3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvb +pxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3DaWsYDQvTtN6LwG1BUSw7YhN4ZKJmB +R64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5rn/WkhLx3+WuXrD5R +RaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56GtmwfuNmsk +0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC +5AwiWVIQ7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiF +izoHCBy69Y9Vmhh1fuXsgWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLn +yOd/xCxgXS/Dr55FBcOEArf9LAhST4Ldo/DUhgkC +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R3 O=Google Trust Services LLC +# Subject: CN=GTS Root R3 O=Google Trust Services LLC +# Label: "GTS Root R3" +# Serial: 146587176140553309517047991083707763997 +# MD5 Fingerprint: 1a:79:5b:6b:04:52:9c:5d:c7:74:33:1b:25:9a:f9:25 +# SHA1 Fingerprint: 30:d4:24:6f:07:ff:db:91:89:8a:0b:e9:49:66:11:eb:8c:5e:46:e5 +# SHA256 Fingerprint: 15:d5:b8:77:46:19:ea:7d:54:ce:1c:a6:d0:b0:c4:03:e0:37:a9:17:f1:31:e8:a0:4e:1e:6b:7a:71:ba:bc:e5 +-----BEGIN CERTIFICATE----- +MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout +736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2A +DDL24CejQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFuk +fCPAlaUs3L6JbyO5o91lAFJekazInXJ0glMLfalAvWhgxeG4VDvBNhcl2MG9AjEA +njWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOaKaqW04MjyaR7YbPMAuhd +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC +# Subject: CN=GTS Root R4 O=Google Trust Services LLC +# Label: "GTS Root R4" +# Serial: 146587176229350439916519468929765261721 +# MD5 Fingerprint: 5d:b6:6a:c4:60:17:24:6a:1a:99:a8:4b:ee:5e:b4:26 +# SHA1 Fingerprint: 2a:1d:60:27:d9:4a:b1:0a:1c:4d:91:5c:cd:33:a0:cb:3e:2d:54:cb +# SHA256 Fingerprint: 71:cc:a5:39:1f:9e:79:4b:04:80:25:30:b3:63:e1:21:da:8a:30:43:bb:26:66:2f:ea:4d:ca:7f:c9:51:a4:bd +-----BEGIN CERTIFICATE----- +MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu +hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/l +xKvRHYqjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0 +CMRw3J5QdCHojXohw0+WbhXRIjVhLfoIN+4Zba3bssx9BzT1YBkstTTZbyACMANx +sbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11xzPKwTdb+mciUqXWi4w== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Global G2 Root O=UniTrust +# Subject: CN=UCA Global G2 Root O=UniTrust +# Label: "UCA Global G2 Root" +# Serial: 124779693093741543919145257850076631279 +# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 +# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a +# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH +bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x +CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds +b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr +b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 +kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm +VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R +VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc +C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj +tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY +D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv +j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl +NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 +iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP +O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV +ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj +L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl +1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU +b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV +PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj +y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb +EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg +DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI ++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy +YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX +UB+K+wb1whnw0A== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Extended Validation Root O=UniTrust +# Subject: CN=UCA Extended Validation Root O=UniTrust +# Label: "UCA Extended Validation Root" +# Serial: 106100277556486529736699587978573607008 +# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 +# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a +# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF +eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx +MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV +BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog +D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS +sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop +O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk +sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi +c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj +VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz +KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ +TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G +sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs +1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD +fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN +l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ +VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 +c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp +4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s +t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj +2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO +vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C +xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx +cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM +fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax +-----END CERTIFICATE----- + +# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Label: "Certigna Root CA" +# Serial: 269714418870597844693661054334862075617 +# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 +# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 +# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw +WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw +MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x +MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD +VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX +BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO +ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M +CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu +I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm +TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh +C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf +ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz +IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT +Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k +JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 +hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB +GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov +L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo +dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr +aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq +hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L +6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG +HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 +0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB +lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi +o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 +gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v +faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 +Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh +jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw +3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign Root CA - G1" +# Serial: 235931866688319308814040 +# MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac +# SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c +# SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD +VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU +ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH +MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO +MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv +Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz +f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO +8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq +d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM +tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt +Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB +o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x +PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM +wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d +GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH +6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby +RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign ECC Root CA - G3" +# Serial: 287880440101571086945156 +# MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 +# SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 +# SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG +EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo +bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ +TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s +b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 +WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS +fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB +zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq +hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB +CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD ++JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Label: "emSign Root CA - C1" +# Serial: 825510296613316004955058 +# MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 +# SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 +# SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG +A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg +SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v +dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ +BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ +HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH +3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH +GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c +xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 +aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq +TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 +/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 +kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG +YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT ++xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo +WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Label: "emSign ECC Root CA - C3" +# Serial: 582948710642506000014504 +# MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 +# SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 +# SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG +EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx +IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND +IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci +MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti +sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O +BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB +Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c +3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J +0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Label: "Hongkong Post Root CA 3" +# Serial: 46170865288971385588281144162979347873371282084 +# MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 +# SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 +# SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 +-----BEGIN CERTIFICATE----- +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 +mpv0 +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority - G4 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2015 Entrust, Inc. - for authorized use only +# Subject: CN=Entrust Root Certification Authority - G4 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2015 Entrust, Inc. - for authorized use only +# Label: "Entrust Root Certification Authority - G4" +# Serial: 289383649854506086828220374796556676440 +# MD5 Fingerprint: 89:53:f1:83:23:b7:7c:8e:05:f1:8c:71:38:4e:1f:88 +# SHA1 Fingerprint: 14:88:4e:86:26:37:b0:26:af:59:62:5c:40:77:ec:35:29:ba:96:01 +# SHA256 Fingerprint: db:35:17:d1:f6:73:2a:2d:5a:b9:7c:53:3e:c7:07:79:ee:32:70:a6:2f:b4:ac:42:38:37:24:60:e6:f0:1e:88 +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAw +gb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL +Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg +MjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAw +BgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0 +MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1 +c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJ +bmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3Qg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3DumSXbcr3DbVZwbPLqGgZ +2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV3imz/f3E +T+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j +5pds8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAM +C1rlLAHGVK/XqsEQe9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73T +DtTUXm6Hnmo9RR3RXRv06QqsYJn7ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNX +wbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5XxNMhIWNlUpEbsZmOeX7m640A +2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV7rtNOzK+mndm +nqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 +dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwl +N4y6mACXi0mWHv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNj +c0kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9nMA0GCSqGSIb3DQEBCwUAA4ICAQAS +5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4QjbRaZIxowLByQzTS +Gwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht7LGr +hFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/ +B7NTeLUKYvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uI +AeV8KEsD+UmDfLJ/fOPtjqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbw +H5Lk6rWS02FREAutp9lfx1/cH6NcjKF+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+ +b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKWRGhXxNUzzxkvFMSUHHuk +2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjAJOgc47Ol +IQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk +5F6G+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuY +n/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw== +-----END CERTIFICATE----- diff --git a/Lib/site-packages/pip/_vendor/certifi/core.py b/Lib/site-packages/pip/_vendor/certifi/core.py new file mode 100644 index 0000000..7271acf --- /dev/null +++ b/Lib/site-packages/pip/_vendor/certifi/core.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- + +""" +certifi.py +~~~~~~~~~~ + +This module returns the installation location of cacert.pem. +""" +import os + + +def where(): + f = os.path.dirname(__file__) + + return os.path.join(f, 'cacert.pem') diff --git a/Lib/site-packages/pip/_vendor/chardet/__init__.py b/Lib/site-packages/pip/_vendor/chardet/__init__.py new file mode 100644 index 0000000..0f9f820 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/__init__.py @@ -0,0 +1,39 @@ +######################## BEGIN LICENSE BLOCK ######################## +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + + +from .compat import PY2, PY3 +from .universaldetector import UniversalDetector +from .version import __version__, VERSION + + +def detect(byte_str): + """ + Detect the encoding of the given byte string. + + :param byte_str: The byte sequence to examine. + :type byte_str: ``bytes`` or ``bytearray`` + """ + if not isinstance(byte_str, bytearray): + if not isinstance(byte_str, bytes): + raise TypeError('Expected object of type bytes or bytearray, got: ' + '{0}'.format(type(byte_str))) + else: + byte_str = bytearray(byte_str) + detector = UniversalDetector() + detector.feed(byte_str) + return detector.close() diff --git a/Lib/site-packages/pip/_vendor/chardet/big5freq.py b/Lib/site-packages/pip/_vendor/chardet/big5freq.py new file mode 100644 index 0000000..38f3251 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/big5freq.py @@ -0,0 +1,386 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Big5 frequency table +# by Taiwan's Mandarin Promotion Council +# +# +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +#Char to FreqOrder table +BIG5_TABLE_SIZE = 5376 + +BIG5_CHAR_TO_FREQ_ORDER = ( + 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 +3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 +1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 + 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 +3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 +4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 +5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 + 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 + 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 + 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 +2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 +1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 +3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 + 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 +3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 +2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 + 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 +3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 +1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 +5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 + 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 +5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 +1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 + 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 + 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 +3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 +3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 + 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 +2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 +2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 + 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 + 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 +3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 +1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 +1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 +1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 +2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 + 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 +4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 +1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 +5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 +2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 + 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 + 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 + 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 + 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 +5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 + 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 +1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 + 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 + 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 +5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 +1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 + 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 +3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 +4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 +3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 + 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 + 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 +1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 +4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 +3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 +3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 +2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 +5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 +3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 +5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 +1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 +2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 +1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 + 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 +1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 +4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 +3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 + 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 + 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 + 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 +2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 +5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 +1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 +2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 +1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 +1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 +5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 +5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 +5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 +3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 +4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 +4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 +2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 +5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 +3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 + 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 +5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 +5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 +1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 +2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 +3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 +4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 +5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 +3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 +4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 +1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 +1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 +4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 +1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 + 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 +1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 +1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 +3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 + 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 +5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 +2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 +1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 +1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 +5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 + 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 +4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 + 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 +2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 + 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 +1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 +1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 + 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 +4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 +4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 +1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 +3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 +5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 +5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 +1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 +2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 +1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 +3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 +2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 +3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 +2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 +4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 +4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 +3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 + 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 +3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 + 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 +3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 +4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 +3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 +1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 +5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 + 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 +5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 +1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 + 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 +4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 +4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 + 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 +2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 +2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 +3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 +1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 +4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 +2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 +1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 +1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 +2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 +3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 +1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 +5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 +1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 +4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 +1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 + 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 +1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 +4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 +4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 +2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 +1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 +4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 + 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 +5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 +2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 +3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 +4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 + 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 +5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 +5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 +1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 +4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 +4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 +2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 +3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 +3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 +2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 +1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 +4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 +3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 +3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 +2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 +4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 +5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 +3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 +2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 +3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 +1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 +2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 +3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 +4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 +2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 +2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 +5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 +1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 +2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 +1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 +3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 +4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 +2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 +3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 +3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 +2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 +4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 +2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 +3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 +4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 +5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 +3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 + 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 +1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 +4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 +1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 +4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 +5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 + 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 +5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 +5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 +2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 +3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 +2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 +2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 + 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 +1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 +4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 +3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 +3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 + 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 +2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 + 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 +2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 +4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 +1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 +4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 +1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 +3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 + 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 +3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 +5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 +5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 +3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 +3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 +1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 +2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 +5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 +1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 +1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 +3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 + 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 +1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 +4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 +5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 +2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 +3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 + 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 +1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 +2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 +2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 +5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 +5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 +5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 +2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 +2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 +1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 +4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 +3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 +3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 +4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 +4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 +2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 +2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 +5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 +4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 +5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 +4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 + 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 + 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 +1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 +3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 +4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 +1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 +5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 +2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 +2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 +3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 +5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 +1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 +3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 +5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 +1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 +5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 +2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 +3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 +2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 +3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 +3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 +3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 +4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 + 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 +2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 +4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 +3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 +5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 +1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 +5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 + 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 +1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 + 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 +4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 +1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 +4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 +1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 + 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 +3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 +4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 +5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 + 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 +3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 + 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 +2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 +) + diff --git a/Lib/site-packages/pip/_vendor/chardet/big5prober.py b/Lib/site-packages/pip/_vendor/chardet/big5prober.py new file mode 100644 index 0000000..98f9970 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/big5prober.py @@ -0,0 +1,47 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import Big5DistributionAnalysis +from .mbcssm import BIG5_SM_MODEL + + +class Big5Prober(MultiByteCharSetProber): + def __init__(self): + super(Big5Prober, self).__init__() + self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) + self.distribution_analyzer = Big5DistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "Big5" + + @property + def language(self): + return "Chinese" diff --git a/Lib/site-packages/pip/_vendor/chardet/chardistribution.py b/Lib/site-packages/pip/_vendor/chardet/chardistribution.py new file mode 100644 index 0000000..c0395f4 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/chardistribution.py @@ -0,0 +1,233 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE, + EUCTW_TYPICAL_DISTRIBUTION_RATIO) +from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE, + EUCKR_TYPICAL_DISTRIBUTION_RATIO) +from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE, + GB2312_TYPICAL_DISTRIBUTION_RATIO) +from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE, + BIG5_TYPICAL_DISTRIBUTION_RATIO) +from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE, + JIS_TYPICAL_DISTRIBUTION_RATIO) + + +class CharDistributionAnalysis(object): + ENOUGH_DATA_THRESHOLD = 1024 + SURE_YES = 0.99 + SURE_NO = 0.01 + MINIMUM_DATA_THRESHOLD = 3 + + def __init__(self): + # Mapping table to get frequency order from char order (get from + # GetOrder()) + self._char_to_freq_order = None + self._table_size = None # Size of above table + # This is a constant value which varies from language to language, + # used in calculating confidence. See + # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html + # for further detail. + self.typical_distribution_ratio = None + self._done = None + self._total_chars = None + self._freq_chars = None + self.reset() + + def reset(self): + """reset analyser, clear any state""" + # If this flag is set to True, detection is done and conclusion has + # been made + self._done = False + self._total_chars = 0 # Total characters encountered + # The number of characters whose frequency order is less than 512 + self._freq_chars = 0 + + def feed(self, char, char_len): + """feed a character with known length""" + if char_len == 2: + # we only care about 2-bytes character in our distribution analysis + order = self.get_order(char) + else: + order = -1 + if order >= 0: + self._total_chars += 1 + # order is valid + if order < self._table_size: + if 512 > self._char_to_freq_order[order]: + self._freq_chars += 1 + + def get_confidence(self): + """return confidence based on existing data""" + # if we didn't receive any character in our consideration range, + # return negative answer + if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: + return self.SURE_NO + + if self._total_chars != self._freq_chars: + r = (self._freq_chars / ((self._total_chars - self._freq_chars) + * self.typical_distribution_ratio)) + if r < self.SURE_YES: + return r + + # normalize confidence (we don't want to be 100% sure) + return self.SURE_YES + + def got_enough_data(self): + # It is not necessary to receive all data to draw conclusion. + # For charset detection, certain amount of data is enough + return self._total_chars > self.ENOUGH_DATA_THRESHOLD + + def get_order(self, byte_str): + # We do not handle characters based on the original encoding string, + # but convert this encoding string to a number, here called order. + # This allows multiple encodings of a language to share one frequency + # table. + return -1 + + +class EUCTWDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCTWDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER + self._table_size = EUCTW_TABLE_SIZE + self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-TW encoding, we are interested + # first byte range: 0xc4 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char = byte_str[0] + if first_char >= 0xC4: + return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 + else: + return -1 + + +class EUCKRDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCKRDistributionAnalysis, self).__init__() + self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER + self._table_size = EUCKR_TABLE_SIZE + self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-KR encoding, we are interested + # first byte range: 0xb0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char = byte_str[0] + if first_char >= 0xB0: + return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 + else: + return -1 + + +class GB2312DistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(GB2312DistributionAnalysis, self).__init__() + self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER + self._table_size = GB2312_TABLE_SIZE + self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for GB2312 encoding, we are interested + # first byte range: 0xb0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if (first_char >= 0xB0) and (second_char >= 0xA1): + return 94 * (first_char - 0xB0) + second_char - 0xA1 + else: + return -1 + + +class Big5DistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(Big5DistributionAnalysis, self).__init__() + self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER + self._table_size = BIG5_TABLE_SIZE + self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for big5 encoding, we are interested + # first byte range: 0xa4 -- 0xfe + # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if first_char >= 0xA4: + if second_char >= 0xA1: + return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 + else: + return 157 * (first_char - 0xA4) + second_char - 0x40 + else: + return -1 + + +class SJISDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(SJISDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for sjis encoding, we are interested + # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe + # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe + # no validation needed here. State machine has done that + first_char, second_char = byte_str[0], byte_str[1] + if (first_char >= 0x81) and (first_char <= 0x9F): + order = 188 * (first_char - 0x81) + elif (first_char >= 0xE0) and (first_char <= 0xEF): + order = 188 * (first_char - 0xE0 + 31) + else: + return -1 + order = order + second_char - 0x40 + if second_char > 0x7F: + order = -1 + return order + + +class EUCJPDistributionAnalysis(CharDistributionAnalysis): + def __init__(self): + super(EUCJPDistributionAnalysis, self).__init__() + self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER + self._table_size = JIS_TABLE_SIZE + self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO + + def get_order(self, byte_str): + # for euc-JP encoding, we are interested + # first byte range: 0xa0 -- 0xfe + # second byte range: 0xa1 -- 0xfe + # no validation needed here. State machine has done that + char = byte_str[0] + if char >= 0xA0: + return 94 * (char - 0xA1) + byte_str[1] - 0xa1 + else: + return -1 diff --git a/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py b/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py new file mode 100644 index 0000000..8b3738e --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py @@ -0,0 +1,106 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState +from .charsetprober import CharSetProber + + +class CharSetGroupProber(CharSetProber): + def __init__(self, lang_filter=None): + super(CharSetGroupProber, self).__init__(lang_filter=lang_filter) + self._active_num = 0 + self.probers = [] + self._best_guess_prober = None + + def reset(self): + super(CharSetGroupProber, self).reset() + self._active_num = 0 + for prober in self.probers: + if prober: + prober.reset() + prober.active = True + self._active_num += 1 + self._best_guess_prober = None + + @property + def charset_name(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.charset_name + + @property + def language(self): + if not self._best_guess_prober: + self.get_confidence() + if not self._best_guess_prober: + return None + return self._best_guess_prober.language + + def feed(self, byte_str): + for prober in self.probers: + if not prober: + continue + if not prober.active: + continue + state = prober.feed(byte_str) + if not state: + continue + if state == ProbingState.FOUND_IT: + self._best_guess_prober = prober + return self.state + elif state == ProbingState.NOT_ME: + prober.active = False + self._active_num -= 1 + if self._active_num <= 0: + self._state = ProbingState.NOT_ME + return self.state + return self.state + + def get_confidence(self): + state = self.state + if state == ProbingState.FOUND_IT: + return 0.99 + elif state == ProbingState.NOT_ME: + return 0.01 + best_conf = 0.0 + self._best_guess_prober = None + for prober in self.probers: + if not prober: + continue + if not prober.active: + self.logger.debug('%s not active', prober.charset_name) + continue + conf = prober.get_confidence() + self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf) + if best_conf < conf: + best_conf = conf + self._best_guess_prober = prober + if not self._best_guess_prober: + return 0.0 + return best_conf diff --git a/Lib/site-packages/pip/_vendor/chardet/charsetprober.py b/Lib/site-packages/pip/_vendor/chardet/charsetprober.py new file mode 100644 index 0000000..eac4e59 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/charsetprober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import logging +import re + +from .enums import ProbingState + + +class CharSetProber(object): + + SHORTCUT_THRESHOLD = 0.95 + + def __init__(self, lang_filter=None): + self._state = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + + def reset(self): + self._state = ProbingState.DETECTING + + @property + def charset_name(self): + return None + + def feed(self, buf): + pass + + @property + def state(self): + return self._state + + def get_confidence(self): + return 0.0 + + @staticmethod + def filter_high_byte_only(buf): + buf = re.sub(b'([\x00-\x7F])+', b' ', buf) + return buf + + @staticmethod + def filter_international_words(buf): + """ + We define three types of bytes: + alphabet: english alphabets [a-zA-Z] + international: international characters [\x80-\xFF] + marker: everything else [^a-zA-Z\x80-\xFF] + + The input buffer can be thought to contain a series of words delimited + by markers. This function works to filter all words that contain at + least one international character. All contiguous sequences of markers + are replaced by a single space ascii character. + + This filter applies to all scripts which do not use English characters. + """ + filtered = bytearray() + + # This regex expression filters out only words that have at-least one + # international character. The word may include one marker character at + # the end. + words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?', + buf) + + for word in words: + filtered.extend(word[:-1]) + + # If the last character in the word is a marker, replace it with a + # space as markers shouldn't affect our analysis (they are used + # similarly across all languages and may thus have similar + # frequencies). + last_char = word[-1:] + if not last_char.isalpha() and last_char < b'\x80': + last_char = b' ' + filtered.extend(last_char) + + return filtered + + @staticmethod + def filter_with_english_letters(buf): + """ + Returns a copy of ``buf`` that retains only the sequences of English + alphabet and high byte characters that are not between <> characters. + Also retains English alphabet and high byte characters immediately + before occurrences of >. + + This filter can be applied to all scripts which contain both English + characters and extended ASCII characters, but is currently only used by + ``Latin1Prober``. + """ + filtered = bytearray() + in_tag = False + prev = 0 + + for curr in range(len(buf)): + # Slice here to get bytes instead of an int with Python 3 + buf_char = buf[curr:curr + 1] + # Check if we're coming out of or entering an HTML tag + if buf_char == b'>': + in_tag = False + elif buf_char == b'<': + in_tag = True + + # If current character is not extended-ASCII and not alphabetic... + if buf_char < b'\x80' and not buf_char.isalpha(): + # ...and we're not in a tag + if curr > prev and not in_tag: + # Keep everything after last non-extended-ASCII, + # non-alphabetic character + filtered.extend(buf[prev:curr]) + # Output a space to delimit stretch we kept + filtered.extend(b' ') + prev = curr + 1 + + # If we're not in a tag... + if not in_tag: + # Keep everything after last non-extended-ASCII, non-alphabetic + # character + filtered.extend(buf[prev:]) + + return filtered diff --git a/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py b/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py @@ -0,0 +1 @@ + diff --git a/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py b/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py new file mode 100644 index 0000000..c61136b --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python +""" +Script which takes one or more file paths and reports on their detected +encodings + +Example:: + + % chardetect somefile someotherfile + somefile: windows-1252 with confidence 0.5 + someotherfile: ascii with confidence 1.0 + +If no paths are provided, it takes its input from stdin. + +""" + +from __future__ import absolute_import, print_function, unicode_literals + +import argparse +import sys + +from pip._vendor.chardet import __version__ +from pip._vendor.chardet.compat import PY2 +from pip._vendor.chardet.universaldetector import UniversalDetector + + +def description_of(lines, name='stdin'): + """ + Return a string describing the probable encoding of a file or + list of strings. + + :param lines: The lines to get the encoding of. + :type lines: Iterable of bytes + :param name: Name of file or collection of lines + :type name: str + """ + u = UniversalDetector() + for line in lines: + line = bytearray(line) + u.feed(line) + # shortcut out of the loop to save reading further - particularly useful if we read a BOM. + if u.done: + break + u.close() + result = u.result + if PY2: + name = name.decode(sys.getfilesystemencoding(), 'ignore') + if result['encoding']: + return '{0}: {1} with confidence {2}'.format(name, result['encoding'], + result['confidence']) + else: + return '{0}: no result'.format(name) + + +def main(argv=None): + """ + Handles command line arguments and gets things started. + + :param argv: List of arguments, as if specified on the command-line. + If None, ``sys.argv[1:]`` is used instead. + :type argv: list of str + """ + # Get command line arguments + parser = argparse.ArgumentParser( + description="Takes one or more file paths and reports their detected \ + encodings") + parser.add_argument('input', + help='File whose encoding we would like to determine. \ + (default: stdin)', + type=argparse.FileType('rb'), nargs='*', + default=[sys.stdin if PY2 else sys.stdin.buffer]) + parser.add_argument('--version', action='version', + version='%(prog)s {0}'.format(__version__)) + args = parser.parse_args(argv) + + for f in args.input: + if f.isatty(): + print("You are running chardetect interactively. Press " + + "CTRL-D twice at the start of a blank line to signal the " + + "end of your input. If you want help, run chardetect " + + "--help\n", file=sys.stderr) + print(description_of(f, f.name)) + + +if __name__ == '__main__': + main() diff --git a/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py b/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py new file mode 100644 index 0000000..68fba44 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py @@ -0,0 +1,88 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import logging + +from .enums import MachineState + + +class CodingStateMachine(object): + """ + A state machine to verify a byte sequence for a particular encoding. For + each byte the detector receives, it will feed that byte to every active + state machine available, one byte at a time. The state machine changes its + state based on its previous state and the byte it receives. There are 3 + states in a state machine that are of interest to an auto-detector: + + START state: This is the state to start with, or a legal byte sequence + (i.e. a valid code point) for character has been identified. + + ME state: This indicates that the state machine identified a byte sequence + that is specific to the charset it is designed for and that + there is no other possible encoding which can contain this byte + sequence. This will to lead to an immediate positive answer for + the detector. + + ERROR state: This indicates the state machine identified an illegal byte + sequence for that encoding. This will lead to an immediate + negative answer for this encoding. Detector will exclude this + encoding from consideration from here on. + """ + def __init__(self, sm): + self._model = sm + self._curr_byte_pos = 0 + self._curr_char_len = 0 + self._curr_state = None + self.logger = logging.getLogger(__name__) + self.reset() + + def reset(self): + self._curr_state = MachineState.START + + def next_state(self, c): + # for each byte we get its class + # if it is first byte, we also get byte length + byte_class = self._model['class_table'][c] + if self._curr_state == MachineState.START: + self._curr_byte_pos = 0 + self._curr_char_len = self._model['char_len_table'][byte_class] + # from byte's class and state_table, we get its next state + curr_state = (self._curr_state * self._model['class_factor'] + + byte_class) + self._curr_state = self._model['state_table'][curr_state] + self._curr_byte_pos += 1 + return self._curr_state + + def get_current_charlen(self): + return self._curr_char_len + + def get_coding_state_machine(self): + return self._model['name'] + + @property + def language(self): + return self._model['language'] diff --git a/Lib/site-packages/pip/_vendor/chardet/compat.py b/Lib/site-packages/pip/_vendor/chardet/compat.py new file mode 100644 index 0000000..ddd7468 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/compat.py @@ -0,0 +1,34 @@ +######################## BEGIN LICENSE BLOCK ######################## +# Contributor(s): +# Dan Blanchard +# Ian Cordasco +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +import sys + + +if sys.version_info < (3, 0): + PY2 = True + PY3 = False + base_str = (str, unicode) + text_type = unicode +else: + PY2 = False + PY3 = True + base_str = (bytes, str) + text_type = str diff --git a/Lib/site-packages/pip/_vendor/chardet/cp949prober.py b/Lib/site-packages/pip/_vendor/chardet/cp949prober.py new file mode 100644 index 0000000..efd793a --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/cp949prober.py @@ -0,0 +1,49 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .chardistribution import EUCKRDistributionAnalysis +from .codingstatemachine import CodingStateMachine +from .mbcharsetprober import MultiByteCharSetProber +from .mbcssm import CP949_SM_MODEL + + +class CP949Prober(MultiByteCharSetProber): + def __init__(self): + super(CP949Prober, self).__init__() + self.coding_sm = CodingStateMachine(CP949_SM_MODEL) + # NOTE: CP949 is a superset of EUC-KR, so the distribution should be + # not different. + self.distribution_analyzer = EUCKRDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "CP949" + + @property + def language(self): + return "Korean" diff --git a/Lib/site-packages/pip/_vendor/chardet/enums.py b/Lib/site-packages/pip/_vendor/chardet/enums.py new file mode 100644 index 0000000..0451207 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/enums.py @@ -0,0 +1,76 @@ +""" +All of the Enums that are used throughout the chardet package. + +:author: Dan Blanchard (dan.blanchard@gmail.com) +""" + + +class InputState(object): + """ + This enum represents the different states a universal detector can be in. + """ + PURE_ASCII = 0 + ESC_ASCII = 1 + HIGH_BYTE = 2 + + +class LanguageFilter(object): + """ + This enum represents the different language filters we can apply to a + ``UniversalDetector``. + """ + CHINESE_SIMPLIFIED = 0x01 + CHINESE_TRADITIONAL = 0x02 + JAPANESE = 0x04 + KOREAN = 0x08 + NON_CJK = 0x10 + ALL = 0x1F + CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL + CJK = CHINESE | JAPANESE | KOREAN + + +class ProbingState(object): + """ + This enum represents the different states a prober can be in. + """ + DETECTING = 0 + FOUND_IT = 1 + NOT_ME = 2 + + +class MachineState(object): + """ + This enum represents the different states a state machine can be in. + """ + START = 0 + ERROR = 1 + ITS_ME = 2 + + +class SequenceLikelihood(object): + """ + This enum represents the likelihood of a character following the previous one. + """ + NEGATIVE = 0 + UNLIKELY = 1 + LIKELY = 2 + POSITIVE = 3 + + @classmethod + def get_num_categories(cls): + """:returns: The number of likelihood categories in the enum.""" + return 4 + + +class CharacterCategory(object): + """ + This enum represents the different categories language models for + ``SingleByteCharsetProber`` put characters into. + + Anything less than CONTROL is considered a letter. + """ + UNDEFINED = 255 + LINE_BREAK = 254 + SYMBOL = 253 + DIGIT = 252 + CONTROL = 251 diff --git a/Lib/site-packages/pip/_vendor/chardet/escprober.py b/Lib/site-packages/pip/_vendor/chardet/escprober.py new file mode 100644 index 0000000..c70493f --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/escprober.py @@ -0,0 +1,101 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .codingstatemachine import CodingStateMachine +from .enums import LanguageFilter, ProbingState, MachineState +from .escsm import (HZ_SM_MODEL, ISO2022CN_SM_MODEL, ISO2022JP_SM_MODEL, + ISO2022KR_SM_MODEL) + + +class EscCharSetProber(CharSetProber): + """ + This CharSetProber uses a "code scheme" approach for detecting encodings, + whereby easily recognizable escape or shift sequences are relied on to + identify these encodings. + """ + + def __init__(self, lang_filter=None): + super(EscCharSetProber, self).__init__(lang_filter=lang_filter) + self.coding_sm = [] + if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED: + self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL)) + self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL)) + if self.lang_filter & LanguageFilter.JAPANESE: + self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL)) + if self.lang_filter & LanguageFilter.KOREAN: + self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL)) + self.active_sm_count = None + self._detected_charset = None + self._detected_language = None + self._state = None + self.reset() + + def reset(self): + super(EscCharSetProber, self).reset() + for coding_sm in self.coding_sm: + if not coding_sm: + continue + coding_sm.active = True + coding_sm.reset() + self.active_sm_count = len(self.coding_sm) + self._detected_charset = None + self._detected_language = None + + @property + def charset_name(self): + return self._detected_charset + + @property + def language(self): + return self._detected_language + + def get_confidence(self): + if self._detected_charset: + return 0.99 + else: + return 0.00 + + def feed(self, byte_str): + for c in byte_str: + for coding_sm in self.coding_sm: + if not coding_sm or not coding_sm.active: + continue + coding_state = coding_sm.next_state(c) + if coding_state == MachineState.ERROR: + coding_sm.active = False + self.active_sm_count -= 1 + if self.active_sm_count <= 0: + self._state = ProbingState.NOT_ME + return self.state + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + self._detected_charset = coding_sm.get_coding_state_machine() + self._detected_language = coding_sm.language + return self.state + + return self.state diff --git a/Lib/site-packages/pip/_vendor/chardet/escsm.py b/Lib/site-packages/pip/_vendor/chardet/escsm.py new file mode 100644 index 0000000..0069523 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/escsm.py @@ -0,0 +1,246 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import MachineState + +HZ_CLS = ( +1,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,0,0,0,0, # 20 - 27 +0,0,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,0,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,4,0,5,2,0, # 78 - 7f +1,1,1,1,1,1,1,1, # 80 - 87 +1,1,1,1,1,1,1,1, # 88 - 8f +1,1,1,1,1,1,1,1, # 90 - 97 +1,1,1,1,1,1,1,1, # 98 - 9f +1,1,1,1,1,1,1,1, # a0 - a7 +1,1,1,1,1,1,1,1, # a8 - af +1,1,1,1,1,1,1,1, # b0 - b7 +1,1,1,1,1,1,1,1, # b8 - bf +1,1,1,1,1,1,1,1, # c0 - c7 +1,1,1,1,1,1,1,1, # c8 - cf +1,1,1,1,1,1,1,1, # d0 - d7 +1,1,1,1,1,1,1,1, # d8 - df +1,1,1,1,1,1,1,1, # e0 - e7 +1,1,1,1,1,1,1,1, # e8 - ef +1,1,1,1,1,1,1,1, # f0 - f7 +1,1,1,1,1,1,1,1, # f8 - ff +) + +HZ_ST = ( +MachineState.START,MachineState.ERROR, 3,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START, 4,MachineState.ERROR,# 10-17 + 5,MachineState.ERROR, 6,MachineState.ERROR, 5, 5, 4,MachineState.ERROR,# 18-1f + 4,MachineState.ERROR, 4, 4, 4,MachineState.ERROR, 4,MachineState.ERROR,# 20-27 + 4,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 28-2f +) + +HZ_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) + +HZ_SM_MODEL = {'class_table': HZ_CLS, + 'class_factor': 6, + 'state_table': HZ_ST, + 'char_len_table': HZ_CHAR_LEN_TABLE, + 'name': "HZ-GB-2312", + 'language': 'Chinese'} + +ISO2022CN_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,0,0,0,0, # 20 - 27 +0,3,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,4,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022CN_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 +MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f +MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,# 18-1f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 20-27 + 5, 6,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 28-2f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 30-37 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,# 38-3f +) + +ISO2022CN_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0) + +ISO2022CN_SM_MODEL = {'class_table': ISO2022CN_CLS, + 'class_factor': 9, + 'state_table': ISO2022CN_ST, + 'char_len_table': ISO2022CN_CHAR_LEN_TABLE, + 'name': "ISO-2022-CN", + 'language': 'Chinese'} + +ISO2022JP_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,2,2, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,7,0,0,0, # 20 - 27 +3,0,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +6,0,4,0,8,0,0,0, # 40 - 47 +0,9,5,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022JP_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 +MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,# 18-1f +MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 20-27 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 6,MachineState.ITS_ME,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,# 28-2f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,# 30-37 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 38-3f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.START,# 40-47 +) + +ISO2022JP_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +ISO2022JP_SM_MODEL = {'class_table': ISO2022JP_CLS, + 'class_factor': 10, + 'state_table': ISO2022JP_ST, + 'char_len_table': ISO2022JP_CHAR_LEN_TABLE, + 'name': "ISO-2022-JP", + 'language': 'Japanese'} + +ISO2022KR_CLS = ( +2,0,0,0,0,0,0,0, # 00 - 07 +0,0,0,0,0,0,0,0, # 08 - 0f +0,0,0,0,0,0,0,0, # 10 - 17 +0,0,0,1,0,0,0,0, # 18 - 1f +0,0,0,0,3,0,0,0, # 20 - 27 +0,4,0,0,0,0,0,0, # 28 - 2f +0,0,0,0,0,0,0,0, # 30 - 37 +0,0,0,0,0,0,0,0, # 38 - 3f +0,0,0,5,0,0,0,0, # 40 - 47 +0,0,0,0,0,0,0,0, # 48 - 4f +0,0,0,0,0,0,0,0, # 50 - 57 +0,0,0,0,0,0,0,0, # 58 - 5f +0,0,0,0,0,0,0,0, # 60 - 67 +0,0,0,0,0,0,0,0, # 68 - 6f +0,0,0,0,0,0,0,0, # 70 - 77 +0,0,0,0,0,0,0,0, # 78 - 7f +2,2,2,2,2,2,2,2, # 80 - 87 +2,2,2,2,2,2,2,2, # 88 - 8f +2,2,2,2,2,2,2,2, # 90 - 97 +2,2,2,2,2,2,2,2, # 98 - 9f +2,2,2,2,2,2,2,2, # a0 - a7 +2,2,2,2,2,2,2,2, # a8 - af +2,2,2,2,2,2,2,2, # b0 - b7 +2,2,2,2,2,2,2,2, # b8 - bf +2,2,2,2,2,2,2,2, # c0 - c7 +2,2,2,2,2,2,2,2, # c8 - cf +2,2,2,2,2,2,2,2, # d0 - d7 +2,2,2,2,2,2,2,2, # d8 - df +2,2,2,2,2,2,2,2, # e0 - e7 +2,2,2,2,2,2,2,2, # e8 - ef +2,2,2,2,2,2,2,2, # f0 - f7 +2,2,2,2,2,2,2,2, # f8 - ff +) + +ISO2022KR_ST = ( +MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f +MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 10-17 +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 18-1f +MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 20-27 +) + +ISO2022KR_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) + +ISO2022KR_SM_MODEL = {'class_table': ISO2022KR_CLS, + 'class_factor': 6, + 'state_table': ISO2022KR_ST, + 'char_len_table': ISO2022KR_CHAR_LEN_TABLE, + 'name': "ISO-2022-KR", + 'language': 'Korean'} + + diff --git a/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py b/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py new file mode 100644 index 0000000..20ce8f7 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import ProbingState, MachineState +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCJPDistributionAnalysis +from .jpcntx import EUCJPContextAnalysis +from .mbcssm import EUCJP_SM_MODEL + + +class EUCJPProber(MultiByteCharSetProber): + def __init__(self): + super(EUCJPProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL) + self.distribution_analyzer = EUCJPDistributionAnalysis() + self.context_analyzer = EUCJPContextAnalysis() + self.reset() + + def reset(self): + super(EUCJPProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return "EUC-JP" + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + # PY3K: byte_str is a byte array, so byte_str[i] is an int, not a byte + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char, char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py b/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py new file mode 100644 index 0000000..b68078c --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py @@ -0,0 +1,195 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology + +# 128 --> 0.79 +# 256 --> 0.92 +# 512 --> 0.986 +# 1024 --> 0.99944 +# 2048 --> 0.99999 +# +# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 +# Random Distribution Ration = 512 / (2350-512) = 0.279. +# +# Typical Distribution Ratio + +EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 + +EUCKR_TABLE_SIZE = 2352 + +# Char to FreqOrder table , +EUCKR_CHAR_TO_FREQ_ORDER = ( + 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, +1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, +1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, + 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, + 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, + 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, +1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, + 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, + 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, +1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, +1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, +1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, +1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, +1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, + 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, +1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, +1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, +1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, +1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, + 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, +1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, + 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, + 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, +1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, + 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, +1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, + 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, + 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, +1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, +1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, +1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, +1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, + 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, +1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, + 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, + 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, +1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, +1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, +1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, +1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, +1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, +1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, + 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, + 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, + 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, +1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, + 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, +1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, + 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, + 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, +2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, + 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, + 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, +2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, +2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, +2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, + 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, + 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, +2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, + 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, +1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, +2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, +1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, +2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, +2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, +1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, + 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, +2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, +2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, + 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, + 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, +2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, +1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, +2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, +2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, +2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, +2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, +2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, +2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, +1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, +2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, +2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, +2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, +2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, +2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, +1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, +1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, +2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, +1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, +2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, +1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, + 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, +2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, + 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, +2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, + 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, +2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, +2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, + 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, +2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, +1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, + 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, +1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, +2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, +1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, +2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, + 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, +2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, +1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, +2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, +1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, +2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, +1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, + 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, +2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, +2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, + 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, + 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, +1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, +1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, + 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, +2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, +2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, + 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, + 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, + 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, +2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, + 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, + 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, +2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, +2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, + 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, +2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, +1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, + 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, +2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, +2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, +2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, + 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, + 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, + 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, +2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, +2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, +2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, +1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, +2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, + 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 +) + diff --git a/Lib/site-packages/pip/_vendor/chardet/euckrprober.py b/Lib/site-packages/pip/_vendor/chardet/euckrprober.py new file mode 100644 index 0000000..345a060 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/euckrprober.py @@ -0,0 +1,47 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCKRDistributionAnalysis +from .mbcssm import EUCKR_SM_MODEL + + +class EUCKRProber(MultiByteCharSetProber): + def __init__(self): + super(EUCKRProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) + self.distribution_analyzer = EUCKRDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "EUC-KR" + + @property + def language(self): + return "Korean" diff --git a/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py b/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py new file mode 100644 index 0000000..ed7a995 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py @@ -0,0 +1,387 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# EUCTW frequency table +# Converted from big5 work +# by Taiwan's Mandarin Promotion Council +# + +# 128 --> 0.42261 +# 256 --> 0.57851 +# 512 --> 0.74851 +# 1024 --> 0.89384 +# 2048 --> 0.97583 +# +# Idea Distribution Ratio = 0.74851/(1-0.74851) =2.98 +# Random Distribution Ration = 512/(5401-512)=0.105 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR + +EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75 + +# Char to FreqOrder table , +EUCTW_TABLE_SIZE = 5376 + +EUCTW_CHAR_TO_FREQ_ORDER = ( + 1,1800,1506, 255,1431, 198, 9, 82, 6,7310, 177, 202,3615,1256,2808, 110, # 2742 +3735, 33,3241, 261, 76, 44,2113, 16,2931,2184,1176, 659,3868, 26,3404,2643, # 2758 +1198,3869,3313,4060, 410,2211, 302, 590, 361,1963, 8, 204, 58,4296,7311,1931, # 2774 + 63,7312,7313, 317,1614, 75, 222, 159,4061,2412,1480,7314,3500,3068, 224,2809, # 2790 +3616, 3, 10,3870,1471, 29,2774,1135,2852,1939, 873, 130,3242,1123, 312,7315, # 2806 +4297,2051, 507, 252, 682,7316, 142,1914, 124, 206,2932, 34,3501,3173, 64, 604, # 2822 +7317,2494,1976,1977, 155,1990, 645, 641,1606,7318,3405, 337, 72, 406,7319, 80, # 2838 + 630, 238,3174,1509, 263, 939,1092,2644, 756,1440,1094,3406, 449, 69,2969, 591, # 2854 + 179,2095, 471, 115,2034,1843, 60, 50,2970, 134, 806,1868, 734,2035,3407, 180, # 2870 + 995,1607, 156, 537,2893, 688,7320, 319,1305, 779,2144, 514,2374, 298,4298, 359, # 2886 +2495, 90,2707,1338, 663, 11, 906,1099,2545, 20,2436, 182, 532,1716,7321, 732, # 2902 +1376,4062,1311,1420,3175, 25,2312,1056, 113, 399, 382,1949, 242,3408,2467, 529, # 2918 +3243, 475,1447,3617,7322, 117, 21, 656, 810,1297,2295,2329,3502,7323, 126,4063, # 2934 + 706, 456, 150, 613,4299, 71,1118,2036,4064, 145,3069, 85, 835, 486,2114,1246, # 2950 +1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,7324,2127,2354, 347,3736, 221, # 2966 +3503,3110,7325,1955,1153,4065, 83, 296,1199,3070, 192, 624, 93,7326, 822,1897, # 2982 +2810,3111, 795,2064, 991,1554,1542,1592, 27, 43,2853, 859, 139,1456, 860,4300, # 2998 + 437, 712,3871, 164,2392,3112, 695, 211,3017,2096, 195,3872,1608,3504,3505,3618, # 3014 +3873, 234, 811,2971,2097,3874,2229,1441,3506,1615,2375, 668,2076,1638, 305, 228, # 3030 +1664,4301, 467, 415,7327, 262,2098,1593, 239, 108, 300, 200,1033, 512,1247,2077, # 3046 +7328,7329,2173,3176,3619,2673, 593, 845,1062,3244, 88,1723,2037,3875,1950, 212, # 3062 + 266, 152, 149, 468,1898,4066,4302, 77, 187,7330,3018, 37, 5,2972,7331,3876, # 3078 +7332,7333, 39,2517,4303,2894,3177,2078, 55, 148, 74,4304, 545, 483,1474,1029, # 3094 +1665, 217,1869,1531,3113,1104,2645,4067, 24, 172,3507, 900,3877,3508,3509,4305, # 3110 + 32,1408,2811,1312, 329, 487,2355,2247,2708, 784,2674, 4,3019,3314,1427,1788, # 3126 + 188, 109, 499,7334,3620,1717,1789, 888,1217,3020,4306,7335,3510,7336,3315,1520, # 3142 +3621,3878, 196,1034, 775,7337,7338, 929,1815, 249, 439, 38,7339,1063,7340, 794, # 3158 +3879,1435,2296, 46, 178,3245,2065,7341,2376,7342, 214,1709,4307, 804, 35, 707, # 3174 + 324,3622,1601,2546, 140, 459,4068,7343,7344,1365, 839, 272, 978,2257,2572,3409, # 3190 +2128,1363,3623,1423, 697, 100,3071, 48, 70,1231, 495,3114,2193,7345,1294,7346, # 3206 +2079, 462, 586,1042,3246, 853, 256, 988, 185,2377,3410,1698, 434,1084,7347,3411, # 3222 + 314,2615,2775,4308,2330,2331, 569,2280, 637,1816,2518, 757,1162,1878,1616,3412, # 3238 + 287,1577,2115, 768,4309,1671,2854,3511,2519,1321,3737, 909,2413,7348,4069, 933, # 3254 +3738,7349,2052,2356,1222,4310, 765,2414,1322, 786,4311,7350,1919,1462,1677,2895, # 3270 +1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070, 309,1369, # 3286 +1130,2812, 364,2230,1653,1299,3881,3512,3882,3883,2646, 525,1085,3021, 902,2000, # 3302 +1475, 964,4313, 421,1844,1415,1057,2281, 940,1364,3116, 376,4314,4315,1381, 7, # 3318 +2520, 983,2378, 336,1710,2675,1845, 321,3414, 559,1131,3022,2742,1808,1132,1313, # 3334 + 265,1481,1857,7352, 352,1203,2813,3247, 167,1089, 420,2814, 776, 792,1724,3513, # 3350 +4071,2438,3248,7353,4072,7354, 446, 229, 333,2743, 901,3739,1200,1557,4316,2647, # 3366 +1920, 395,2744,2676,3740,4073,1835, 125, 916,3178,2616,4317,7355,7356,3741,7357, # 3382 +7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145, 438, # 3398 +2591,2896,2379,3317,1068, 958,3023, 461, 311,2855,2677,4074,1915,3179,4075,1978, # 3414 + 383, 750,2745,2617,4076, 274, 539, 385,1278,1442,7361,1154,1964, 384, 561, 210, # 3430 + 98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257, 129,7363,3742, 642, # 3446 + 523,2776,2777,2648,7364, 141,2231,1333, 68, 176, 441, 876, 907,4077, 603,2592, # 3462 + 710, 171,3417, 404, 549, 18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320, # 3478 +7366,2973, 368,7367, 146, 366, 99, 871,3627,1543, 748, 807,1586,1185, 22,2258, # 3494 + 379,3743,3180,7368,3181, 505,1941,2618,1991,1382,2314,7369, 380,2357, 218, 702, # 3510 +1817,1248,3418,3024,3517,3318,3249,7370,2974,3628, 930,3250,3744,7371, 59,7372, # 3526 + 585, 601,4078, 497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374, 749,1836, # 3542 + 690,1899,3745,1772,3885,1476, 429,1043,1790,2232,2116, 917,4079, 447,1086,1629, # 3558 +7375, 556,7376,7377,2020,1654, 844,1090, 105, 550, 966,1758,2815,1008,1782, 686, # 3574 +1095,7378,2282, 793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746, 980,2496, # 3590 + 544, 353, 527,4324, 908,2678,2899,7380, 381,2619,1942,1348,7381,1341,1252, 560, # 3606 +3072,7382,3420,2856,7383,2053, 973, 886,2080, 143,4325,7384,7385, 157,3886, 496, # 3622 +4081, 57, 840, 540,2038,4326,4327,3421,2117,1445, 970,2259,1748,1965,2081,4082, # 3638 +3119,1234,1775,3251,2816,3629, 773,1206,2129,1066,2039,1326,3887,1738,1725,4083, # 3654 + 279,3120, 51,1544,2594, 423,1578,2130,2066, 173,4328,1879,7386,7387,1583, 264, # 3670 + 610,3630,4329,2439, 280, 154,7388,7389,7390,1739, 338,1282,3073, 693,2857,1411, # 3686 +1074,3747,2440,7391,4330,7392,7393,1240, 952,2394,7394,2900,1538,2679, 685,1483, # 3702 +4084,2468,1436, 953,4085,2054,4331, 671,2395, 79,4086,2441,3252, 608, 567,2680, # 3718 +3422,4087,4088,1691, 393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672, # 3734 +3748,3182,1464, 522,1119, 661,1150, 216, 675,4333,3888,1432,3519, 609,4334,2681, # 3750 +2397,7400,7401,7402,4089,3025, 0,7403,2469, 315, 231,2442, 301,3319,4335,2380, # 3766 +7404, 233,4090,3631,1818,4336,4337,7405, 96,1776,1315,2082,7406, 257,7407,1809, # 3782 +3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074, 363,1655,3183, # 3798 +7409,2975,7410,7411,7412,3889,1567,3890, 718, 103,3184, 849,1443, 341,3320,2934, # 3814 +1484,7413,1712, 127, 67, 339,4092,2398, 679,1412, 821,7414,7415, 834, 738, 351, # 3830 +2976,2146, 846, 235,1497,1880, 418,1992,3749,2710, 186,1100,2147,2746,3520,1545, # 3846 +1355,2935,2858,1377, 583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358, # 3862 + 78,3750,3751, 267,1289,2099,2001,1594,4094, 348, 369,1274,2194,2175,1837,4338, # 3878 +1820,2817,3635,2747,2283,2002,4339,2936,2748, 144,3321, 882,4340,3892,2749,3423, # 3894 +4341,2901,7417,4095,1726, 320,7418,3893,3026, 788,2978,7419,2818,1773,1327,2859, # 3910 +3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650, 787,2022, 506, 824,3636, # 3926 + 534, 323,4343,1044,3322,2023,1900, 946,3424,7421,1778,1500,1678,7422,1881,4344, # 3942 + 165, 243,4345,3637,2521, 123, 683,4096, 764,4346, 36,3895,1792, 589,2902, 816, # 3958 + 626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932, 891, # 3974 +2083,2903, 304,4097,7424, 292,2979,2711,3522, 691,2100,4098,1115,4347, 118, 662, # 3990 +7425, 611,1156, 854,2381,1316,2861, 2, 386, 515,2904,7426,7427,3253, 868,2234, # 4006 +1486, 855,2651, 785,2212,3028,7428,1040,3185,3523,7429,3121, 448,7430,1525,7431, # 4022 +2164,4348,7432,3754,7433,4099,2820,3524,3122, 503, 818,3898,3123,1568, 814, 676, # 4038 +1444, 306,1749,7434,3755,1416,1030, 197,1428, 805,2821,1501,4349,7435,7436,7437, # 4054 +1993,7438,4350,7439,7440,2195, 13,2779,3638,2980,3124,1229,1916,7441,3756,2131, # 4070 +7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445, 646,3757,2443, 307, # 4086 +7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451, 519, # 4102 +7452, 128,2132, 92,2284,1979,7453,3900,1512, 342,3125,2196,7454,2780,2214,1980, # 4118 +3323,7455, 290,1656,1317, 789, 827,2360,7456,3758,4352, 562, 581,3901,7457, 401, # 4134 +4353,2248, 94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459, 828,1105,4101, # 4150 +1262,1394,7460,4102, 605,4356,7461,1783,2862,7462,2822, 819,2101, 578,2197,2937, # 4166 +7463,1502, 436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466, # 4182 +2332,2067, 23,4357, 193, 826,3759,2102, 699,1630,4104,3075, 390,1793,1064,3526, # 4198 +7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359, 137,4106, 598, # 4214 +3078,1966, 780, 104, 974,2938,7470, 278, 899, 253, 402, 572, 504, 493,1339,7471, # 4230 +3903,1275,4360,2574,2550,7472,3640,3029,3079,2249, 565,1334,2713, 863, 41,7473, # 4246 +7474,4361,7475,1657,2333, 19, 463,2750,4107, 606,7476,2981,3256,1087,2084,1323, # 4262 +2652,2982,7477,1631,1623,1750,4108,2682,7478,2864, 791,2714,2653,2334, 232,2416, # 4278 +7479,2983,1498,7480,2654,2620, 755,1366,3641,3257,3126,2025,1609, 119,1917,3427, # 4294 + 862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125, 817,4110, # 4310 +4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485, # 4326 +2683, 733, 40,1632,1106,2865, 345,4113, 841,2524, 230,4364,2984,1846,3259,3428, # 4342 +7486,1263, 986,3429,7487, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562,3907, # 4358 +3908,2939, 967,2751,2655,1349, 592,2133,1692,3324,2985,1994,4114,1679,3909,1901, # 4374 +2185,7488, 739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870, # 4390 +2752,2986,7490, 435,7491, 343,1108, 596, 17,1751,4365,2235,3430,3643,7492,4366, # 4406 + 294,3527,2940,1693, 477, 979, 281,2041,3528, 643,2042,3644,2621,2782,2261,1031, # 4422 +2335,2134,2298,3529,4367, 367,1249,2552,7493,3530,7494,4368,1283,3325,2004, 240, # 4438 +1762,3326,4369,4370, 836,1069,3128, 474,7495,2148,2525, 268,3531,7496,3188,1521, # 4454 +1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118, 961,1673, # 4470 +2622, 190,2005,2200,3762,4371,4372,7500, 570,2497,3645,1490,7501,4373,2623,3260, # 4486 +1956,4374, 584,1514, 396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910, 619, # 4502 +7505,3129,3261, 215,2006,2783,2553,3189,4377,3190,4378, 763,4119,3763,4379,7506, # 4518 +7507,1957,1767,2941,3328,3646,1174, 452,1477,4380,3329,3130,7508,2825,1253,2382, # 4534 +2186,1091,2285,4120, 492,7509, 638,1169,1824,2135,1752,3911, 648, 926,1021,1324, # 4550 +4381, 520,4382, 997, 847,1007, 892,4383,3764,2262,1871,3647,7510,2400,1784,4384, # 4566 +1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551, 30,2263,4122, # 4582 +7511,2026,4386,3534,7512, 501,7513,4123, 594,3431,2165,1821,3535,3432,3536,3192, # 4598 + 829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388, # 4614 +4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389, 374,3914, 652,4128,4129, # 4630 + 375,1140, 798,7520,7521,7522,2361,4390,2264, 546,1659, 138,3031,2445,4391,7523, # 4646 +2250, 612,1848, 910, 796,3765,1740,1371, 825,3766,3767,7524,2906,2554,7525, 692, # 4662 + 444,3032,2624, 801,4392,4130,7526,1491, 244,1053,3033,4131,4132, 340,7527,3915, # 4678 +1041,2987, 293,1168, 87,1357,7528,1539, 959,7529,2236, 721, 694,4133,3768, 219, # 4694 +1478, 644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825, # 4710 + 730,1515, 184,2827, 66,4393,7532,1660,2943, 246,3332, 378,1457, 226,3433, 975, # 4726 +3917,2944,1264,3537, 674, 696,7533, 163,7534,1141,2417,2166, 713,3538,3333,4394, # 4742 +3918,7535,7536,1186, 15,7537,1079,1070,7538,1522,3193,3539, 276,1050,2716, 758, # 4758 +1126, 653,2945,3263,7539,2337, 889,3540,3919,3081,2989, 903,1250,4395,3920,3434, # 4774 +3541,1342,1681,1718, 766,3264, 286, 89,2946,3649,7540,1713,7541,2597,3334,2990, # 4790 +7542,2947,2215,3194,2866,7543,4396,2498,2526, 181, 387,1075,3921, 731,2187,3335, # 4806 +7544,3265, 310, 313,3435,2299, 770,4134, 54,3034, 189,4397,3082,3769,3922,7545, # 4822 +1230,1617,1849, 355,3542,4135,4398,3336, 111,4136,3650,1350,3135,3436,3035,4137, # 4838 +2149,3266,3543,7546,2784,3923,3924,2991, 722,2008,7547,1071, 247,1207,2338,2471, # 4854 +1378,4399,2009, 864,1437,1214,4400, 373,3770,1142,2216, 667,4401, 442,2753,2555, # 4870 +3771,3925,1968,4138,3267,1839, 837, 170,1107, 934,1336,1882,7548,7549,2118,4139, # 4886 +2828, 743,1569,7550,4402,4140, 582,2384,1418,3437,7551,1802,7552, 357,1395,1729, # 4902 +3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554, 482, # 4918 +2446,4404,7555,7556,1492, 833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652, # 4934 +4142,1686,1794, 416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867, # 4950 +4405,1610,1584,3036,2419,2754, 443,3269,1163,3136,7561,7562,3926,7563,4143,2499, # 4966 +3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145, 431,3438,7565, 250, # 4982 + 97, 81,4146,7566,1648,1850,1558, 160, 848,7567, 866, 740,1694,7568,2201,2830, # 4998 +3195,4147,4407,3653,1687, 950,2472, 426, 469,3196,3654,3655,3928,7569,7570,1188, # 5014 + 424,1995, 861,3546,4148,3775,2202,2685, 168,1235,3547,4149,7571,2086,1674,4408, # 5030 +3337,3270, 220,2557,1009,7572,3776, 670,2992, 332,1208, 717,7573,7574,3548,2447, # 5046 +3929,3338,7575, 513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527, # 5062 +3656,3549, 815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932, # 5078 +1741,3933,3778,3934,7582, 236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411, # 5094 +7585, 308,7586,4412, 245,4413,1851,2473,1307,2575, 430, 715,2136,2449,7587, 270, # 5110 + 199,2869,3935,7588,3551,2718,1753, 761,1754, 725,1661,1840,4414,3440,3658,7589, # 5126 +7590, 587, 14,3272, 227,2598, 326, 480,2265, 943,2755,3552, 291, 650,1883,7591, # 5142 +1702,1226, 102,1547, 62,3441, 904,4415,3442,1164,4150,7592,7593,1224,1548,2756, # 5158 + 391, 498,1493,7594,1386,1419,7595,2055,1177,4416, 813, 880,1081,2363, 566,1145, # 5174 +4417,2286,1001,1035,2558,2599,2238, 394,1286,7596,7597,2068,7598, 86,1494,1730, # 5190 +3936, 491,1588, 745, 897,2948, 843,3340,3937,2757,2870,3273,1768, 998,2217,2069, # 5206 + 397,1826,1195,1969,3659,2993,3341, 284,7599,3782,2500,2137,2119,1903,7600,3938, # 5222 +2150,3939,4151,1036,3443,1904, 114,2559,4152, 209,1527,7601,7602,2949,2831,2625, # 5238 +2385,2719,3139, 812,2560,7603,3274,7604,1559, 737,1884,3660,1210, 885, 28,2686, # 5254 +3553,3783,7605,4153,1004,1779,4418,7606, 346,1981,2218,2687,4419,3784,1742, 797, # 5270 +1642,3940,1933,1072,1384,2151, 896,3941,3275,3661,3197,2871,3554,7607,2561,1958, # 5286 +4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528, # 5302 +2600, 161,1178,4156,1982, 987,4423,1101,4157, 631,3943,1157,3198,2420,1343,1241, # 5318 +1016,2239,2562, 372, 877,2339,2501,1160, 555,1934, 911,3944,7611, 466,1170, 169, # 5334 +1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612, 992,2340,3444,1540, # 5350 +2721,1201,2070,2401,1996,2475,7613,4424, 528,1922,2188,1503,1873,1570,2364,3342, # 5366 +3276,7614, 557,1073,7615,1827,3445,2087,2266,3140,3039,3084, 767,3085,2786,4425, # 5382 +1006,4158,4426,2341,1267,2176,3664,3199, 778,3945,3200,2722,1597,2657,7616,4427, # 5398 +7617,3446,7618,7619,7620,3277,2689,1433,3278, 131, 95,1504,3946, 723,4159,3141, # 5414 +1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949, # 5430 +4160,2576, 248,1634,3785, 912,7623,2832,3666,3040,3786, 654, 53,7624,2996,7625, # 5446 +1688,4428, 777,3447,1032,3950,1425,7626, 191, 820,2120,2833, 971,4429, 931,3202, # 5462 + 135, 664, 783,3787,1997, 772,2908,1935,3951,3788,4430,2909,3203, 282,2723, 640, # 5478 +1372,3448,1127, 922, 325,3344,7627,7628, 711,2044,7629,7630,3952,2219,2787,1936, # 5494 +3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955, # 5510 +3956,7632,2221, 258,3205,4432, 101,1227,7633,3280,1755,7634,1391,3281,7635,2910, # 5526 +2056, 893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642, 878,1325, # 5542 +1780,2788,4433, 259,1385,2577, 744,1183,2267,4434,7643,3957,2502,7644, 684,1024, # 5558 +4162,7645, 472,3557,3449,1165,3282,3958,3959, 322,2152, 881, 455,1695,1152,1340, # 5574 + 660, 554,2153,4435,1058,4436,4163, 830,1065,3346,3960,4437,1923,7646,1703,1918, # 5590 +7647, 932,2268, 122,7648,4438, 947, 677,7649,3791,2627, 297,1905,1924,2269,4439, # 5606 +2317,3283,7650,7651,4164,7652,4165, 84,4166, 112, 989,7653, 547,1059,3961, 701, # 5622 +3558,1019,7654,4167,7655,3450, 942, 639, 457,2301,2451, 993,2951, 407, 851, 494, # 5638 +4440,3347, 927,7656,1237,7657,2421,3348, 573,4168, 680, 921,2911,1279,1874, 285, # 5654 + 790,1448,1983, 719,2167,7658,7659,4441,3962,3963,1649,7660,1541, 563,7661,1077, # 5670 +7662,3349,3041,3451, 511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443, # 5686 +7663, 535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169, # 5702 +1238,2578,3086,1259,7665, 700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906, # 5718 +4444,2601,3967, 781,2422, 132,1589, 203, 147, 273,2789,2402, 898,1786,2154,3968, # 5734 +3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793, 965,7673,1804, # 5750 +2690,1516,3559,1121,1082,1329,3284,3970,1449,3794, 65,1128,2835,2913,2759,1590, # 5766 +3795,7674,7675, 12,2658, 45, 976,2579,3144,4447, 517,2528,1013,1037,3209,7676, # 5782 +3796,2836,7677,3797,7678,3452,7679,2602, 614,1998,2318,3798,3087,2724,2628,7680, # 5798 +2580,4172, 599,1269,7681,1810,3669,7682,2691,3088, 759,1060, 489,1805,3351,3285, # 5814 +1358,7683,7684,2386,1387,1215,2629,2252, 490,7685,7686,4173,1759,2387,2343,7687, # 5830 +4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344, 874,7688,7689,3454, # 5846 +3670,1858, 91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403, # 5862 +3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973, # 5878 +2365,4453,7694,2029,7695,7696,3974,2693,1216, 237,2581,4174,2319,3975,3802,4454, # 5894 +4455,2694,3560,3457, 445,4456,7697,7698,7699,7700,2761, 61,3976,3672,1822,3977, # 5910 +7701, 687,2045, 935, 925, 405,2660, 703,1096,1859,2725,4457,3978,1876,1367,2695, # 5926 +3352, 918,2105,1781,2476, 334,3287,1611,1093,4458, 564,3146,3458,3673,3353, 945, # 5942 +2631,2057,4459,7702,1925, 872,4175,7703,3459,2696,3089, 349,4176,3674,3979,4460, # 5958 +3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046, 782,3981, 400, 251,4179, # 5974 +1624,7704,7705, 277,3676, 299,1265, 476,1191,3804,2121,4180,4181,1109, 205,7706, # 5990 +2582,1000,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565, 107,2477,2157,3982, # 6006 +3460,3147,7711,1533, 541,1301, 158, 753,4182,2872,3562,7712,1696, 370,1088,4183, # 6022 +4466,3563, 579, 327, 440, 162,2240, 269,1937,1374,3461, 968,3043, 56,1396,3090, # 6038 +2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717, # 6054 +2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985, # 6070 +7722,1076, 49,7723, 951,3211,3289,3290, 450,2837, 920,7724,1811,2792,2366,4184, # 6086 +1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472, # 6102 +2388,2604, 260,1795,3213,7727,7728,3808,3291, 708,7729,3565,1704,7730,3566,1351, # 6118 +1618,3357,2999,1886, 944,4185,3358,4186,3044,3359,4187,7731,3678, 422, 413,1714, # 6134 +3292, 500,2058,2345,4188,2479,7732,1344,1910, 954,7733,1668,7734,7735,3986,2404, # 6150 +4189,3567,3809,4190,7736,2302,1318,2505,3091, 133,3092,2873,4473, 629, 31,2838, # 6166 +2697,3810,4474, 850, 949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988, 620, # 6182 +3214, 981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738, # 6198 +3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743, 869, # 6214 +2839, 655,3811,3812,3094,3989,3000,3813,1310,3569,4477,7744,7745,7746,1733, 558, # 6230 +4478,3681, 335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192, 470,2726,2107, # 6246 +2793, 913,1054,3990,7747,1027,7748,3046,3991,4479, 982,2662,3362,3148,3465,3216, # 6262 +3217,1946,2794,7749, 571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089, 984, # 6278 +4481,3683,1959,7753,3684, 852, 923,2795,3466,3685, 969,1519, 999,2048,2320,1705, # 6294 +7754,3095, 615,1662, 151, 597,3992,2405,2321,1049, 275,4482,3686,4193, 568,3687, # 6310 +3571,2480,4194,3688,7755,2425,2270, 409,3218,7756,1566,2874,3467,1002, 769,2840, # 6326 + 194,2090,3149,3689,2222,3294,4195, 628,1505,7757,7758,1763,2177,3001,3993, 521, # 6342 +1161,2584,1787,2203,2406,4483,3994,1625,4196,4197, 412, 42,3096, 464,7759,2632, # 6358 +4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295, # 6374 +1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091, 460,7765, # 6390 +4487,7766,3002, 962, 588,3574, 289,3219,2634,1116, 52,7767,3047,1796,7768,7769, # 6406 +7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365, 465,4489,1572, # 6422 + 510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776, # 6438 +7777,4199, 536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911, # 6454 +2796,7781,3296,1122, 377,3220,7782, 360,7783,7784,4200,1529, 551,7785,2059,3693, # 6470 +1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404, 136,1468,1479, 672, # 6486 +1171,3221,2303, 271,3151,7787,2762,7788,2049, 678,2727, 865,1947,4493,7789,2013, # 6502 +3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816, # 6518 + 509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010, # 6534 + 552, 681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154, 358, 453, 736, 175, # 6550 + 478,1117, 905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473, # 6566 +3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298, # 6582 +2918,3049,2179,3474, 595,2122,7800,3997,7801,7802,4206,1707,2636, 223,3696,1359, # 6598 + 751,3098, 183,3475,7803,2797,3003, 419,2369, 633, 704,3818,2389, 241,7804,7805, # 6614 +7806, 838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807, # 6630 +1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605, 484,3698,7810, # 6646 +3999, 625,4209,2273,3368,1499,4210,4000,7811,4001,4211,3222,2274,2275,3476,7812, # 6662 +7813,2764, 808,2606,3699,3369,4002,4212,3100,2532, 526,3370,3821,4213, 955,7814, # 6678 +1620,4214,2637,2427,7815,1429,3700,1669,1831, 994, 928,7816,3578,1260,7817,7818, # 6694 +7819,1948,2288, 741,2919,1626,4215,2729,2455, 867,1184, 362,3371,1392,7820,7821, # 6710 +4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877, # 6726 +1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702, # 6742 +2483,3299,7824,3703,4501,7825,7826, 666,1003,3005,1022,3579,4218,7827,4502,1813, # 6758 +2253, 574,3822,1603, 295,1535, 705,3823,4219, 283, 858, 417,7828,7829,3224,4503, # 6774 +4504,3051,1220,1889,1046,2276,2456,4004,1393,1599, 689,2567, 388,4220,7830,2484, # 6790 + 802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833, # 6806 + 809,7834,7835,7836, 575,2730,3477, 956,1552,1469,1144,2323,7837,2324,1560,2457, # 6822 +3580,3226,4005, 616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704, # 6838 +3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826, 607,2306,3827, 762,2878, # 6854 +1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508, # 6870 +2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451, # 6886 +7851,7852,7853,7854,2922,4006,4007,2485,2346, 411,4008,4009,3582,3300,3101,4509, # 6902 +1561,2664,1452,4010,1375,7855,7856, 47,2959, 316,7857,1406,1591,2923,3156,7858, # 6918 +1025,2141,3102,3157, 354,2731, 884,2224,4225,2407, 508,3706, 726,3583, 996,2428, # 6934 +3584, 729,7859, 392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800, # 6950 + 919,2347,2960,2348,1270,4511,4012, 73,7862,7863, 647,7864,3228,2843,2255,1550, # 6966 +1346,3006,7865,1332, 883,3479,7866,7867,7868,7869,3301,2765,7870,1212, 831,1347, # 6982 +4226,4512,2326,3830,1863,3053, 720,3831,4513,4514,3832,7871,4227,7872,7873,4515, # 6998 +7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924, 669,2208,2665, # 7014 +2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518, # 7030 +3158, 518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833, # 7046 + 516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961, # 7062 +1422, 577,1470,3008,1524,3373,7892,7893, 432,4232,3054,3480,7894,2586,1455,2508, # 7078 +2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482, # 7094 +2639,4016,4233,4521,2290, 895, 924,4234,2170, 331,2243,3056, 166,1627,3057,1098, # 7110 +7898,1232,2880,2227,3374,4522, 657, 403,1196,2372, 542,3709,3375,1600,4235,3483, # 7126 +7899,4523,2767,3230, 576, 530,1362,7900,4524,2533,2666,3710,4017,7901, 842,3834, # 7142 +7902,2801,2031,1014,4018, 213,2700,3376, 665, 621,4236,7903,3711,2925,2430,7904, # 7158 +2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906, 724, # 7174 +2277, 600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909, 651,4240,7910, # 7190 +1612,4241,2611,7911,2844,7912,2734,2307,3058,7913, 716,2459,3059, 174,1255,2701, # 7206 +4019,3590, 548,1320,1398, 728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062, # 7222 +3712,3591,3713, 747,7916, 635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922, # 7238 +3378,4530,2432, 451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925, # 7254 +4246, 350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024, 488,4532, 458,4248, # 7270 +4025,3715, 771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487, # 7286 +2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015, # 7302 +2736,7932,1155,1017,3716,3836,7933,3303,2308, 201,1864,4253,1430,7934,4026,7935, # 7318 +7936,7937,7938,7939,4254,1604,7940, 414,1865, 371,2587,4534,4535,3485,2016,3104, # 7334 +4536,1708, 960,4255, 887, 389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580, # 7350 +7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380, # 7366 +2882,4256,7950,4257,2640,3381,2802, 673,2703,2460, 709,3486,4028,3593,4258,7951, # 7382 +1148, 502, 634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105, 948, # 7398 +3232, 121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488, # 7414 +4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803, 531,2737, # 7430 +2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017, # 7446 + 120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047, # 7462 +2704,1266,7965,1368,4543,2845, 649,3383,3841,2539,2738,1102,2846,2669,7966,7967, # 7478 +1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385, # 7494 +2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460, 856,7974,3600,7975, # 7510 +2885,2963,7976,2886,3843,7977,4264, 632,2510, 875,3844,1697,3845,2291,7978,7979, # 7526 +4544,3010,1239, 580,4545,4265,7980, 914, 936,2074,1190,4032,1039,2123,7981,7982, # 7542 +7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033, 915,3305,4267,4268,3306, # 7558 +1605,1834,7986,2739, 398,3601,4269,3847,4034, 328,1912,2847,4035,3848,1331,4270, # 7574 +3011, 937,4271,7987,3602,4036,4037,3387,2160,4546,3388, 524, 742, 538,3065,1012, # 7590 +7988,7989,3849,2461,7990, 658,1103, 225,3850,7991,7992,4547,7993,4548,7994,3236, # 7606 +1243,7995,4038, 963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550, # 7622 +8000,8001,8002,3489,3307, 957,3389,2540,2032,1930,2927,2462, 870,2018,3604,1746, # 7638 +2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066, # 7654 +8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292, 977, # 7670 +2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689, 714,4551,3491,8009, # 7686 +2328,3852, 533,4273,3605,2181, 617,8010,2464,3308,3492,2310,8011,8012,3165,8013, # 7702 +8014,3853,1987, 618, 427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552, # 7718 +8018,3494,8019,8020,2279,1576, 473,3606,4275,3395, 972,8021,3607,8022,3067,8023, # 7734 +8024,4553,4554,8025,3727,4041,4042,8026, 153,4555, 356,8027,1891,2888,4276,2143, # 7750 + 408, 803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278, # 7766 +8031,2411,3396, 752,8032,8033,1961,2964,8034, 746,3012,2465,8035,4279,3728, 698, # 7782 +4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706, # 7798 +3858,1973,4281,8038,4282,3167, 823,1303,1288,1236,2848,3495,4044,3398, 774,3859, # 7814 +8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284, 344, # 7830 +1173, 288,2311, 454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563, 985, 894, # 7846 +8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194, # 7862 + 425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053, 636,4565,1855,3861, 760, # 7878 +1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210, # 7894 + 479,8058,8059, 832,8060,4049,2489,8061,2965,2490,3731, 990,3109, 627,1814,2642, # 7910 +4289,1582,4290,2125,2111,3496,4567,8062, 799,4291,3170,8063,4568,2112,1737,3013, # 7926 +1018, 543, 754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889, # 7942 +4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239, # 7958 +1842,3610,1715, 481, 365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240, # 7974 + 433,1894,2063,2075,8077, 602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083, # 7990 +3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088, # 8006 +4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094, # 8022 +8095,1895,8096,8097,4580,1896,4054, 318,8098,2094,4055,4293,8099,8100, 485,8101, # 8038 + 938,3862, 553,2670, 116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104, # 8054 +3613,2929,4056,1747,2930,2968,8105,8106, 207,8107,8108,2672,4581,2514,8109,3015, # 8070 + 890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114, 941, # 8086 +2294, 208,3499,4057,2019, 330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118, # 8102 +) + diff --git a/Lib/site-packages/pip/_vendor/chardet/euctwprober.py b/Lib/site-packages/pip/_vendor/chardet/euctwprober.py new file mode 100644 index 0000000..35669cc --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/euctwprober.py @@ -0,0 +1,46 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import EUCTWDistributionAnalysis +from .mbcssm import EUCTW_SM_MODEL + +class EUCTWProber(MultiByteCharSetProber): + def __init__(self): + super(EUCTWProber, self).__init__() + self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) + self.distribution_analyzer = EUCTWDistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "EUC-TW" + + @property + def language(self): + return "Taiwan" diff --git a/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py b/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py new file mode 100644 index 0000000..697837b --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py @@ -0,0 +1,283 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# GB2312 most frequently used character table +# +# Char to FreqOrder table , from hz6763 + +# 512 --> 0.79 -- 0.79 +# 1024 --> 0.92 -- 0.13 +# 2048 --> 0.98 -- 0.06 +# 6768 --> 1.00 -- 0.02 +# +# Ideal Distribution Ratio = 0.79135/(1-0.79135) = 3.79 +# Random Distribution Ration = 512 / (3755 - 512) = 0.157 +# +# Typical Distribution Ratio about 25% of Ideal one, still much higher that RDR + +GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9 + +GB2312_TABLE_SIZE = 3760 + +GB2312_CHAR_TO_FREQ_ORDER = ( +1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205, +2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842, +2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409, + 249,4088,1746,1873,2047,1774, 581,1813, 358,1174,3590,1014,1561,4844,2245, 670, +1636,3112, 889,1286, 953, 556,2327,3060,1290,3141, 613, 185,3477,1367, 850,3820, +1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349, 388,3098,2091,1360,3585, + 152,1687,1539, 738,1559, 59,1232,2925,2267,1388,1249,1741,1679,2960, 151,1566, +1125,1352,4271, 924,4296, 385,3166,4459, 310,1245,2850, 70,3285,2729,3534,3575, +2398,3298,3466,1960,2265, 217,3647, 864,1909,2084,4401,2773,1010,3269,5152, 853, +3051,3121,1244,4251,1895, 364,1499,1540,2313,1180,3655,2268, 562, 715,2417,3061, + 544, 336,3768,2380,1752,4075, 950, 280,2425,4382, 183,2759,3272, 333,4297,2155, +1688,2356,1444,1039,4540, 736,1177,3349,2443,2368,2144,2225, 565, 196,1482,3406, + 927,1335,4147, 692, 878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816, +2534,1546,2393,2760, 737,2494, 13, 447, 245,2747, 38,2765,2129,2589,1079, 606, + 360, 471,3755,2890, 404, 848, 699,1785,1236, 370,2221,1023,3746,2074,2026,2023, +2388,1581,2119, 812,1141,3091,2536,1519, 804,2053, 406,1596,1090, 784, 548,4414, +1806,2264,2936,1100, 343,4114,5096, 622,3358, 743,3668,1510,1626,5020,3567,2513, +3195,4115,5627,2489,2991, 24,2065,2697,1087,2719, 48,1634, 315, 68, 985,2052, + 198,2239,1347,1107,1439, 597,2366,2172, 871,3307, 919,2487,2790,1867, 236,2570, +1413,3794, 906,3365,3381,1701,1982,1818,1524,2924,1205, 616,2586,2072,2004, 575, + 253,3099, 32,1365,1182, 197,1714,2454,1201, 554,3388,3224,2748, 756,2587, 250, +2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153, 615, 911,1506, +1474,2495,1265,1906,2749,3756,3280,2161, 898,2714,1759,3450,2243,2444, 563, 26, +3286,2266,3769,3344,2707,3677, 611,1402, 531,1028,2871,4548,1375, 261,2948, 835, +1190,4134, 353, 840,2684,1900,3082,1435,2109,1207,1674, 329,1872,2781,4055,2686, +2104, 608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054, +1681,1153, 225,1627,2929, 162,2050,2511,3687,1954, 124,1859,2431,1684,3032,2894, + 585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209, 256, 518,2042,2105, +3777,3657, 643,2298,1148,1779, 190, 989,3544, 414, 11,2135,2063,2979,1471, 403, +3678, 126, 770,1563, 671,2499,3216,2877, 600,1179, 307,2805,4937,1268,1297,2694, + 252,4032,1448,1494,1331,1394, 127,2256, 222,1647,1035,1481,3056,1915,1048, 873, +3651, 210, 33,1608,2516, 200,1520, 415, 102, 0,3389,1287, 817, 91,3299,2940, + 836,1814, 549,2197,1396,1669,2987,3582,2297,2848,4528,1070, 687, 20,1819, 121, +1552,1364,1461,1968,2617,3540,2824,2083, 177, 948,4938,2291, 110,4549,2066, 648, +3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123, 208,1804,3159,2992, +2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680, 72, 842,1990, 212,1233, +1154,1586, 75,2027,3410,4900,1823,1337,2710,2676, 728,2810,1522,3026,4995, 157, + 755,1050,4022, 710, 785,1936,2194,2085,1406,2777,2400, 150,1250,4049,1206, 807, +1910, 534, 529,3309,1721,1660, 274, 39,2827, 661,2670,1578, 925,3248,3815,1094, +4278,4901,4252, 41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258, + 887, 538,4187,3199,1294,2439,3042,2329,2343,2497,1255, 107, 543,1527, 521,3478, +3568, 194,5062, 15, 961,3870,1241,1192,2664, 66,5215,3260,2111,1295,1127,2152, +3805,4135, 901,1164,1976, 398,1278, 530,1460, 748, 904,1054,1966,1426, 53,2909, + 509, 523,2279,1534, 536,1019, 239,1685, 460,2353, 673,1065,2401,3600,4298,2272, +1272,2363, 284,1753,3679,4064,1695, 81, 815,2677,2757,2731,1386, 859, 500,4221, +2190,2566, 757,1006,2519,2068,1166,1455, 337,2654,3203,1863,1682,1914,3025,1252, +1409,1366, 847, 714,2834,2038,3209, 964,2970,1901, 885,2553,1078,1756,3049, 301, +1572,3326, 688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088, 262,1158,1254, + 389,1641,1812, 526,1719, 923,2073,1073,1902, 468, 489,4625,1140, 857,2375,3070, +3319,2863, 380, 116,1328,2693,1161,2244, 273,1212,1884,2769,3011,1775,1142, 461, +3066,1200,2147,2212, 790, 702,2695,4222,1601,1058, 434,2338,5153,3640, 67,2360, +4099,2502, 618,3472,1329, 416,1132, 830,2782,1807,2653,3211,3510,1662, 192,2124, + 296,3979,1739,1611,3684, 23, 118, 324, 446,1239,1225, 293,2520,3814,3795,2535, +3116, 17,1074, 467,2692,2201, 387,2922, 45,1326,3055,1645,3659,2817, 958, 243, +1903,2320,1339,2825,1784,3289, 356, 576, 865,2315,2381,3377,3916,1088,3122,1713, +1655, 935, 628,4689,1034,1327, 441, 800, 720, 894,1979,2183,1528,5289,2702,1071, +4046,3572,2399,1571,3281, 79, 761,1103, 327, 134, 758,1899,1371,1615, 879, 442, + 215,2605,2579, 173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946, + 814,4968,3487,1548,2644,1567,1285, 2, 295,2636, 97, 946,3576, 832, 141,4257, +3273, 760,3821,3521,3156,2607, 949,1024,1733,1516,1803,1920,2125,2283,2665,3180, +1501,2064,3560,2171,1592, 803,3518,1416, 732,3897,4258,1363,1362,2458, 119,1427, + 602,1525,2608,1605,1639,3175, 694,3064, 10, 465, 76,2000,4846,4208, 444,3781, +1619,3353,2206,1273,3796, 740,2483, 320,1723,2377,3660,2619,1359,1137,1762,1724, +2345,2842,1850,1862, 912, 821,1866, 612,2625,1735,2573,3369,1093, 844, 89, 937, + 930,1424,3564,2413,2972,1004,3046,3019,2011, 711,3171,1452,4178, 428, 801,1943, + 432, 445,2811, 206,4136,1472, 730, 349, 73, 397,2802,2547, 998,1637,1167, 789, + 396,3217, 154,1218, 716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627, 552, +3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703, 640,1045,1370,1246, +4996, 371,1575,2436,1621,2210, 984,4033,1734,2638, 16,4529, 663,2755,3255,1451, +3917,2257,1253,1955,2234,1263,2951, 214,1229, 617, 485, 359,1831,1969, 473,2310, + 750,2058, 165, 80,2864,2419, 361,4344,2416,2479,1134, 796,3726,1266,2943, 860, +2715, 938, 390,2734,1313,1384, 248, 202, 877,1064,2854, 522,3907, 279,1602, 297, +2357, 395,3740, 137,2075, 944,4089,2584,1267,3802, 62,1533,2285, 178, 176, 780, +2440, 201,3707, 590, 478,1560,4354,2117,1075, 30, 74,4643,4004,1635,1441,2745, + 776,2596, 238,1077,1692,1912,2844, 605, 499,1742,3947, 241,3053, 980,1749, 936, +2640,4511,2582, 515,1543,2162,5322,2892,2993, 890,2148,1924, 665,1827,3581,1032, + 968,3163, 339,1044,1896, 270, 583,1791,1720,4367,1194,3488,3669, 43,2523,1657, + 163,2167, 290,1209,1622,3378, 550, 634,2508,2510, 695,2634,2384,2512,1476,1414, + 220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680, 854,3227,1299,2976, +3172, 186,2998,1459, 443,1067,3251,1495, 321,1932,3054, 909, 753,1410,1828, 436, +2441,1119,1587,3164,2186,1258, 227, 231,1425,1890,3200,3942, 247, 959, 725,5254, +2741, 577,2158,2079, 929, 120, 174, 838,2813, 591,1115, 417,2024, 40,3240,1536, +1037, 291,4151,2354, 632,1298,2406,2500,3535,1825,1846,3451, 205,1171, 345,4238, + 18,1163, 811, 685,2208,1217, 425,1312,1508,1175,4308,2552,1033, 587,1381,3059, +2984,3482, 340,1316,4023,3972, 792,3176, 519, 777,4690, 918, 933,4130,2981,3741, + 90,3360,2911,2200,5184,4550, 609,3079,2030, 272,3379,2736, 363,3881,1130,1447, + 286, 779, 357,1169,3350,3137,1630,1220,2687,2391, 747,1277,3688,2618,2682,2601, +1156,3196,5290,4034,3102,1689,3596,3128, 874, 219,2783, 798, 508,1843,2461, 269, +1658,1776,1392,1913,2983,3287,2866,2159,2372, 829,4076, 46,4253,2873,1889,1894, + 915,1834,1631,2181,2318, 298, 664,2818,3555,2735, 954,3228,3117, 527,3511,2173, + 681,2712,3033,2247,2346,3467,1652, 155,2164,3382, 113,1994, 450, 899, 494, 994, +1237,2958,1875,2336,1926,3727, 545,1577,1550, 633,3473, 204,1305,3072,2410,1956, +2471, 707,2134, 841,2195,2196,2663,3843,1026,4940, 990,3252,4997, 368,1092, 437, +3212,3258,1933,1829, 675,2977,2893, 412, 943,3723,4644,3294,3283,2230,2373,5154, +2389,2241,2661,2323,1404,2524, 593, 787, 677,3008,1275,2059, 438,2709,2609,2240, +2269,2246,1446, 36,1568,1373,3892,1574,2301,1456,3962, 693,2276,5216,2035,1143, +2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090, 424,1694, 312,3634, +3390,4179,3335,2252,1214, 561,1059,3243,2295,2561, 975,5155,2321,2751,3772, 472, +1537,3282,3398,1047,2077,2348,2878,1323,3340,3076, 690,2906, 51, 369, 170,3541, +1060,2187,2688,3670,2541,1083,1683, 928,3918, 459, 109,4427, 599,3744,4286, 143, +2101,2730,2490, 82,1588,3036,2121, 281,1860, 477,4035,1238,2812,3020,2716,3312, +1530,2188,2055,1317, 843, 636,1808,1173,3495, 649, 181,1002, 147,3641,1159,2414, +3750,2289,2795, 813,3123,2610,1136,4368, 5,3391,4541,2174, 420, 429,1728, 754, +1228,2115,2219, 347,2223,2733, 735,1518,3003,2355,3134,1764,3948,3329,1888,2424, +1001,1234,1972,3321,3363,1672,1021,1450,1584, 226, 765, 655,2526,3404,3244,2302, +3665, 731, 594,2184, 319,1576, 621, 658,2656,4299,2099,3864,1279,2071,2598,2739, + 795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004, +2591,1084, 213,2287,1963,3565,2250, 822, 793,4574,3187,1772,1789,3050, 595,1484, +1959,2770,1080,2650, 456, 422,2996, 940,3322,4328,4345,3092,2742, 965,2784, 739, +4124, 952,1358,2498,2949,2565, 332,2698,2378, 660,2260,2473,4194,3856,2919, 535, +1260,2651,1208,1428,1300,1949,1303,2942, 433,2455,2450,1251,1946, 614,1269, 641, +1306,1810,2737,3078,2912, 564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307, +3218,2175,1897,3063, 682,1157,4040,4005,1712,1160,1941,1399, 394, 402,2952,1573, +1151,2986,2404, 862, 299,2033,1489,3006, 346, 171,2886,3401,1726,2932, 168,2533, + 47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965, + 504,1036,2690,2988,2405, 745,5871, 849,2397,2056,3081, 863,2359,3857,2096, 99, +1397,1769,2300,4428,1643,3455,1978,1757,3718,1440, 35,4879,3742,1296,4228,2280, + 160,5063,1599,2013, 166, 520,3479,1646,3345,3012, 490,1937,1545,1264,2182,2505, +1096,1188,1369,1436,2421,1667,2792,2460,1270,2122, 727,3167,2143, 806,1706,1012, +1800,3037, 960,2218,1882, 805, 139,2456,1139,1521, 851,1052,3093,3089, 342,2039, + 744,5097,1468,1502,1585,2087, 223, 939, 326,2140,2577, 892,2481,1623,4077, 982, +3708, 135,2131, 87,2503,3114,2326,1106, 876,1616, 547,2997,2831,2093,3441,4530, +4314, 9,3256,4229,4148, 659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392, +3274,1368,3689,4645,1477, 705,3384,3635,1068,1529,2941,1458,3782,1509, 100,1656, +2548, 718,2339, 408,1590,2780,3548,1838,4117,3719,1345,3530, 717,3442,2778,3220, +2898,1892,4590,3614,3371,2043,1998,1224,3483, 891, 635, 584,2559,3355, 733,1766, +1729,1172,3789,1891,2307, 781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535, +3213,1189,1934,5693,3262, 586,3118,1324,1598, 517,1564,2217,1868,1893,4445,3728, +2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287, 338, +1993,3129,3489,2689,1809,2815,1997, 957,1855,3898,2550,3275,3057,1105,1319, 627, +1505,1911,1883,3526, 698,3629,3456,1833,1431, 746, 77,1261,2017,2296,1977,1885, + 125,1334,1600, 525,1798,1109,2222,1470,1945, 559,2236,1186,3443,2476,1929,1411, +2411,3135,1777,3372,2621,1841,1613,3229, 668,1430,1839,2643,2916, 195,1989,2671, +2358,1387, 629,3205,2293,5256,4439, 123,1310, 888,1879,4300,3021,3605,1003,1162, +3192,2910,2010, 140,2395,2859, 55,1082,2012,2901, 662, 419,2081,1438, 680,2774, +4654,3912,1620,1731,1625,5035,4065,2328, 512,1344, 802,5443,2163,2311,2537, 524, +3399, 98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346, + 180,1113,4655,3461,2028,1698, 833,2696,1235,1322,1594,4408,3623,3013,3225,2040, +3022, 541,2881, 607,3632,2029,1665,1219, 639,1385,1686,1099,2803,3231,1938,3188, +2858, 427, 676,2772,1168,2025, 454,3253,2486,3556, 230,1950, 580, 791,1991,1280, +1086,1974,2034, 630, 257,3338,2788,4903,1017, 86,4790, 966,2789,1995,1696,1131, + 259,3095,4188,1308, 179,1463,5257, 289,4107,1248, 42,3413,1725,2288, 896,1947, + 774,4474,4254, 604,3430,4264, 392,2514,2588, 452, 237,1408,3018, 988,4531,1970, +3034,3310, 540,2370,1562,1288,2990, 502,4765,1147, 4,1853,2708, 207, 294,2814, +4078,2902,2509, 684, 34,3105,3532,2551, 644, 709,2801,2344, 573,1727,3573,3557, +2021,1081,3100,4315,2100,3681, 199,2263,1837,2385, 146,3484,1195,2776,3949, 997, +1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076, 493, 117,5400,2521, 972, +1490,2934,1796,4542,2374,1512,2933,2657, 413,2888,1135,2762,2314,2156,1355,2369, + 766,2007,2527,2170,3124,2491,2593,2632,4757,2437, 234,3125,3591,1898,1750,1376, +1942,3468,3138, 570,2127,2145,3276,4131, 962, 132,1445,4196, 19, 941,3624,3480, +3366,1973,1374,4461,3431,2629, 283,2415,2275, 808,2887,3620,2112,2563,1353,3610, + 955,1089,3103,1053, 96, 88,4097, 823,3808,1583, 399, 292,4091,3313, 421,1128, + 642,4006, 903,2539,1877,2082, 596, 29,4066,1790, 722,2157, 130, 995,1569, 769, +1485, 464, 513,2213, 288,1923,1101,2453,4316, 133, 486,2445, 50, 625, 487,2207, + 57, 423, 481,2962, 159,3729,1558, 491, 303, 482, 501, 240,2837, 112,3648,2392, +1783, 362, 8,3433,3422, 610,2793,3277,1390,1284,1654, 21,3823, 734, 367, 623, + 193, 287, 374,1009,1483, 816, 476, 313,2255,2340,1262,2150,2899,1146,2581, 782, +2116,1659,2018,1880, 255,3586,3314,1110,2867,2137,2564, 986,2767,5185,2006, 650, + 158, 926, 762, 881,3157,2717,2362,3587, 306,3690,3245,1542,3077,2427,1691,2478, +2118,2985,3490,2438, 539,2305, 983, 129,1754, 355,4201,2386, 827,2923, 104,1773, +2838,2771, 411,2905,3919, 376, 767, 122,1114, 828,2422,1817,3506, 266,3460,1007, +1609,4998, 945,2612,4429,2274, 726,1247,1964,2914,2199,2070,4002,4108, 657,3323, +1422, 579, 455,2764,4737,1222,2895,1670, 824,1223,1487,2525, 558, 861,3080, 598, +2659,2515,1967, 752,2583,2376,2214,4180, 977, 704,2464,4999,2622,4109,1210,2961, + 819,1541, 142,2284, 44, 418, 457,1126,3730,4347,4626,1644,1876,3671,1864, 302, +1063,5694, 624, 723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098, 409, +1011,2325,3704,2306, 818,1732,1383,1824,1844,3757, 999,2705,3497,1216,1423,2683, +2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343, 783, 724, 191, +2434,1354,2220,5065,1763,2752,2472,4152, 131, 175,2885,3434, 92,1466,4920,2616, +3871,3872,3866, 128,1551,1632, 669,1854,3682,4691,4125,1230, 188,2973,3290,1302, +1213, 560,3266, 917, 763,3909,3249,1760, 868,1958, 764,1782,2097, 145,2277,3774, +4462, 64,1491,3062, 971,2132,3606,2442, 221,1226,1617, 218, 323,1185,3207,3147, + 571, 619,1473,1005,1744,2281, 449,1887,2396,3685, 275, 375,3816,1743,3844,3731, + 845,1983,2350,4210,1377, 773, 967,3499,3052,3743,2725,4007,1697,1022,3943,1464, +3264,2855,2722,1952,1029,2839,2467, 84,4383,2215, 820,1391,2015,2448,3672, 377, +1948,2168, 797,2545,3536,2578,2645, 94,2874,1678, 405,1259,3071, 771, 546,1315, + 470,1243,3083, 895,2468, 981, 969,2037, 846,4181, 653,1276,2928, 14,2594, 557, +3007,2474, 156, 902,1338,1740,2574, 537,2518, 973,2282,2216,2433,1928, 138,2903, +1293,2631,1612, 646,3457, 839,2935, 111, 496,2191,2847, 589,3186, 149,3994,2060, +4031,2641,4067,3145,1870, 37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261, +1301, 251,2446,2599,2153, 872,3246, 637, 334,3705, 831, 884, 921,3065,3140,4092, +2198,1944, 246,2964, 108,2045,1152,1921,2308,1031, 203,3173,4170,1907,3890, 810, +1401,2003,1690, 506, 647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708, + 498, 666,2613, 834,3817,1231, 184,2851,1124, 883,3197,2261,3710,1765,1553,2658, +1178,2639,2351, 93,1193, 942,2538,2141,4402, 235,1821, 870,1591,2192,1709,1871, +3341,1618,4126,2595,2334, 603, 651, 69, 701, 268,2662,3411,2555,1380,1606, 503, + 448, 254,2371,2646, 574,1187,2309,1770, 322,2235,1292,1801, 305, 566,1133, 229, +2067,2057, 706, 167, 483,2002,2672,3295,1820,3561,3067, 316, 378,2746,3452,1112, + 136,1981, 507,1651,2917,1117, 285,4591, 182,2580,3522,1304, 335,3303,1835,2504, +1795,1792,2248, 674,1018,2106,2449,1857,2292,2845, 976,3047,1781,2600,2727,1389, +1281, 52,3152, 153, 265,3950, 672,3485,3951,4463, 430,1183, 365, 278,2169, 27, +1407,1336,2304, 209,1340,1730,2202,1852,2403,2883, 979,1737,1062, 631,2829,2542, +3876,2592, 825,2086,2226,3048,3625, 352,1417,3724, 542, 991, 431,1351,3938,1861, +2294, 826,1361,2927,3142,3503,1738, 463,2462,2723, 582,1916,1595,2808, 400,3845, +3891,2868,3621,2254, 58,2492,1123, 910,2160,2614,1372,1603,1196,1072,3385,1700, +3267,1980, 696, 480,2430, 920, 799,1570,2920,1951,2041,4047,2540,1321,4223,2469, +3562,2228,1271,2602, 401,2833,3351,2575,5157, 907,2312,1256, 410, 263,3507,1582, + 996, 678,1849,2316,1480, 908,3545,2237, 703,2322, 667,1826,2849,1531,2604,2999, +2407,3146,2151,2630,1786,3711, 469,3542, 497,3899,2409, 858, 837,4446,3393,1274, + 786, 620,1845,2001,3311, 484, 308,3367,1204,1815,3691,2332,1532,2557,1842,2020, +2724,1927,2333,4440, 567, 22,1673,2728,4475,1987,1858,1144,1597, 101,1832,3601, + 12, 974,3783,4391, 951,1412, 1,3720, 453,4608,4041, 528,1041,1027,3230,2628, +1129, 875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278, 144,1758,3040, 31, + 475,1680, 366,2685,3184, 311,1642,4008,2466,5036,1593,1493,2809, 216,1420,1668, + 233, 304,2128,3284, 232,1429,1768,1040,2008,3407,2740,2967,2543, 242,2133, 778, +1565,2022,2620, 505,2189,2756,1098,2273, 372,1614, 708, 553,2846,2094,2278, 169, +3626,2835,4161, 228,2674,3165, 809,1454,1309, 466,1705,1095, 900,3423, 880,2667, +3751,5258,2317,3109,2571,4317,2766,1503,1342, 866,4447,1118, 63,2076, 314,1881, +1348,1061, 172, 978,3515,1747, 532, 511,3970, 6, 601, 905,2699,3300,1751, 276, +1467,3725,2668, 65,4239,2544,2779,2556,1604, 578,2451,1802, 992,2331,2624,1320, +3446, 713,1513,1013, 103,2786,2447,1661, 886,1702, 916, 654,3574,2031,1556, 751, +2178,2821,2179,1498,1538,2176, 271, 914,2251,2080,1325, 638,1953,2937,3877,2432, +2754, 95,3265,1716, 260,1227,4083, 775, 106,1357,3254, 426,1607, 555,2480, 772, +1985, 244,2546, 474, 495,1046,2611,1851,2061, 71,2089,1675,2590, 742,3758,2843, +3222,1433, 267,2180,2576,2826,2233,2092,3913,2435, 956,1745,3075, 856,2113,1116, + 451, 3,1988,2896,1398, 993,2463,1878,2049,1341,2718,2721,2870,2108, 712,2904, +4363,2753,2324, 277,2872,2349,2649, 384, 987, 435, 691,3000, 922, 164,3939, 652, +1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664, +2530,1434,2408, 893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078, 49,3770, +3469, 462, 318, 656,2259,3250,3069, 679,1629,2758, 344,1138,1104,3120,1836,1283, +3115,2154,1437,4448, 934, 759,1999, 794,2862,1038, 533,2560,1722,2342, 855,2626, +1197,1663,4476,3127, 85,4240,2528, 25,1111,1181,3673, 407,3470,4561,2679,2713, + 768,1925,2841,3986,1544,1165, 932, 373,1240,2146,1930,2673, 721,4766, 354,4333, + 391,2963, 187, 61,3364,1442,1102, 330,1940,1767, 341,3809,4118, 393,2496,2062, +2211, 105, 331, 300, 439, 913,1332, 626, 379,3304,1557, 328, 689,3952, 309,1555, + 931, 317,2517,3027, 325, 569, 686,2107,3084, 60,1042,1333,2794, 264,3177,4014, +1628, 258,3712, 7,4464,1176,1043,1778, 683, 114,1975, 78,1492, 383,1886, 510, + 386, 645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015, +1282,1289,4609, 697,1453,3044,2666,3611,1856,2412, 54, 719,1330, 568,3778,2459, +1748, 788, 492, 551,1191,1000, 488,3394,3763, 282,1799, 348,2016,1523,3155,2390, +1049, 382,2019,1788,1170, 729,2968,3523, 897,3926,2785,2938,3292, 350,2319,3238, +1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232, +1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624, + 381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189, + 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512 +) + diff --git a/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py b/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py new file mode 100644 index 0000000..8446d2d --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py @@ -0,0 +1,46 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import GB2312DistributionAnalysis +from .mbcssm import GB2312_SM_MODEL + +class GB2312Prober(MultiByteCharSetProber): + def __init__(self): + super(GB2312Prober, self).__init__() + self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) + self.distribution_analyzer = GB2312DistributionAnalysis() + self.reset() + + @property + def charset_name(self): + return "GB2312" + + @property + def language(self): + return "Chinese" diff --git a/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py b/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py new file mode 100644 index 0000000..b0e1bf4 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py @@ -0,0 +1,292 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Shy Shalom +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState + +# This prober doesn't actually recognize a language or a charset. +# It is a helper prober for the use of the Hebrew model probers + +### General ideas of the Hebrew charset recognition ### +# +# Four main charsets exist in Hebrew: +# "ISO-8859-8" - Visual Hebrew +# "windows-1255" - Logical Hebrew +# "ISO-8859-8-I" - Logical Hebrew +# "x-mac-hebrew" - ?? Logical Hebrew ?? +# +# Both "ISO" charsets use a completely identical set of code points, whereas +# "windows-1255" and "x-mac-hebrew" are two different proper supersets of +# these code points. windows-1255 defines additional characters in the range +# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific +# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6. +# x-mac-hebrew defines similar additional code points but with a different +# mapping. +# +# As far as an average Hebrew text with no diacritics is concerned, all four +# charsets are identical with respect to code points. Meaning that for the +# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters +# (including final letters). +# +# The dominant difference between these charsets is their directionality. +# "Visual" directionality means that the text is ordered as if the renderer is +# not aware of a BIDI rendering algorithm. The renderer sees the text and +# draws it from left to right. The text itself when ordered naturally is read +# backwards. A buffer of Visual Hebrew generally looks like so: +# "[last word of first line spelled backwards] [whole line ordered backwards +# and spelled backwards] [first word of first line spelled backwards] +# [end of line] [last word of second line] ... etc' " +# adding punctuation marks, numbers and English text to visual text is +# naturally also "visual" and from left to right. +# +# "Logical" directionality means the text is ordered "naturally" according to +# the order it is read. It is the responsibility of the renderer to display +# the text from right to left. A BIDI algorithm is used to place general +# punctuation marks, numbers and English text in the text. +# +# Texts in x-mac-hebrew are almost impossible to find on the Internet. From +# what little evidence I could find, it seems that its general directionality +# is Logical. +# +# To sum up all of the above, the Hebrew probing mechanism knows about two +# charsets: +# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are +# backwards while line order is natural. For charset recognition purposes +# the line order is unimportant (In fact, for this implementation, even +# word order is unimportant). +# Logical Hebrew - "windows-1255" - normal, naturally ordered text. +# +# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be +# specifically identified. +# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew +# that contain special punctuation marks or diacritics is displayed with +# some unconverted characters showing as question marks. This problem might +# be corrected using another model prober for x-mac-hebrew. Due to the fact +# that x-mac-hebrew texts are so rare, writing another model prober isn't +# worth the effort and performance hit. +# +#### The Prober #### +# +# The prober is divided between two SBCharSetProbers and a HebrewProber, +# all of which are managed, created, fed data, inquired and deleted by the +# SBCSGroupProber. The two SBCharSetProbers identify that the text is in +# fact some kind of Hebrew, Logical or Visual. The final decision about which +# one is it is made by the HebrewProber by combining final-letter scores +# with the scores of the two SBCharSetProbers to produce a final answer. +# +# The SBCSGroupProber is responsible for stripping the original text of HTML +# tags, English characters, numbers, low-ASCII punctuation characters, spaces +# and new lines. It reduces any sequence of such characters to a single space. +# The buffer fed to each prober in the SBCS group prober is pure text in +# high-ASCII. +# The two SBCharSetProbers (model probers) share the same language model: +# Win1255Model. +# The first SBCharSetProber uses the model normally as any other +# SBCharSetProber does, to recognize windows-1255, upon which this model was +# built. The second SBCharSetProber is told to make the pair-of-letter +# lookup in the language model backwards. This in practice exactly simulates +# a visual Hebrew model using the windows-1255 logical Hebrew model. +# +# The HebrewProber is not using any language model. All it does is look for +# final-letter evidence suggesting the text is either logical Hebrew or visual +# Hebrew. Disjointed from the model probers, the results of the HebrewProber +# alone are meaningless. HebrewProber always returns 0.00 as confidence +# since it never identifies a charset by itself. Instead, the pointer to the +# HebrewProber is passed to the model probers as a helper "Name Prober". +# When the Group prober receives a positive identification from any prober, +# it asks for the name of the charset identified. If the prober queried is a +# Hebrew model prober, the model prober forwards the call to the +# HebrewProber to make the final decision. In the HebrewProber, the +# decision is made according to the final-letters scores maintained and Both +# model probers scores. The answer is returned in the form of the name of the +# charset identified, either "windows-1255" or "ISO-8859-8". + +class HebrewProber(CharSetProber): + # windows-1255 / ISO-8859-8 code points of interest + FINAL_KAF = 0xea + NORMAL_KAF = 0xeb + FINAL_MEM = 0xed + NORMAL_MEM = 0xee + FINAL_NUN = 0xef + NORMAL_NUN = 0xf0 + FINAL_PE = 0xf3 + NORMAL_PE = 0xf4 + FINAL_TSADI = 0xf5 + NORMAL_TSADI = 0xf6 + + # Minimum Visual vs Logical final letter score difference. + # If the difference is below this, don't rely solely on the final letter score + # distance. + MIN_FINAL_CHAR_DISTANCE = 5 + + # Minimum Visual vs Logical model score difference. + # If the difference is below this, don't rely at all on the model score + # distance. + MIN_MODEL_DISTANCE = 0.01 + + VISUAL_HEBREW_NAME = "ISO-8859-8" + LOGICAL_HEBREW_NAME = "windows-1255" + + def __init__(self): + super(HebrewProber, self).__init__() + self._final_char_logical_score = None + self._final_char_visual_score = None + self._prev = None + self._before_prev = None + self._logical_prober = None + self._visual_prober = None + self.reset() + + def reset(self): + self._final_char_logical_score = 0 + self._final_char_visual_score = 0 + # The two last characters seen in the previous buffer, + # mPrev and mBeforePrev are initialized to space in order to simulate + # a word delimiter at the beginning of the data + self._prev = ' ' + self._before_prev = ' ' + # These probers are owned by the group prober. + + def set_model_probers(self, logicalProber, visualProber): + self._logical_prober = logicalProber + self._visual_prober = visualProber + + def is_final(self, c): + return c in [self.FINAL_KAF, self.FINAL_MEM, self.FINAL_NUN, + self.FINAL_PE, self.FINAL_TSADI] + + def is_non_final(self, c): + # The normal Tsadi is not a good Non-Final letter due to words like + # 'lechotet' (to chat) containing an apostrophe after the tsadi. This + # apostrophe is converted to a space in FilterWithoutEnglishLetters + # causing the Non-Final tsadi to appear at an end of a word even + # though this is not the case in the original text. + # The letters Pe and Kaf rarely display a related behavior of not being + # a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak' + # for example legally end with a Non-Final Pe or Kaf. However, the + # benefit of these letters as Non-Final letters outweighs the damage + # since these words are quite rare. + return c in [self.NORMAL_KAF, self.NORMAL_MEM, + self.NORMAL_NUN, self.NORMAL_PE] + + def feed(self, byte_str): + # Final letter analysis for logical-visual decision. + # Look for evidence that the received buffer is either logical Hebrew + # or visual Hebrew. + # The following cases are checked: + # 1) A word longer than 1 letter, ending with a final letter. This is + # an indication that the text is laid out "naturally" since the + # final letter really appears at the end. +1 for logical score. + # 2) A word longer than 1 letter, ending with a Non-Final letter. In + # normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi, + # should not end with the Non-Final form of that letter. Exceptions + # to this rule are mentioned above in isNonFinal(). This is an + # indication that the text is laid out backwards. +1 for visual + # score + # 3) A word longer than 1 letter, starting with a final letter. Final + # letters should not appear at the beginning of a word. This is an + # indication that the text is laid out backwards. +1 for visual + # score. + # + # The visual score and logical score are accumulated throughout the + # text and are finally checked against each other in GetCharSetName(). + # No checking for final letters in the middle of words is done since + # that case is not an indication for either Logical or Visual text. + # + # We automatically filter out all 7-bit characters (replace them with + # spaces) so the word boundary detection works properly. [MAP] + + if self.state == ProbingState.NOT_ME: + # Both model probers say it's not them. No reason to continue. + return ProbingState.NOT_ME + + byte_str = self.filter_high_byte_only(byte_str) + + for cur in byte_str: + if cur == ' ': + # We stand on a space - a word just ended + if self._before_prev != ' ': + # next-to-last char was not a space so self._prev is not a + # 1 letter word + if self.is_final(self._prev): + # case (1) [-2:not space][-1:final letter][cur:space] + self._final_char_logical_score += 1 + elif self.is_non_final(self._prev): + # case (2) [-2:not space][-1:Non-Final letter][ + # cur:space] + self._final_char_visual_score += 1 + else: + # Not standing on a space + if ((self._before_prev == ' ') and + (self.is_final(self._prev)) and (cur != ' ')): + # case (3) [-2:space][-1:final letter][cur:not space] + self._final_char_visual_score += 1 + self._before_prev = self._prev + self._prev = cur + + # Forever detecting, till the end or until both model probers return + # ProbingState.NOT_ME (handled above) + return ProbingState.DETECTING + + @property + def charset_name(self): + # Make the decision: is it Logical or Visual? + # If the final letter score distance is dominant enough, rely on it. + finalsub = self._final_char_logical_score - self._final_char_visual_score + if finalsub >= self.MIN_FINAL_CHAR_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE: + return self.VISUAL_HEBREW_NAME + + # It's not dominant enough, try to rely on the model scores instead. + modelsub = (self._logical_prober.get_confidence() + - self._visual_prober.get_confidence()) + if modelsub > self.MIN_MODEL_DISTANCE: + return self.LOGICAL_HEBREW_NAME + if modelsub < -self.MIN_MODEL_DISTANCE: + return self.VISUAL_HEBREW_NAME + + # Still no good, back to final letter distance, maybe it'll save the + # day. + if finalsub < 0.0: + return self.VISUAL_HEBREW_NAME + + # (finalsub > 0 - Logical) or (don't know what to do) default to + # Logical. + return self.LOGICAL_HEBREW_NAME + + @property + def language(self): + return 'Hebrew' + + @property + def state(self): + # Remain active as long as any of the model probers are active. + if (self._logical_prober.state == ProbingState.NOT_ME) and \ + (self._visual_prober.state == ProbingState.NOT_ME): + return ProbingState.NOT_ME + return ProbingState.DETECTING diff --git a/Lib/site-packages/pip/_vendor/chardet/jisfreq.py b/Lib/site-packages/pip/_vendor/chardet/jisfreq.py new file mode 100644 index 0000000..83fc082 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/jisfreq.py @@ -0,0 +1,325 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# Sampling from about 20M text materials include literature and computer technology +# +# Japanese frequency table, applied to both S-JIS and EUC-JP +# They are sorted in order. + +# 128 --> 0.77094 +# 256 --> 0.85710 +# 512 --> 0.92635 +# 1024 --> 0.97130 +# 2048 --> 0.99431 +# +# Ideal Distribution Ratio = 0.92635 / (1-0.92635) = 12.58 +# Random Distribution Ration = 512 / (2965+62+83+86-512) = 0.191 +# +# Typical Distribution Ratio, 25% of IDR + +JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0 + +# Char to FreqOrder table , +JIS_TABLE_SIZE = 4368 + +JIS_CHAR_TO_FREQ_ORDER = ( + 40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16 +3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32 +1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48 +2042,1061,1062, 48, 49, 44, 45, 433, 434,1040,1041, 996, 787,2997,1255,4305, # 64 +2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928, # 80 +5081,3296,3432, 290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375, # 96 +1691,3297,4306,4307,4611, 452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086, # 112 +5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102, # 128 +5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117, # 144 +5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133, # 160 +5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149, # 176 +5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164, # 192 +5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472, 598, 618, 820,1205, # 208 +1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172, # 224 +1875,2043,2149,1793,1382,2973, 925,2404,1067,1241, 960,1377,2935,1491, 919,1217, # 240 +1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804, # 256 +2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998, # 272 +3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161, 26,3377, 2,3929, 20, # 288 +3691, 47,4100, 50, 17, 16, 35, 268, 27, 243, 42, 155, 24, 154, 29, 184, # 304 + 4, 91, 14, 92, 53, 396, 33, 289, 9, 37, 64, 620, 21, 39, 321, 5, # 320 + 12, 11, 52, 13, 3, 208, 138, 0, 7, 60, 526, 141, 151,1069, 181, 275, # 336 +1591, 83, 132,1475, 126, 331, 829, 15, 69, 160, 59, 22, 157, 55,1079, 312, # 352 + 109, 38, 23, 25, 10, 19, 79,5195, 61, 382,1124, 8, 30,5196,5197,5198, # 368 +5199,5200,5201,5202,5203,5204,5205,5206, 89, 62, 74, 34,2416, 112, 139, 196, # 384 + 271, 149, 84, 607, 131, 765, 46, 88, 153, 683, 76, 874, 101, 258, 57, 80, # 400 + 32, 364, 121,1508, 169,1547, 68, 235, 145,2999, 41, 360,3027, 70, 63, 31, # 416 + 43, 259, 262,1383, 99, 533, 194, 66, 93, 846, 217, 192, 56, 106, 58, 565, # 432 + 280, 272, 311, 256, 146, 82, 308, 71, 100, 128, 214, 655, 110, 261, 104,1140, # 448 + 54, 51, 36, 87, 67,3070, 185,2618,2936,2020, 28,1066,2390,2059,5207,5208, # 464 +5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223, # 480 +5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238, # 496 +5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247, # 512 +4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251, # 528 +5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267, # 544 +5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283, # 560 +5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299, # 576 +5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315, # 592 +5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331, # 608 +5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347, # 624 +5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, # 640 +5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379, # 656 +5380,5381, 363, 642,2787,2878,2788,2789,2316,3232,2317,3434,2011, 165,1942,3930, # 672 +3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392, # 688 +5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, # 704 +5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424, # 720 +5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440, # 736 +5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456, # 752 +5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472, # 768 +5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488, # 784 +5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504, # 800 +5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520, # 816 +5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536, # 832 +5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552, # 848 +5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568, # 864 +5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584, # 880 +5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600, # 896 +5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616, # 912 +5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632, # 928 +5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, # 944 +5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664, # 960 +5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680, # 976 +5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696, # 992 +5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712, # 1008 +5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728, # 1024 +5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744, # 1040 +5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760, # 1056 +5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776, # 1072 +5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792, # 1088 +5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808, # 1104 +5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824, # 1120 +5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840, # 1136 +5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856, # 1152 +5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872, # 1168 +5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, # 1184 +5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904, # 1200 +5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, # 1216 +5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936, # 1232 +5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952, # 1248 +5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, # 1264 +5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984, # 1280 +5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000, # 1296 +6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016, # 1312 +6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, # 1328 +6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048, # 1344 +6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064, # 1360 +6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080, # 1376 +6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096, # 1392 +6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112, # 1408 +6113,6114,2044,2060,4621, 997,1235, 473,1186,4622, 920,3378,6115,6116, 379,1108, # 1424 +4313,2657,2735,3934,6117,3809, 636,3233, 573,1026,3693,3435,2974,3300,2298,4105, # 1440 + 854,2937,2463, 393,2581,2417, 539, 752,1280,2750,2480, 140,1161, 440, 708,1569, # 1456 + 665,2497,1746,1291,1523,3000, 164,1603, 847,1331, 537,1997, 486, 508,1693,2418, # 1472 +1970,2227, 878,1220, 299,1030, 969, 652,2751, 624,1137,3301,2619, 65,3302,2045, # 1488 +1761,1859,3120,1930,3694,3516, 663,1767, 852, 835,3695, 269, 767,2826,2339,1305, # 1504 + 896,1150, 770,1616,6118, 506,1502,2075,1012,2519, 775,2520,2975,2340,2938,4314, # 1520 +3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557, 175, 597, 985, # 1536 +3517,2419,2521,1416,3029, 585, 938,1931,1007,1052,1932,1685,6120,3379,4316,4623, # 1552 + 804, 599,3121,1333,2128,2539,1159,1554,2032,3810, 687,2033,2904, 952, 675,1467, # 1568 +3436,6121,2241,1096,1786,2440,1543,1924, 980,1813,2228, 781,2692,1879, 728,1918, # 1584 +3696,4624, 548,1950,4625,1809,1088,1356,3303,2522,1944, 502, 972, 373, 513,2827, # 1600 + 586,2377,2391,1003,1976,1631,6122,2464,1084, 648,1776,4626,2141, 324, 962,2012, # 1616 +2177,2076,1384, 742,2178,1448,1173,1810, 222, 102, 301, 445, 125,2420, 662,2498, # 1632 + 277, 200,1476,1165,1068, 224,2562,1378,1446, 450,1880, 659, 791, 582,4627,2939, # 1648 +3936,1516,1274, 555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229, 412,2114, # 1664 +1900,2392,3518, 512,2597, 427,1925,2341,3122,1653,1686,2465,2499, 697, 330, 273, # 1680 + 380,2162, 951, 832, 780, 991,1301,3073, 965,2270,3519, 668,2523,2636,1286, 535, # 1696 +1407, 518, 671, 957,2658,2378, 267, 611,2197,3030,6123, 248,2299, 967,1799,2356, # 1712 + 850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879, # 1728 +2829, 499,2179, 676,4629, 557,2329,2214,2090, 325,3234, 464, 811,3001, 992,2342, # 1744 +2481,1232,1469, 303,2242, 466,1070,2163, 603,1777,2091,4630,2752,4631,2714, 322, # 1760 +2659,1964,1768, 481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849, # 1776 +2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634, # 1792 +1604, 943,1724,1454, 917, 868,2215,1169,2940, 552,1145,1800,1228,1823,1955, 316, # 1808 +1080,2510, 361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127, 541,1263,1229, # 1824 +1148,2540, 545, 465,1833,2880,3438,1901,3074,2482, 816,3937, 713,1788,2500, 122, # 1840 +1575, 195,1451,2501,1111,6128, 859, 374,1225,2243,2483,4317, 390,1033,3439,3075, # 1856 +2524,1687, 266, 793,1440,2599, 946, 779, 802, 507, 897,1081, 528,2189,1292, 711, # 1872 +1866,1725,1167,1640, 753, 398,2661,1053, 246, 348,4318, 137,1024,3440,1600,2077, # 1888 +2129, 825,4319, 698, 238, 521, 187,2300,1157,2423,1641,1605,1464,1610,1097,2541, # 1904 +1260,1436, 759,2255,1814,2150, 705,3235, 409,2563,3304, 561,3033,2005,2564, 726, # 1920 +1956,2343,3698,4109, 949,3812,3813,3520,1669, 653,1379,2525, 881,2198, 632,2256, # 1936 +1027, 778,1074, 733,1957, 514,1481,2466, 554,2180, 702,3938,1606,1017,1398,6129, # 1952 +1380,3521, 921, 993,1313, 594, 449,1489,1617,1166, 768,1426,1360, 495,1794,3601, # 1968 +1177,3602,1170,4320,2344, 476, 425,3167,4635,3168,1424, 401,2662,1171,3382,1998, # 1984 +1089,4110, 477,3169, 474,6130,1909, 596,2831,1842, 494, 693,1051,1028,1207,3076, # 2000 + 606,2115, 727,2790,1473,1115, 743,3522, 630, 805,1532,4321,2021, 366,1057, 838, # 2016 + 684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090, # 2032 +1536,3939,3523,3306,1455,2199, 336, 369,2331,1035, 584,2393, 902, 718,2600,6131, # 2048 +2753, 463,2151,1149,1611,2467, 715,1308,3124,1268, 343,1413,3236,1517,1347,2663, # 2064 +2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980, 872,2368, # 2080 +2441,2943, 320,2369,2116,1082, 679,1933,3941,2791,3815, 625,1143,2023, 422,2200, # 2096 +3816,6133, 730,1695, 356,2257,1626,2301,2858,2637,1627,1778, 937, 883,2906,2693, # 2112 +3002,1769,1086, 400,1063,1325,3307,2792,4111,3077, 456,2345,1046, 747,6134,1524, # 2128 + 884,1094,3383,1474,2164,1059, 974,1688,2181,2258,1047, 345,1665,1187, 358, 875, # 2144 +3170, 305, 660,3524,2190,1334,1135,3171,1540,1649,2542,1527, 927, 968,2793, 885, # 2160 +1972,1850, 482, 500,2638,1218,1109,1085,2543,1654,2034, 876, 78,2287,1482,1277, # 2176 + 861,1675,1083,1779, 724,2754, 454, 397,1132,1612,2332, 893, 672,1237, 257,2259, # 2192 +2370, 135,3384, 337,2244, 547, 352, 340, 709,2485,1400, 788,1138,2511, 540, 772, # 2208 +1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533, 407, # 2224 + 576,3308,1254,2071, 978,3385, 170, 136,1201,3125,2664,3172,2394, 213, 912, 873, # 2240 +3603,1713,2202, 699,3604,3699, 813,3442, 493, 531,1054, 468,2907,1483, 304, 281, # 2256 +4112,1726,1252,2094, 339,2319,2130,2639, 756,1563,2944, 748, 571,2976,1588,2425, # 2272 +2715,1851,1460,2426,1528,1392,1973,3237, 288,3309, 685,3386, 296, 892,2716,2216, # 2288 +1570,2245, 722,1747,2217, 905,3238,1103,6135,1893,1441,1965, 251,1805,2371,3700, # 2304 +2601,1919,1078, 75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817, 524, 706, # 2320 +1075, 292,3818,1756,2602, 317, 98,3173,3605,3525,1844,2218,3819,2502, 814, 567, # 2336 + 385,2908,1534,6137, 534,1642,3239, 797,6138,1670,1529, 953,4323, 188,1071, 538, # 2352 + 178, 729,3240,2109,1226,1374,2000,2357,2977, 731,2468,1116,2014,2051,6139,1261, # 2368 +1593, 803,2859,2736,3443, 556, 682, 823,1541,6140,1369,2289,1706,2794, 845, 462, # 2384 +2603,2665,1361, 387, 162,2358,1740, 739,1770,1720,1304,1401,3241,1049, 627,1571, # 2400 +2427,3526,1877,3942,1852,1500, 431,1910,1503, 677, 297,2795, 286,1433,1038,1198, # 2416 +2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442, 108, 712,4640,2372, 866, # 2432 +3701,2755,3242,1348, 834,1945,1408,3527,2395,3243,1811, 824, 994,1179,2110,1548, # 2448 +1453, 790,3003, 690,4324,4325,2832,2909,3820,1860,3821, 225,1748, 310, 346,1780, # 2464 +2470, 821,1993,2717,2796, 828, 877,3528,2860,2471,1702,2165,2910,2486,1789, 453, # 2480 + 359,2291,1676, 73,1164,1461,1127,3311, 421, 604, 314,1037, 589, 116,2487, 737, # 2496 + 837,1180, 111, 244, 735,6142,2261,1861,1362, 986, 523, 418, 581,2666,3822, 103, # 2512 + 855, 503,1414,1867,2488,1091, 657,1597, 979, 605,1316,4641,1021,2443,2078,2001, # 2528 +1209, 96, 587,2166,1032, 260,1072,2153, 173, 94, 226,3244, 819,2006,4642,4114, # 2544 +2203, 231,1744, 782, 97,2667, 786,3387, 887, 391, 442,2219,4326,1425,6143,2694, # 2560 + 633,1544,1202, 483,2015, 592,2052,1958,2472,1655, 419, 129,4327,3444,3312,1714, # 2576 +1257,3078,4328,1518,1098, 865,1310,1019,1885,1512,1734, 469,2444, 148, 773, 436, # 2592 +1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643, 579,1238, 932,2320, # 2608 + 353, 205, 801, 115,2428, 944,2321,1881, 399,2565,1211, 678, 766,3944, 335,2101, # 2624 +1459,1781,1402,3945,2737,2131,1010, 844, 981,1326,1013, 550,1816,1545,2620,1335, # 2640 +1008, 371,2881, 936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503, 416, # 2656 +1643,4330, 806,1126, 229, 591,3946,1314,1981,1576,1837,1666, 347,1790, 977,3313, # 2672 + 764,2861,1853, 688,2429,1920,1462, 77, 595, 415,2002,3034, 798,1192,4115,6144, # 2688 +2978,4331,3035,2695,2582,2072,2566, 430,2430,1727, 842,1396,3947,3702, 613, 377, # 2704 + 278, 236,1417,3388,3314,3174, 757,1869, 107,3530,6145,1194, 623,2262, 207,1253, # 2720 +2167,3446,3948, 492,1117,1935, 536,1838,2757,1246,4332, 696,2095,2406,1393,1572, # 2736 +3175,1782, 583, 190, 253,1390,2230, 830,3126,3389, 934,3245,1703,1749,2979,1870, # 2752 +2545,1656,2204, 869,2346,4116,3176,1817, 496,1764,4644, 942,1504, 404,1903,1122, # 2768 +1580,3606,2945,1022, 515, 372,1735, 955,2431,3036,6146,2797,1110,2302,2798, 617, # 2784 +6147, 441, 762,1771,3447,3607,3608,1904, 840,3037, 86, 939,1385, 572,1370,2445, # 2800 +1336, 114,3703, 898, 294, 203,3315, 703,1583,2274, 429, 961,4333,1854,1951,3390, # 2816 +2373,3704,4334,1318,1381, 966,1911,2322,1006,1155, 309, 989, 458,2718,1795,1372, # 2832 +1203, 252,1689,1363,3177, 517,1936, 168,1490, 562, 193,3823,1042,4117,1835, 551, # 2848 + 470,4645, 395, 489,3448,1871,1465,2583,2641, 417,1493, 279,1295, 511,1236,1119, # 2864 + 72,1231,1982,1812,3004, 871,1564, 984,3449,1667,2696,2096,4646,2347,2833,1673, # 2880 +3609, 695,3246,2668, 807,1183,4647, 890, 388,2333,1801,1457,2911,1765,1477,1031, # 2896 +3316,3317,1278,3391,2799,2292,2526, 163,3450,4335,2669,1404,1802,6148,2323,2407, # 2912 +1584,1728,1494,1824,1269, 298, 909,3318,1034,1632, 375, 776,1683,2061, 291, 210, # 2928 +1123, 809,1249,1002,2642,3038, 206,1011,2132, 144, 975, 882,1565, 342, 667, 754, # 2944 +1442,2143,1299,2303,2062, 447, 626,2205,1221,2739,2912,1144,1214,2206,2584, 760, # 2960 +1715, 614, 950,1281,2670,2621, 810, 577,1287,2546,4648, 242,2168, 250,2643, 691, # 2976 + 123,2644, 647, 313,1029, 689,1357,2946,1650, 216, 771,1339,1306, 808,2063, 549, # 2992 + 913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079, 406, # 3008 +2671,2117,3949,4649, 487,1825,2220,6150,2915, 448,2348,1073,6151,2397,1707, 130, # 3024 + 900,1598, 329, 176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155, # 3040 +3706,1912,1513,1614,6153,1988, 646, 392,2304,1589,3320,3039,1826,1239,1352,1340, # 3056 +2916, 505,2567,1709,1437,2408,2547, 906,6154,2672, 384,1458,1594,1100,1329, 710, # 3072 + 423,3531,2064,2231,2622,1989,2673,1087,1882, 333, 841,3005,1296,2882,2379, 580, # 3088 +1937,1827,1293,2585, 601, 574, 249,1772,4118,2079,1120, 645, 901,1176,1690, 795, # 3104 +2207, 478,1434, 516,1190,1530, 761,2080, 930,1264, 355, 435,1552, 644,1791, 987, # 3120 + 220,1364,1163,1121,1538, 306,2169,1327,1222, 546,2645, 218, 241, 610,1704,3321, # 3136 +1984,1839,1966,2528, 451,6155,2586,3707,2568, 907,3178, 254,2947, 186,1845,4650, # 3152 + 745, 432,1757, 428,1633, 888,2246,2221,2489,3611,2118,1258,1265, 956,3127,1784, # 3168 +4337,2490, 319, 510, 119, 457,3612, 274,2035,2007,4651,1409,3128, 970,2758, 590, # 3184 +2800, 661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111, 485,2491, # 3200 +1429,1156,6156,2548,2183,1495, 831,1840,2529,2446, 501,1657, 307,1894,3247,1341, # 3216 + 666, 899,2156,1539,2549,1559, 886, 349,2208,3081,2305,1736,3824,2170,2759,1014, # 3232 +1913,1386, 542,1397,2948, 490, 368, 716, 362, 159, 282,2569,1129,1658,1288,1750, # 3248 +2674, 276, 649,2016, 751,1496, 658,1818,1284,1862,2209,2087,2512,3451, 622,2834, # 3264 + 376, 117,1060,2053,1208,1721,1101,1443, 247,1250,3179,1792,3952,2760,2398,3953, # 3280 +6157,2144,3708, 446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082, 424,2222, # 3296 +1251,2449,2119,2836, 504,1581,4338, 602, 817, 857,3825,2349,2306, 357,3826,1470, # 3312 +1883,2883, 255, 958, 929,2917,3248, 302,4653,1050,1271,1751,2307,1952,1430,2697, # 3328 +2719,2359, 354,3180, 777, 158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232, # 3344 +3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428, 637, 931,2721,2145, # 3360 + 914,2550,2587, 81,2450, 612, 827,2646,1242,4655,1118,2884, 472,1855,3181,3533, # 3376 +3534, 569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152, # 3392 +1938, 134,1830, 471,3710,2276,1112,1535,3323,3453,3535, 982,1337,2950, 488, 826, # 3408 + 674,1058,1628,4120,2017, 522,2399, 211, 568,1367,3454, 350, 293,1872,1139,3249, # 3424 +1399,1946,3006,1300,2360,3324, 588, 736,6160,2606, 744, 669,3536,3828,6161,1358, # 3440 + 199, 723, 848, 933, 851,1939,1505,1514,1338,1618,1831,4656,1634,3613, 443,2740, # 3456 +3829, 717,1947, 491,1914,6162,2551,1542,4121,1025,6163,1099,1223, 198,3040,2722, # 3472 + 370, 410,1905,2589, 998,1248,3182,2380, 519,1449,4122,1710, 947, 928,1153,4341, # 3488 +2277, 344,2624,1511, 615, 105, 161,1212,1076,1960,3130,2054,1926,1175,1906,2473, # 3504 + 414,1873,2801,6164,2309, 315,1319,3325, 318,2018,2146,2157, 963, 631, 223,4342, # 3520 +4343,2675, 479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886, # 3536 +2184,1674,1330,1711,1635,1506, 799, 219,3250,3083,3954,1677,3713,3326,2081,3614, # 3552 +1652,2073,4657,1147,3041,1752, 643,1961, 147,1974,3955,6167,1716,2037, 918,3007, # 3568 +1994, 120,1537, 118, 609,3184,4345, 740,3455,1219, 332,1615,3830,6168,1621,2980, # 3584 +1582, 783, 212, 553,2350,3714,1349,2433,2082,4124, 889,6169,2310,1275,1410, 973, # 3600 + 166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658, 629, 822,3008, 763, 940, # 3616 +1990,2862, 439,2409,1566,1240,1622, 926,1282,1907,2764, 654,2210,1607, 327,1130, # 3632 +3956,1678,1623,6170,2434,2192, 686, 608,3831,3715, 903,3957,3042,6171,2741,1522, # 3648 +1915,1105,1555,2552,1359, 323,3251,4346,3457, 738,1354,2553,2311,2334,1828,2003, # 3664 +3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847, 520,1204,2607, # 3680 + 264,4659, 836,2677,2102, 600,4660,3833,2278,3084,6174,4347,3615,1342, 640, 532, # 3696 + 543,2608,1888,2400,2591,1009,4348,1497, 341,1737,3616,2723,1394, 529,3252,1321, # 3712 + 983,4661,1515,2120, 971,2592, 924, 287,1662,3186,4349,2700,4350,1519, 908,1948, # 3728 +2452, 156, 796,1629,1486,2223,2055, 694,4126,1259,1036,3392,1213,2249,2742,1889, # 3744 +1230,3958,1015, 910, 408, 559,3617,4662, 746, 725, 935,4663,3959,3009,1289, 563, # 3760 + 867,4664,3960,1567,2981,2038,2626, 988,2263,2381,4351, 143,2374, 704,1895,6175, # 3776 +1188,3716,2088, 673,3085,2362,4352, 484,1608,1921,2765,2918, 215, 904,3618,3537, # 3792 + 894, 509, 976,3043,2701,3961,4353,2837,2982, 498,6176,6177,1102,3538,1332,3393, # 3808 +1487,1636,1637, 233, 245,3962, 383, 650, 995,3044, 460,1520,1206,2352, 749,3327, # 3824 + 530, 700, 389,1438,1560,1773,3963,2264, 719,2951,2724,3834, 870,1832,1644,1000, # 3840 + 839,2474,3717, 197,1630,3394, 365,2886,3964,1285,2133, 734, 922, 818,1106, 732, # 3856 + 480,2083,1774,3458, 923,2279,1350, 221,3086, 85,2233,2234,3835,1585,3010,2147, # 3872 +1387,1705,2382,1619,2475, 133, 239,2802,1991,1016,2084,2383, 411,2838,1113, 651, # 3888 +1985,1160,3328, 990,1863,3087,1048,1276,2647, 265,2627,1599,3253,2056, 150, 638, # 3904 +2019, 656, 853, 326,1479, 680,1439,4354,1001,1759, 413,3459,3395,2492,1431, 459, # 3920 +4355,1125,3329,2265,1953,1450,2065,2863, 849, 351,2678,3131,3254,3255,1104,1577, # 3936 + 227,1351,1645,2453,2193,1421,2887, 812,2121, 634, 95,2435, 201,2312,4665,1646, # 3952 +1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189, # 3968 + 328,2679,1077,1940,1136, 558,1283, 964,1195, 621,2074,1199,1743,3460,3619,1896, # 3984 +1916,1890,3836,2952,1154,2112,1064, 862, 378,3011,2066,2113,2803,1568,2839,6178, # 4000 +3088,2919,1941,1660,2004,1992,2194, 142, 707,1590,1708,1624,1922,1023,1836,1233, # 4016 +1004,2313, 789, 741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721, 593, # 4032 +2840, 367,2920,1878,6180,3461,1521, 628,1168, 692,2211,2649, 300, 720,2067,2571, # 4048 +2953,3396, 959,2504,3966,3539,3462,1977, 701,6181, 954,1043, 800, 681, 183,3722, # 4064 +1803,1730,3540,4128,2103, 815,2314, 174, 467, 230,2454,1093,2134, 755,3541,3397, # 4080 +1141,1162,6182,1738,2039, 270,3256,2513,1005,1647,2185,3837, 858,1679,1897,1719, # 4096 +2954,2324,1806, 402, 670, 167,4129,1498,2158,2104, 750,6183, 915, 189,1680,1551, # 4112 + 455,4356,1501,2455, 405,1095,2955, 338,1586,1266,1819, 570, 641,1324, 237,1556, # 4128 +2650,1388,3723,6184,1368,2384,1343,1978,3089,2436, 879,3724, 792,1191, 758,3012, # 4144 +1411,2135,1322,4357, 240,4667,1848,3725,1574,6185, 420,3045,1546,1391, 714,4358, # 4160 +1967, 941,1864, 863, 664, 426, 560,1731,2680,1785,2864,1949,2363, 403,3330,1415, # 4176 +1279,2136,1697,2335, 204, 721,2097,3838, 90,6186,2085,2505, 191,3967, 124,2148, # 4192 +1376,1798,1178,1107,1898,1405, 860,4359,1243,1272,2375,2983,1558,2456,1638, 113, # 4208 +3621, 578,1923,2609, 880, 386,4130, 784,2186,2266,1422,2956,2172,1722, 497, 263, # 4224 +2514,1267,2412,2610, 177,2703,3542, 774,1927,1344, 616,1432,1595,1018, 172,4360, # 4240 +2325, 911,4361, 438,1468,3622, 794,3968,2024,2173,1681,1829,2957, 945, 895,3090, # 4256 + 575,2212,2476, 475,2401,2681, 785,2744,1745,2293,2555,1975,3133,2865, 394,4668, # 4272 +3839, 635,4131, 639, 202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457, # 4288 +3727,3134,4362, 843,2611, 437, 916,4669, 234, 769,1884,3046,3047,3623, 833,6187, # 4304 +1639,2250,2402,1355,1185,2010,2047, 999, 525,1732,1290,1488,2612, 948,1578,3728, # 4320 +2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336 +1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352 +2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512 +) + + diff --git a/Lib/site-packages/pip/_vendor/chardet/jpcntx.py b/Lib/site-packages/pip/_vendor/chardet/jpcntx.py new file mode 100644 index 0000000..20044e4 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/jpcntx.py @@ -0,0 +1,233 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + + +# This is hiragana 2-char sequence table, the number in each cell represents its frequency category +jp2CharContext = ( +(0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1), +(2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4), +(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2), +(0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,5,4,4,5,4,5,0,4,0,0,4,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,3,0,4,4,5,3,4,4,0,3,0,0,1,4), +(1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4), +(0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3), +(0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,3,3,4,4,4,4,5,4,2,0,3,3,2,4,3), +(0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3), +(0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4), +(0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3), +(2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4), +(0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3), +(0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5), +(0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3), +(2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5), +(0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4), +(1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4), +(0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3), +(0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3), +(0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3), +(0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5), +(0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4), +(0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5), +(0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3), +(0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4), +(0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4), +(0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4), +(0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1), +(0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), +(1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3), +(0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0), +(0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3), +(0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3), +(0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5), +(0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4), +(2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5), +(0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3), +(0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3), +(0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3), +(0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3), +(0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4), +(0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4), +(0,0,0,4,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2), +(0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3), +(0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3), +(0,0,0,0,0,0,0,0,0,0,3,0,2,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3), +(0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3), +(0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4), +(0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3), +(0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4), +(0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3), +(0,0,0,1,0,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3), +(0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4), +(0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4), +(0,0,0,3,0,3,0,0,0,0,3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3), +(2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4), +(0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4), +(0,3,0,3,0,1,0,0,0,1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3), +(0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4), +(0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4), +(1,4,0,4,0,3,0,1,0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4), +(0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3), +(0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2), +(0,2,0,3,0,4,0,4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2), +(0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3), +(0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3), +(0,4,0,5,0,4,0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5), +(0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3), +(0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4), +(1,3,0,4,0,2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4), +(0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(0,3,0,3,0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3), +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1), +(0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2), +(0,4,0,4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3), +(0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1), +) + +class JapaneseContextAnalysis(object): + NUM_OF_CATEGORY = 6 + DONT_KNOW = -1 + ENOUGH_REL_THRESHOLD = 100 + MAX_REL_THRESHOLD = 1000 + MINIMUM_DATA_THRESHOLD = 4 + + def __init__(self): + self._total_rel = None + self._rel_sample = None + self._need_to_skip_char_num = None + self._last_char_order = None + self._done = None + self.reset() + + def reset(self): + self._total_rel = 0 # total sequence received + # category counters, each integer counts sequence in its category + self._rel_sample = [0] * self.NUM_OF_CATEGORY + # if last byte in current buffer is not the last byte of a character, + # we need to know how many bytes to skip in next buffer + self._need_to_skip_char_num = 0 + self._last_char_order = -1 # The order of previous char + # If this flag is set to True, detection is done and conclusion has + # been made + self._done = False + + def feed(self, byte_str, num_bytes): + if self._done: + return + + # The buffer we got is byte oriented, and a character may span in more than one + # buffers. In case the last one or two byte in last buffer is not + # complete, we record how many byte needed to complete that character + # and skip these bytes here. We can choose to record those bytes as + # well and analyse the character once it is complete, but since a + # character will not make much difference, by simply skipping + # this character will simply our logic and improve performance. + i = self._need_to_skip_char_num + while i < num_bytes: + order, char_len = self.get_order(byte_str[i:i + 2]) + i += char_len + if i > num_bytes: + self._need_to_skip_char_num = i - num_bytes + self._last_char_order = -1 + else: + if (order != -1) and (self._last_char_order != -1): + self._total_rel += 1 + if self._total_rel > self.MAX_REL_THRESHOLD: + self._done = True + break + self._rel_sample[jp2CharContext[self._last_char_order][order]] += 1 + self._last_char_order = order + + def got_enough_data(self): + return self._total_rel > self.ENOUGH_REL_THRESHOLD + + def get_confidence(self): + # This is just one way to calculate confidence. It works well for me. + if self._total_rel > self.MINIMUM_DATA_THRESHOLD: + return (self._total_rel - self._rel_sample[0]) / self._total_rel + else: + return self.DONT_KNOW + + def get_order(self, byte_str): + return -1, 1 + +class SJISContextAnalysis(JapaneseContextAnalysis): + def __init__(self): + super(SJISContextAnalysis, self).__init__() + self._charset_name = "SHIFT_JIS" + + @property + def charset_name(self): + return self._charset_name + + def get_order(self, byte_str): + if not byte_str: + return -1, 1 + # find out current char's byte length + first_char = byte_str[0] + if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC): + char_len = 2 + if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): + self._charset_name = "CP932" + else: + char_len = 1 + + # return its order if it is hiragana + if len(byte_str) > 1: + second_char = byte_str[1] + if (first_char == 202) and (0x9F <= second_char <= 0xF1): + return second_char - 0x9F, char_len + + return -1, char_len + +class EUCJPContextAnalysis(JapaneseContextAnalysis): + def get_order(self, byte_str): + if not byte_str: + return -1, 1 + # find out current char's byte length + first_char = byte_str[0] + if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE): + char_len = 2 + elif first_char == 0x8F: + char_len = 3 + else: + char_len = 1 + + # return its order if it is hiragana + if len(byte_str) > 1: + second_char = byte_str[1] + if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3): + return second_char - 0xA1, char_len + + return -1, char_len + + diff --git a/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py b/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py new file mode 100644 index 0000000..2aa4fb2 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py @@ -0,0 +1,228 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Character Mapping Table: +# this table is modified base on win1251BulgarianCharToOrderMap, so +# only number <64 is sure valid + +Latin5_BulgarianCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40 +110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50 +253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60 +116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70 +194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209, # 80 +210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225, # 90 + 81,226,227,228,229,230,105,231,232,233,234,235,236, 45,237,238, # a0 + 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # b0 + 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,239, 67,240, 60, 56, # c0 + 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # d0 + 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,241, 42, 16, # e0 + 62,242,243,244, 58,245, 98,246,247,248,249,250,251, 91,252,253, # f0 +) + +win1251BulgarianCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40 +110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50 +253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60 +116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70 +206,207,208,209,210,211,212,213,120,214,215,216,217,218,219,220, # 80 +221, 78, 64, 83,121, 98,117,105,222,223,224,225,226,227,228,229, # 90 + 88,230,231,232,233,122, 89,106,234,235,236,237,238, 45,239,240, # a0 + 73, 80,118,114,241,242,243,244,245, 62, 58,246,247,248,249,250, # b0 + 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # c0 + 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,251, 67,252, 60, 56, # d0 + 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # e0 + 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,253, 42, 16, # f0 +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 96.9392% +# first 1024 sequences:3.0618% +# rest sequences: 0.2992% +# negative sequences: 0.0020% +BulgarianLangModel = ( +0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,3,3,3,3,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,2,2,1,2,2, +3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,0,1, +0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,0,3,1,0, +0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,2,3,2,2,1,3,3,3,3,2,2,2,1,1,2,0,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,2,3,2,2,3,3,1,1,2,3,3,2,3,3,3,3,2,1,2,0,2,0,3,0,0, +0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,1,3,3,3,3,3,2,3,2,3,3,3,3,3,2,3,3,1,3,0,3,0,2,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,1,3,3,2,3,2,2,2,0,0,2,0,2,0,2,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,3,3,1,2,2,3,2,1,1,2,0,2,0,0,0,0, +1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,2,3,3,1,2,3,2,2,2,3,3,3,3,3,2,2,3,1,2,0,2,1,2,0,0, +0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,1,3,3,3,3,3,2,3,3,3,2,3,3,2,3,2,2,2,3,1,2,0,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,3,3,3,1,1,1,2,2,1,3,1,3,2,2,3,0,0,1,0,1,0,1,0,0, +0,0,0,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,2,2,3,2,2,3,1,2,1,1,1,2,3,1,3,1,2,2,0,1,1,1,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,1,3,2,2,3,3,1,2,3,1,1,3,3,3,3,1,2,2,1,1,1,0,2,0,2,0,1, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,2,3,3,3,2,2,1,1,2,0,2,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,0,1,2,1,3,3,2,3,3,3,3,3,2,3,2,1,0,3,1,2,1,2,1,2,3,2,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,1,3,3,2,3,3,2,2,2,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,3,3,3,3,0,3,3,3,3,3,2,1,1,2,1,3,3,0,3,1,1,1,1,3,2,0,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,1,1,3,1,3,3,2,3,2,2,2,3,0,2,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,2,3,3,2,2,3,2,1,1,1,1,1,3,1,3,1,1,0,0,0,1,0,0,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,2,3,2,0,3,2,0,3,0,2,0,0,2,1,3,1,0,0,1,0,0,0,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,2,1,1,1,1,2,1,1,2,1,1,1,2,2,1,2,1,1,1,0,1,1,0,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,2,1,3,1,1,2,1,3,2,1,1,0,1,2,3,2,1,1,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,3,3,3,3,2,2,1,0,1,0,0,1,0,0,0,2,1,0,3,0,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,2,3,2,3,3,1,3,2,1,1,1,2,1,1,2,1,3,0,1,0,0,0,1,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,1,2,2,3,3,2,3,2,2,2,3,1,2,2,1,1,2,1,1,2,2,0,1,1,0,1,0,2,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,2,1,3,1,0,2,2,1,3,2,1,0,0,2,0,2,0,1,0,0,0,0,0,0,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,3,1,2,0,2,3,1,2,3,2,0,1,3,1,2,1,1,1,0,0,1,0,0,2,2,2,3, +2,2,2,2,1,2,1,1,2,2,1,1,2,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1, +3,3,3,3,3,2,1,2,2,1,2,0,2,0,1,0,1,2,1,2,1,1,0,0,0,1,0,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, +3,3,2,3,3,1,1,3,1,0,3,2,1,0,0,0,1,2,0,2,0,1,0,0,0,1,0,1,2,1,2,2, +1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,0,1,2,1,1,1,0,0,0,0,0,1,1,0,0, +3,1,0,1,0,2,3,2,2,2,3,2,2,2,2,2,1,0,2,1,2,1,1,1,0,1,2,1,2,2,2,1, +1,1,2,2,2,2,1,2,1,1,0,1,2,1,2,2,2,1,1,1,0,1,1,1,1,2,0,1,0,0,0,0, +2,3,2,3,3,0,0,2,1,0,2,1,0,0,0,0,2,3,0,2,0,0,0,0,0,1,0,0,2,0,1,2, +2,1,2,1,2,2,1,1,1,2,1,1,1,0,1,2,2,1,1,1,1,1,0,1,1,1,0,0,1,2,0,0, +3,3,2,2,3,0,2,3,1,1,2,0,0,0,1,0,0,2,0,2,0,0,0,1,0,1,0,1,2,0,2,2, +1,1,1,1,2,1,0,1,2,2,2,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0, +2,3,2,3,3,0,0,3,0,1,1,0,1,0,0,0,2,2,1,2,0,0,0,0,0,0,0,0,2,0,1,2, +2,2,1,1,1,1,1,2,2,2,1,0,2,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0, +3,3,3,3,2,2,2,2,2,0,2,1,1,1,1,2,1,2,1,1,0,2,0,1,0,1,0,0,2,0,1,2, +1,1,1,1,1,1,1,2,2,1,1,0,2,0,1,0,2,0,0,1,1,1,0,0,2,0,0,0,1,1,0,0, +2,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,1,2,0,1,2, +2,2,2,1,1,2,1,1,2,2,2,1,2,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0, +2,3,3,3,3,0,2,2,0,2,1,0,0,0,1,1,1,2,0,2,0,0,0,3,0,0,0,0,2,0,2,2, +1,1,1,2,1,2,1,1,2,2,2,1,2,0,1,1,1,0,1,1,1,1,0,2,1,0,0,0,1,1,0,0, +2,3,3,3,3,0,2,1,0,0,2,0,0,0,0,0,1,2,0,2,0,0,0,0,0,0,0,0,2,0,1,2, +1,1,1,2,1,1,1,1,2,2,2,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0, +3,3,2,2,3,0,1,0,1,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,1,0,2,2, +1,1,1,1,1,2,1,1,2,2,1,2,2,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0, +3,1,0,1,0,2,2,2,2,3,2,1,1,1,2,3,0,0,1,0,2,1,1,0,1,1,1,1,2,1,1,1, +1,2,2,1,2,1,2,2,1,1,0,1,2,1,2,2,1,1,1,0,0,1,1,1,2,1,0,1,0,0,0,0, +2,1,0,1,0,3,1,2,2,2,2,1,2,2,1,1,1,0,2,1,2,2,1,1,2,1,1,0,2,1,1,1, +1,2,2,2,2,2,2,2,1,2,0,1,1,0,2,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0, +2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,2,3,2,2,1,1,1,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,3,2,0,1,2,0,1,2,1,1,0,1,0,1,2,1,2,0,0,0,1,1,0,0,0,1,0,0,2, +1,1,0,0,1,1,0,1,1,1,1,0,2,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0, +2,0,0,0,0,1,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1, +1,2,2,2,2,1,1,2,1,2,1,1,1,0,2,1,2,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0, +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0, +1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,3,2,0,0,0,0,1,0,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,1,0,1,2, +1,1,1,1,1,1,0,0,2,2,2,2,2,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1, +2,3,1,2,1,0,1,1,0,2,2,2,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,2, +1,1,1,1,2,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0, +2,2,2,2,2,0,0,2,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,0,2,2, +1,1,1,1,1,0,0,1,2,1,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,2,0,0,2,0,1,1,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1, +0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,3,2,0,0,1,0,0,1,0,0,0,0,0,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,2, +1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +2,1,2,2,2,1,2,1,2,2,1,1,2,1,1,1,0,1,1,1,1,2,0,1,0,1,1,1,1,0,1,1, +1,1,2,1,1,1,1,1,1,0,0,1,2,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0, +1,0,0,1,3,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,1,0,0,1,0,2,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,1, +0,2,0,1,0,0,1,1,2,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,2,0,1,1,0,2,1,0,1,1,1,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,1, +0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,2,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1, +0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +2,0,1,0,0,1,2,1,1,1,1,1,1,2,2,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0, +1,1,2,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,1,2,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1, +0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0, +1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,2,0,0,2,0,1,0,0,1,0,0,1, +1,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0, +1,1,1,1,1,1,1,2,0,0,0,0,0,0,2,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +) + +Latin5BulgarianModel = { + 'char_to_order_map': Latin5_BulgarianCharToOrderMap, + 'precedence_matrix': BulgarianLangModel, + 'typical_positive_ratio': 0.969392, + 'keep_english_letter': False, + 'charset_name': "ISO-8859-5", + 'language': 'Bulgairan', +} + +Win1251BulgarianModel = { + 'char_to_order_map': win1251BulgarianCharToOrderMap, + 'precedence_matrix': BulgarianLangModel, + 'typical_positive_ratio': 0.969392, + 'keep_english_letter': False, + 'charset_name': "windows-1251", + 'language': 'Bulgarian', +} diff --git a/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py b/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py new file mode 100644 index 0000000..e5f9a1f --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py @@ -0,0 +1,333 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# KOI8-R language model +# Character Mapping Table: +KOI8R_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 +191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, # 80 +207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, # 90 +223,224,225, 68,226,227,228,229,230,231,232,233,234,235,236,237, # a0 +238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253, # b0 + 27, 3, 21, 28, 13, 2, 39, 19, 26, 4, 23, 11, 8, 12, 5, 1, # c0 + 15, 16, 9, 7, 6, 14, 24, 10, 17, 18, 20, 25, 30, 29, 22, 54, # d0 + 59, 37, 44, 58, 41, 48, 53, 46, 55, 42, 60, 36, 49, 38, 31, 34, # e0 + 35, 43, 45, 32, 40, 52, 56, 33, 61, 62, 51, 57, 47, 63, 50, 70, # f0 +) + +win1251_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 +191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, +207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, +223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, +239,240,241,242,243,244,245,246, 68,247,248,249,250,251,252,253, + 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, + 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, + 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, + 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, +) + +latin5_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 +191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, +207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, +223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, + 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, + 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, + 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, + 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, +239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, +) + +macCyrillic_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 + 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, + 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, +191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, +207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, +223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, +239,240,241,242,243,244,245,246,247,248,249,250,251,252, 68, 16, + 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, + 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27,255, +) + +IBM855_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 +191,192,193,194, 68,195,196,197,198,199,200,201,202,203,204,205, +206,207,208,209,210,211,212,213,214,215,216,217, 27, 59, 54, 70, + 3, 37, 21, 44, 28, 58, 13, 41, 2, 48, 39, 53, 19, 46,218,219, +220,221,222,223,224, 26, 55, 4, 42,225,226,227,228, 23, 60,229, +230,231,232,233,234,235, 11, 36,236,237,238,239,240,241,242,243, + 8, 49, 12, 38, 5, 31, 1, 34, 15,244,245,246,247, 35, 16,248, + 43, 9, 45, 7, 32, 6, 40, 14, 52, 24, 56, 10, 33, 17, 61,249, +250, 18, 62, 20, 51, 25, 57, 30, 47, 29, 63, 22, 50,251,252,255, +) + +IBM866_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 +155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 +253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 + 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 + 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, + 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, + 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, +191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, +207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, +223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, + 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, +239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 97.6601% +# first 1024 sequences: 2.3389% +# rest sequences: 0.1237% +# negative sequences: 0.0009% +RussianLangModel = ( +0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,1,3,3,3,2,3,2,3,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,2,2,2,2,2,0,0,2, +3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,2,3,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,2,3,3,1,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1, +0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1, +0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,2,2,2,3,1,3,3,1,3,3,3,3,2,2,3,0,2,2,2,3,3,2,1,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,3,3,3,3,3,2,2,3,2,3,3,3,2,1,2,2,0,1,2,2,2,2,2,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,0,2,2,3,3,2,1,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,3,3,1,2,3,2,2,3,2,3,3,3,3,2,2,3,0,3,2,2,3,1,1,1,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,2,2,0,3,3,3,2,2,2,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,2,3,2,2,0,1,3,2,1,2,2,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,2,1,1,3,0,1,1,1,1,2,1,1,0,2,2,2,1,2,0,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,3,3,2,2,2,2,1,3,2,3,2,3,2,1,2,2,0,1,1,2,1,2,1,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,2,3,3,3,2,2,2,2,0,2,2,2,2,3,1,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +3,2,3,2,2,3,3,3,3,3,3,3,3,3,1,3,2,0,0,3,3,3,3,2,3,3,3,3,2,3,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,3,3,3,3,3,2,2,3,3,0,2,1,0,3,2,3,2,3,0,0,1,2,0,0,1,0,1,2,1,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,3,0,2,3,3,3,3,2,3,3,3,3,1,2,2,0,0,2,3,2,2,2,3,2,3,2,2,3,0,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,2,3,0,2,3,2,3,0,1,2,3,3,2,0,2,3,0,0,2,3,2,2,0,1,3,1,3,2,2,1,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,3,0,2,3,3,3,3,3,3,3,3,2,1,3,2,0,0,2,2,3,3,3,2,3,3,0,2,2,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,2,3,3,2,2,2,3,3,0,0,1,1,1,1,1,2,0,0,1,1,1,1,0,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,0,3,2,3,3,2,3,2,0,2,1,0,1,1,0,1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,3,3,3,2,2,2,2,3,1,3,2,3,1,1,2,1,0,2,2,2,2,1,3,1,0, +0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +2,2,3,3,3,3,3,1,2,2,1,3,1,0,3,0,0,3,0,0,0,1,1,0,1,2,1,0,0,0,0,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,2,2,1,1,3,3,3,2,2,1,2,2,3,1,1,2,0,0,2,2,1,3,0,0,2,1,1,2,1,1,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,2,3,3,3,3,1,2,2,2,1,2,1,3,3,1,1,2,1,2,1,2,2,0,2,0,0,1,1,0,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,3,3,3,3,3,2,1,3,2,2,3,2,0,3,2,0,3,0,1,0,1,1,0,0,1,1,1,1,0,1,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,2,3,3,3,2,2,2,3,3,1,2,1,2,1,0,1,0,1,1,0,1,0,0,2,1,1,1,0,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +3,1,1,2,1,2,3,3,2,2,1,2,2,3,0,2,1,0,0,2,2,3,2,1,2,2,2,2,2,3,1,0, +0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,1,1,0,1,1,2,2,1,1,3,0,0,1,3,1,1,1,0,0,0,1,0,1,1,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,1,3,3,3,2,0,0,0,2,1,0,1,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,1,0,0,2,3,2,2,2,1,2,2,2,1,2,1,0,0,1,1,1,0,2,0,1,1,1,0,0,1,1, +1,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, +2,3,3,3,3,0,0,0,0,1,0,0,0,0,3,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,1,1, +1,0,1,0,1,2,0,0,1,1,2,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0, +2,2,3,2,2,2,3,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,1,0,1,1,1,0,2,1, +1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0, +3,3,3,2,2,2,2,3,2,2,1,1,2,2,2,2,1,1,3,1,2,1,2,0,0,1,1,0,1,0,2,1, +1,1,1,1,1,2,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0, +2,0,0,1,0,3,2,2,2,2,1,2,1,2,1,2,0,0,0,2,1,2,2,1,1,2,2,0,1,1,0,2, +1,1,1,1,1,0,1,1,1,2,1,1,1,2,1,0,1,2,1,1,1,1,0,1,1,1,0,0,1,0,0,1, +1,3,2,2,2,1,1,1,2,3,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,1,0,0,0,0,1,1, +1,0,1,1,0,1,0,1,1,0,1,1,0,2,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, +2,3,2,3,2,1,2,2,2,2,1,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,2,1, +1,1,2,1,0,2,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0, +3,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,0,0,0,2,1,2,1,1,1,2,2,0,0,0,1,2, +1,1,1,1,1,0,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1, +2,3,2,3,3,2,0,1,1,1,0,0,1,0,2,0,1,1,3,1,0,0,0,0,0,0,0,1,0,0,2,1, +1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,0, +2,3,3,3,3,1,2,2,2,2,0,1,1,0,2,1,1,1,2,1,0,1,1,0,0,1,0,1,0,0,2,0, +0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,3,3,3,2,0,0,1,1,2,2,1,0,0,2,0,1,1,3,0,0,1,0,0,0,0,0,1,0,1,2,1, +1,1,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0, +1,3,2,3,2,1,0,0,2,2,2,0,1,0,2,0,1,1,1,0,1,0,0,0,3,0,1,1,0,0,2,1, +1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,2,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0, +3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,1,0,0,0,2,2,2,0,0,0,1,2,1,0,1,0,1, +2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1, +3,0,0,0,0,2,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1, +1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1, +1,3,3,2,2,0,0,0,2,2,0,0,0,1,2,0,1,1,2,0,0,0,0,0,0,0,0,1,0,0,2,1, +0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0, +2,3,2,3,2,0,0,0,0,1,1,0,0,0,2,0,2,0,2,0,0,0,0,0,1,0,0,1,0,0,1,1, +1,1,2,0,1,2,1,0,1,1,2,1,1,1,1,1,2,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0, +1,3,2,2,2,1,0,0,2,2,1,0,1,2,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1, +0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,1,0,2,3,1,2,2,2,2,2,2,1,1,0,0,0,1,0,1,0,2,1,1,1,0,0,0,0,1, +1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +2,0,2,0,0,1,0,3,2,1,2,1,2,2,0,1,0,0,0,2,1,0,0,2,1,1,1,1,0,2,0,2, +2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1, +1,2,2,2,2,1,0,0,1,0,0,0,0,0,2,0,1,1,1,1,0,0,0,0,1,0,1,2,0,0,2,0, +1,0,1,1,1,2,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0, +2,1,2,2,2,0,3,0,1,1,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0, +1,2,2,3,2,2,0,0,1,1,2,0,1,2,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1, +0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, +2,2,1,1,2,1,2,2,2,2,2,1,2,2,0,1,0,0,0,1,2,2,2,1,2,1,1,1,1,1,2,1, +1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1, +1,2,2,2,2,0,1,0,2,2,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0, +0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,2,0,0,0,2,2,2,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1, +0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,2,0,0,0,0,1,0,0,1,1,2,0,0,0,0,1,0,1,0,0,1,0,0,2,0,0,0,1, +0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, +1,2,2,2,1,1,2,0,2,1,1,1,1,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1, +0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +1,0,2,1,2,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0, +0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0, +1,0,0,0,0,2,0,1,2,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1, +0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1, +2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +1,1,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0, +0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +) + +Koi8rModel = { + 'char_to_order_map': KOI8R_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "KOI8-R", + 'language': 'Russian', +} + +Win1251CyrillicModel = { + 'char_to_order_map': win1251_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "windows-1251", + 'language': 'Russian', +} + +Latin5CyrillicModel = { + 'char_to_order_map': latin5_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "ISO-8859-5", + 'language': 'Russian', +} + +MacCyrillicModel = { + 'char_to_order_map': macCyrillic_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "MacCyrillic", + 'language': 'Russian', +} + +Ibm866Model = { + 'char_to_order_map': IBM866_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "IBM866", + 'language': 'Russian', +} + +Ibm855Model = { + 'char_to_order_map': IBM855_char_to_order_map, + 'precedence_matrix': RussianLangModel, + 'typical_positive_ratio': 0.976601, + 'keep_english_letter': False, + 'charset_name': "IBM855", + 'language': 'Russian', +} diff --git a/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py b/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py new file mode 100644 index 0000000..5332221 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py @@ -0,0 +1,225 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Character Mapping Table: +Latin7_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40 + 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50 +253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60 + 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90 +253,233, 90,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0 +253,253,253,253,247,248, 61, 36, 46, 71, 73,253, 54,253,108,123, # b0 +110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0 + 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0 +124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0 + 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0 +) + +win1253_char_to_order_map = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40 + 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50 +253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60 + 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90 +253,233, 61,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0 +253,253,253,253,247,253,253, 36, 46, 71, 73,253, 54,253,108,123, # b0 +110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0 + 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0 +124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0 + 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0 +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 98.2851% +# first 1024 sequences:1.7001% +# rest sequences: 0.0359% +# negative sequences: 0.0148% +GreekLangModel = ( +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,3,2,2,3,3,3,3,3,3,3,3,1,3,3,3,0,2,2,3,3,0,3,0,3,2,0,3,3,3,0, +3,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,0,3,3,0,3,2,3,3,0,3,2,3,3,3,0,0,3,0,3,0,3,3,2,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, +0,2,3,2,2,3,3,3,3,3,3,3,3,0,3,3,3,3,0,2,3,3,0,3,3,3,3,2,3,3,3,0, +2,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,3,3,3,2,3,3,2,3,3,2,0, +0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,2,3,3,0, +2,0,1,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,2,3,0,0,0,0,3,3,0,3,1,3,3,3,0,3,3,0,3,3,3,3,0,0,0,0, +2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,0,3,0,3,3,3,3,3,0,3,2,2,2,3,0,2,3,3,3,3,3,2,3,3,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,3,2,2,2,3,3,3,3,0,3,1,3,3,3,3,2,3,3,3,3,3,3,3,2,2,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,2,0,3,0,0,0,3,3,2,3,3,3,3,3,0,0,3,2,3,0,2,3,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,0,3,3,3,3,0,0,3,3,0,2,3,0,3,0,3,3,3,0,0,3,0,3,0,2,2,3,3,0,0, +0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,2,0,3,2,3,3,3,3,0,3,3,3,3,3,0,3,3,2,3,2,3,3,2,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,2,3,2,3,3,3,3,3,3,0,2,3,2,3,2,2,2,3,2,3,3,2,3,0,2,2,2,3,0, +2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,3,0,0,0,3,3,3,2,3,3,0,0,3,0,3,0,0,0,3,2,0,3,0,3,0,0,2,0,2,0, +0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,0,0,0,3,3,0,3,3,3,0,0,1,2,3,0, +3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,2,0,0,3,2,2,3,3,0,3,3,3,3,3,2,1,3,0,3,2,3,3,2,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,3,3,0,2,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,3,0,3,2,3,0,0,3,3,3,0, +3,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,0,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,2,0,3,2,3,0,0,3,2,3,0, +2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,3,1,2,2,3,3,3,3,3,3,0,2,3,0,3,0,0,0,3,3,0,3,0,2,0,0,2,3,1,0, +2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,0,3,3,3,3,0,3,0,3,3,2,3,0,3,3,3,3,3,3,0,3,3,3,0,2,3,0,0,3,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,0,3,3,3,0,0,3,0,0,0,3,3,0,3,0,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,3,0,0,0,3,3,3,3,3,3,0,0,3,0,2,0,0,0,3,3,0,3,0,3,0,0,2,0,2,0, +0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,3,0,3,0,2,0,3,2,0,3,2,3,2,3,0,0,3,2,3,2,3,3,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,3,0,0,2,3,3,3,3,3,0,0,0,3,0,2,1,0,0,3,2,2,2,0,3,0,0,2,2,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,0,3,3,3,2,0,3,0,3,0,3,3,0,2,1,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2,3,3,3,0,3,3,3,3,3,3,0,2,3,0,3,0,0,0,2,1,0,2,2,3,0,0,2,2,2,0, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,3,0,0,2,3,3,3,2,3,0,0,1,3,0,2,0,0,0,0,3,0,1,0,2,0,0,1,1,1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,3,1,0,3,0,0,0,3,2,0,3,2,3,3,3,0,0,3,0,3,2,2,2,1,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,0,3,3,3,0,0,3,0,0,0,0,2,0,2,3,3,2,2,2,2,3,0,2,0,2,2,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,3,3,3,2,0,0,0,0,0,0,2,3,0,2,0,2,3,2,0,0,3,0,3,0,3,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,3,2,3,3,2,2,3,0,2,0,3,0,0,0,2,0,0,0,0,1,2,0,2,0,2,0, +0,2,0,2,0,2,2,0,0,1,0,2,2,2,0,2,2,2,0,2,2,2,0,0,2,0,0,1,0,0,0,0, +0,2,0,3,3,2,0,0,0,0,0,0,1,3,0,2,0,2,2,2,0,0,2,0,3,0,0,2,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,0,2,3,2,0,2,2,0,2,0,2,2,0,2,0,2,2,2,0,0,0,0,0,0,2,3,0,0,0,2, +0,1,2,0,0,0,0,2,2,0,0,0,2,1,0,2,2,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0, +0,0,2,1,0,2,3,2,2,3,2,3,2,0,0,3,3,3,0,0,3,2,0,0,0,1,1,0,2,0,2,2, +0,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2,2,2,0,0,2,0,0,0,2,0,1,0,0,0,0, +0,3,0,3,3,2,2,0,3,0,0,0,2,2,0,2,2,2,1,2,0,0,1,2,2,0,0,3,0,0,0,2, +0,1,2,0,0,0,1,2,0,0,0,0,0,0,0,2,2,0,1,0,0,2,0,0,0,2,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2,3,3,2,2,0,0,0,2,0,2,3,3,0,2,0,0,0,0,0,0,2,2,2,0,2,2,0,2,0,2, +0,2,2,0,0,2,2,2,2,1,0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0, +0,2,0,3,2,3,0,0,0,3,0,0,2,2,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,0,2, +0,0,2,2,0,0,2,2,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2,0,0,3,2,0,2,2,2,2,2,0,0,0,2,0,0,0,0,2,0,1,0,0,2,0,1,0,0,0, +0,2,2,2,0,2,2,0,1,2,0,2,2,2,0,2,2,2,2,1,2,2,0,0,2,0,0,0,0,0,0,0, +0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +0,2,0,2,0,2,2,0,0,0,0,1,2,1,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,3,2,3,0,0,2,0,0,0,2,2,0,2,0,0,0,1,0,0,2,0,2,0,2,2,0,0,0,0, +0,0,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, +0,2,2,3,2,2,0,0,0,0,0,0,1,3,0,2,0,2,2,0,0,0,1,0,2,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2,0,2,0,3,2,0,2,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +0,0,2,0,0,0,0,1,1,0,0,2,1,2,0,2,2,0,1,0,0,1,0,0,0,2,0,0,0,0,0,0, +0,3,0,2,2,2,0,0,2,0,0,0,2,0,0,0,2,3,0,2,0,0,0,0,0,0,2,2,0,0,0,2, +0,1,2,0,0,0,1,2,2,1,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2,1,2,0,2,2,0,2,0,0,2,0,0,0,0,1,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0, +0,0,2,0,0,0,3,1,2,2,0,2,0,0,0,0,2,0,0,0,2,0,0,3,0,0,0,0,2,2,2,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2,1,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,2, +0,2,2,0,0,2,2,2,2,2,0,1,2,0,0,0,2,2,0,1,0,2,0,0,2,2,0,0,0,0,0,0, +0,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2, +0,1,2,0,0,0,0,2,2,1,0,1,0,1,0,2,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0, +0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,2, +0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0, +0,2,2,2,2,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,1, +0,0,2,0,0,0,0,1,2,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0, +0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,2, +0,0,1,0,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, +0,3,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,2, +0,0,2,0,0,0,0,2,2,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2,0,2,2,1,0,0,0,0,0,0,2,0,0,2,0,2,2,2,0,0,0,0,0,0,2,0,0,0,0,2, +0,0,2,0,0,2,0,2,2,0,0,0,0,2,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0, +0,0,3,0,0,0,2,2,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0, +0,2,2,2,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1, +0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +0,2,0,0,0,2,0,0,0,0,0,1,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,0,0,0, +0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,2,0,2,0,0,0, +0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +) + +Latin7GreekModel = { + 'char_to_order_map': Latin7_char_to_order_map, + 'precedence_matrix': GreekLangModel, + 'typical_positive_ratio': 0.982851, + 'keep_english_letter': False, + 'charset_name': "ISO-8859-7", + 'language': 'Greek', +} + +Win1253GreekModel = { + 'char_to_order_map': win1253_char_to_order_map, + 'precedence_matrix': GreekLangModel, + 'typical_positive_ratio': 0.982851, + 'keep_english_letter': False, + 'charset_name': "windows-1253", + 'language': 'Greek', +} diff --git a/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py b/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py new file mode 100644 index 0000000..58f4c87 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py @@ -0,0 +1,200 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Simon Montagu +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Shoshannah Forbes - original C code (?) +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Windows-1255 language model +# Character Mapping Table: +WIN1255_CHAR_TO_ORDER_MAP = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 69, 91, 79, 80, 92, 89, 97, 90, 68,111,112, 82, 73, 95, 85, # 40 + 78,121, 86, 71, 67,102,107, 84,114,103,115,253,253,253,253,253, # 50 +253, 50, 74, 60, 61, 42, 76, 70, 64, 53,105, 93, 56, 65, 54, 49, # 60 + 66,110, 51, 43, 44, 63, 81, 77, 98, 75,108,253,253,253,253,253, # 70 +124,202,203,204,205, 40, 58,206,207,208,209,210,211,212,213,214, +215, 83, 52, 47, 46, 72, 32, 94,216,113,217,109,218,219,220,221, + 34,116,222,118,100,223,224,117,119,104,125,225,226, 87, 99,227, +106,122,123,228, 55,229,230,101,231,232,120,233, 48, 39, 57,234, + 30, 59, 41, 88, 33, 37, 36, 31, 29, 35,235, 62, 28,236,126,237, +238, 38, 45,239,240,241,242,243,127,244,245,246,247,248,249,250, + 9, 8, 20, 16, 3, 2, 24, 14, 22, 1, 25, 15, 4, 11, 6, 23, + 12, 19, 13, 26, 18, 27, 21, 17, 7, 10, 5,251,252,128, 96,253, +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 98.4004% +# first 1024 sequences: 1.5981% +# rest sequences: 0.087% +# negative sequences: 0.0015% +HEBREW_LANG_MODEL = ( +0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0, +3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2, +1,2,1,2,1,2,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2, +1,2,1,3,1,1,0,0,2,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,1,2,2,1,3, +1,2,1,1,2,2,0,0,2,2,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,2,2,2,3,2, +1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,2,2,2,1,2,2,2,2, +1,2,1,1,2,2,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,2,2,2,2,2, +0,2,0,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,2,2,2, +0,2,1,2,2,2,0,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,2,3,2,2,2, +1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0, +3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,2,0,2, +0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,2,2,3,2,1,2,1,1,1, +0,1,1,1,1,1,3,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0, +0,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2, +0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,2,3,3,2,3,3,3,3,2,3,2,1,2,0,2,1,2, +0,2,0,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0, +3,3,3,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,2,3,2,3,2,2,3,1,2,2,0,2,2,2, +0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,2,2,3,3,3,3,1,3,2,2,2, +0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,2,3,2,2,2,1,2,2,0,2,2,2,2, +0,2,0,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,1,3,2,3,3,2,3,3,2,2,1,2,2,2,2,2,2, +0,2,1,2,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,2,3,2,3,3,2,3,3,3,3,2,3,2,3,3,3,3,3,2,2,2,2,2,2,2,1, +0,2,0,1,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,2,1,2,3,3,3,3,3,3,3,2,3,2,3,2,1,2,3,0,2,1,2,2, +0,2,1,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0, +3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,1,3,1,2,2,2,1,2,3,3,1,2,1,2,2,2,2, +0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,0,2,3,3,3,1,3,3,3,1,2,2,2,2,1,1,2,2,2,2,2,2, +0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,2,3,3,3,2,2,3,3,3,2,1,2,3,2,3,2,2,2,2,1,2,1,1,1,2,2, +0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0, +1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,2,3,3,2,3,1,2,2,2,2,3,2,3,1,1,2,2,1,2,2,1,1,0,2,2,2,2, +0,1,0,1,2,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, +3,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0, +0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +3,2,2,1,2,2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,0,3,3,3, +0,3,0,2,2,2,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,1,1,1,2,0,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,0, +0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,0,2,1,0, +0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +0,3,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,1,0,1,1,1,1,0, +0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,2,1,1,1,1,2,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0, +0,0,2,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0, +2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,1,1,1,0,0,0,0, +0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,0,1,0,1, +0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,3,1,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,1,2,1,1,0,1,0,1, +0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,1,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2, +0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0, +0,1,1,1,2,1,2,2,2,0,2,0,2,0,1,1,2,1,1,1,1,2,1,0,1,1,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,1,0,0,0,0,0,1,0,1,2,2,0,1,0,0,1,1,2,2,1,2,0,2,0,0,0,1,2,0,1, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2,0,2,1,2,0,2,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,1,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,1,2,2,0,0,1,0,0,0,1,0,0,1, +1,1,2,1,0,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,2,1, +0,2,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1, +2,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,1,2,1,1,2,0,1,0,0,0,1,1,0,1, +1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,0,0,2,1,1,2,0,2,0,0,0,1,1,0,1, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,2,2,1,2,1,1,0,1,0,0,0,1,1,0,1, +2,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,0,1, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,2,1,1,1,0,2,1,1,0,0,0,2,1,0,1, +1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,0,2,1,1,0,1,0,0,0,1,1,0,1, +2,2,1,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,0,1,2,1,0,2,0,0,0,1,1,0,1, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0, +0,1,0,0,2,0,2,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1, +1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,2,1,1,1,1,1,0,1,0,0,0,0,1,0,1, +0,1,1,1,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0, +) + +Win1255HebrewModel = { + 'char_to_order_map': WIN1255_CHAR_TO_ORDER_MAP, + 'precedence_matrix': HEBREW_LANG_MODEL, + 'typical_positive_ratio': 0.984004, + 'keep_english_letter': False, + 'charset_name': "windows-1255", + 'language': 'Hebrew', +} diff --git a/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py b/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py new file mode 100644 index 0000000..bb7c095 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py @@ -0,0 +1,225 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Character Mapping Table: +Latin2_HungarianCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47, + 46, 71, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253, +253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8, + 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253, +159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174, +175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190, +191,192,193,194,195,196,197, 75,198,199,200,201,202,203,204,205, + 79,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220, +221, 51, 81,222, 78,223,224,225,226, 44,227,228,229, 61,230,231, +232,233,234, 58,235, 66, 59,236,237,238, 60, 69, 63,239,240,241, + 82, 14, 74,242, 70, 80,243, 72,244, 15, 83, 77, 84, 30, 76, 85, +245,246,247, 25, 73, 42, 24,248,249,250, 31, 56, 29,251,252,253, +) + +win1250HungarianCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47, + 46, 72, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253, +253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8, + 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253, +161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176, +177,178,179,180, 78,181, 69,182,183,184,185,186,187,188,189,190, +191,192,193,194,195,196,197, 76,198,199,200,201,202,203,204,205, + 81,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220, +221, 51, 83,222, 80,223,224,225,226, 44,227,228,229, 61,230,231, +232,233,234, 58,235, 66, 59,236,237,238, 60, 70, 63,239,240,241, + 84, 14, 75,242, 71, 82,243, 73,244, 15, 85, 79, 86, 30, 77, 87, +245,246,247, 25, 74, 42, 24,248,249,250, 31, 56, 29,251,252,253, +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 94.7368% +# first 1024 sequences:5.2623% +# rest sequences: 0.8894% +# negative sequences: 0.0009% +HungarianLangModel = ( +0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,3,3,1,1,2,2,2,2,2,1,2, +3,2,2,3,3,3,3,3,2,3,3,3,3,3,3,1,2,3,3,3,3,2,3,3,1,1,3,3,0,1,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, +3,2,1,3,3,3,3,3,2,3,3,3,3,3,1,1,2,3,3,3,3,3,3,3,1,1,3,2,0,1,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,1,1,2,3,3,3,1,3,3,3,3,3,1,3,3,2,2,0,3,2,3, +0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,3,3,2,3,3,2,2,3,2,3,2,0,3,2,2, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, +3,3,3,3,3,3,2,3,3,3,3,3,2,3,3,3,1,2,3,2,2,3,1,2,3,3,2,2,0,3,3,3, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,0,2,3,2, +0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,3,2,1,3,2,2,3,2,1,3,2,2,1,0,3,3,1, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,2,2,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,3,2,2,3,1,1,3,2,0,1,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,1,3,3,3,3,3,2,2,1,3,3,3,0,1,1,2, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,2,0,3,2,3, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0, +3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,1,3,2,2,2,3,1,1,3,3,1,1,0,3,3,2, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,2,3,3,3,3,3,1,2,3,2,2,0,2,2,2, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,3,3,2,2,2,3,1,3,3,2,2,1,3,3,3,1,1,3,1,2,3,2,3,2,2,2,1,0,2,2,2, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, +3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,2,2,3,2,1,0,3,2,0,1,1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,1,0,3,3,3,3,0,2,3,0,0,2,1,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,2,2,3,3,2,2,2,2,3,3,0,1,2,3,2,3,2,2,3,2,1,2,0,2,2,2, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, +3,3,3,3,3,3,1,2,3,3,3,2,1,2,3,3,2,2,2,3,2,3,3,1,3,3,1,1,0,2,3,2, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,3,3,1,2,2,2,2,3,3,3,1,1,1,3,3,1,1,3,1,1,3,2,1,2,3,1,1,0,2,2,2, +0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,3,3,2,1,2,1,1,3,3,1,1,1,1,3,3,1,1,2,2,1,2,1,1,2,2,1,1,0,2,2,1, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,3,3,1,1,2,1,1,3,3,1,0,1,1,3,3,2,0,1,1,2,3,1,0,2,2,1,0,0,1,3,2, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,2,1,3,3,3,3,3,1,2,3,2,3,3,2,1,1,3,2,3,2,1,2,2,0,1,2,1,0,0,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,3,3,2,2,2,2,3,1,2,2,1,1,3,3,0,3,2,1,2,3,2,1,3,3,1,1,0,2,1,3, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,3,3,2,2,2,3,2,3,3,3,2,1,1,3,3,1,1,1,2,2,3,2,3,2,2,2,1,0,2,2,1, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +1,0,0,3,3,3,3,3,0,0,3,3,2,3,0,0,0,2,3,3,1,0,1,2,0,0,1,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,2,3,3,3,3,3,1,2,3,3,2,2,1,1,0,3,3,2,2,1,2,2,1,0,2,2,0,1,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,2,2,1,3,1,2,3,3,2,2,1,1,2,2,1,1,1,1,3,2,1,1,1,1,2,1,0,1,2,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +2,3,3,1,1,1,1,1,3,3,3,0,1,1,3,3,1,1,1,1,1,2,2,0,3,1,1,2,0,2,1,1, +0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, +3,1,0,1,2,1,2,2,0,1,2,3,1,2,0,0,0,2,1,1,1,1,1,2,0,0,1,1,0,0,0,0, +1,2,1,2,2,2,1,2,1,2,0,2,0,2,2,1,1,2,1,1,2,1,1,1,0,1,0,0,0,1,1,0, +1,1,1,2,3,2,3,3,0,1,2,2,3,1,0,1,0,2,1,2,2,0,1,1,0,0,1,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,3,3,2,2,1,0,0,3,2,3,2,0,0,0,1,1,3,0,0,1,1,0,0,2,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,1,2,2,3,3,1,0,1,3,2,3,1,1,1,0,1,1,1,1,1,3,1,0,0,2,2,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,1,1,2,2,2,1,0,1,2,3,3,2,0,0,0,2,1,1,1,2,1,1,1,0,1,1,1,0,0,0, +1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,0,0,1,1, +3,2,2,1,0,0,1,1,2,2,0,3,0,1,2,1,1,0,0,1,1,1,0,1,1,1,1,0,2,1,1,1, +2,2,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,1,2,3,1,1,1,1,1,1,1,1,1,0,1, +2,3,3,0,1,0,0,0,3,3,1,0,0,1,2,2,1,0,0,0,0,2,0,0,1,1,1,0,2,1,1,1, +2,1,1,1,1,1,1,2,1,1,0,1,1,0,1,1,1,0,1,2,1,1,0,1,1,1,1,1,1,1,0,1, +2,3,3,0,1,0,0,0,2,2,0,0,0,0,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,1,0, +2,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1, +3,2,2,0,1,0,1,0,2,3,2,0,0,1,2,2,1,0,0,1,1,1,0,0,2,1,0,1,2,2,1,1, +2,1,1,1,1,1,1,2,1,1,1,1,1,1,0,2,1,0,1,1,0,1,1,1,0,1,1,2,1,1,0,1, +2,2,2,0,0,1,0,0,2,2,1,1,0,0,2,1,1,0,0,0,1,2,0,0,2,1,0,0,2,1,1,1, +2,1,1,1,1,2,1,2,1,1,1,2,2,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1, +1,2,3,0,0,0,1,0,3,2,1,0,0,1,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,2,1, +1,1,0,0,0,1,0,1,1,1,1,1,2,0,0,1,0,0,0,2,0,0,1,1,1,1,1,1,1,1,0,1, +3,0,0,2,1,2,2,1,0,0,2,1,2,2,0,0,0,2,1,1,1,0,1,1,0,0,1,1,2,0,0,0, +1,2,1,2,2,1,1,2,1,2,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,0,0,1, +1,3,2,0,0,0,1,0,2,2,2,0,0,0,2,2,1,0,0,0,0,3,1,1,1,1,0,0,2,1,1,1, +2,1,0,1,1,1,0,1,1,1,1,1,1,1,0,2,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1, +2,3,2,0,0,0,1,0,2,2,0,0,0,0,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,1,0, +2,1,1,1,1,2,1,2,1,2,0,1,1,1,0,2,1,1,1,2,1,1,1,1,0,1,1,1,1,1,0,1, +3,1,1,2,2,2,3,2,1,1,2,2,1,1,0,1,0,2,2,1,1,1,1,1,0,0,1,1,0,1,1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,0,0,0,0,0,2,2,0,0,0,0,2,2,1,0,0,0,1,1,0,0,1,2,0,0,2,1,1,1, +2,2,1,1,1,2,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,1,1,0,1,2,1,1,1,0,1, +1,0,0,1,2,3,2,1,0,0,2,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0, +1,2,1,2,1,2,1,1,1,2,0,2,1,1,1,0,1,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0, +2,3,2,0,0,0,0,0,1,1,2,1,0,0,1,1,1,0,0,0,0,2,0,0,1,1,0,0,2,1,1,1, +2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1, +1,2,2,0,1,1,1,0,2,2,2,0,0,0,3,2,1,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0, +1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,0,0,1,1,1,0,1,0,1, +2,1,0,2,1,1,2,2,1,1,2,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0, +1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0, +1,2,3,0,0,0,1,0,2,2,0,0,0,0,2,2,0,0,0,0,0,1,0,0,1,0,0,0,2,0,1,0, +2,1,1,1,1,1,0,2,0,0,0,1,2,1,1,1,1,0,1,2,0,1,0,1,0,1,1,1,0,1,0,1, +2,2,2,0,0,0,1,0,2,1,2,0,0,0,1,1,2,0,0,0,0,1,0,0,1,1,0,0,2,1,0,1, +2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1, +1,2,2,0,0,0,1,0,2,2,2,0,0,0,1,1,0,0,0,0,0,1,1,0,2,0,0,1,1,1,0,1, +1,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1, +1,0,0,1,0,1,2,1,0,0,1,1,1,2,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0, +0,2,1,2,1,1,1,1,1,2,0,2,0,1,1,0,1,2,1,0,1,1,1,0,0,0,0,0,0,1,0,0, +2,1,1,0,1,2,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,2,1,0,1, +2,2,1,1,1,1,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,0,1,0,1,1,1,1,1,0,1, +1,2,2,0,0,0,0,0,1,1,0,0,0,0,2,1,0,0,0,0,0,2,0,0,2,2,0,0,2,0,0,1, +2,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1, +1,1,2,0,0,3,1,0,2,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,1,0, +1,2,1,0,1,1,1,2,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0, +2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,2,0,0,0, +2,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,1,0,1, +2,1,1,1,2,1,1,1,0,1,1,2,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,0,1,1,1,1,1,0,0,1,1,2,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,0,0,0, +1,2,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0, +2,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,2,0,0,1,0,0,1,0,1,0,0,0, +0,1,1,1,1,1,1,1,1,2,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, +1,0,0,1,1,1,1,1,0,0,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0, +0,1,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0, +1,0,0,1,1,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, +0,0,0,1,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,1,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, +2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, +0,1,1,1,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0, +) + +Latin2HungarianModel = { + 'char_to_order_map': Latin2_HungarianCharToOrderMap, + 'precedence_matrix': HungarianLangModel, + 'typical_positive_ratio': 0.947368, + 'keep_english_letter': True, + 'charset_name': "ISO-8859-2", + 'language': 'Hungarian', +} + +Win1250HungarianModel = { + 'char_to_order_map': win1250HungarianCharToOrderMap, + 'precedence_matrix': HungarianLangModel, + 'typical_positive_ratio': 0.947368, + 'keep_english_letter': True, + 'charset_name': "windows-1250", + 'language': 'Hungarian', +} diff --git a/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py b/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py new file mode 100644 index 0000000..15f94c2 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py @@ -0,0 +1,199 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# The following result for thai was collected from a limited sample (1M). + +# Character Mapping Table: +TIS620CharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 +252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 +253,182,106,107,100,183,184,185,101, 94,186,187,108,109,110,111, # 40 +188,189,190, 89, 95,112,113,191,192,193,194,253,253,253,253,253, # 50 +253, 64, 72, 73,114, 74,115,116,102, 81,201,117, 90,103, 78, 82, # 60 + 96,202, 91, 79, 84,104,105, 97, 98, 92,203,253,253,253,253,253, # 70 +209,210,211,212,213, 88,214,215,216,217,218,219,220,118,221,222, +223,224, 99, 85, 83,225,226,227,228,229,230,231,232,233,234,235, +236, 5, 30,237, 24,238, 75, 8, 26, 52, 34, 51,119, 47, 58, 57, + 49, 53, 55, 43, 20, 19, 44, 14, 48, 3, 17, 25, 39, 62, 31, 54, + 45, 9, 16, 2, 61, 15,239, 12, 42, 46, 18, 21, 76, 4, 66, 63, + 22, 10, 1, 36, 23, 13, 40, 27, 32, 35, 86,240,241,242,243,244, + 11, 28, 41, 29, 33,245, 50, 37, 6, 7, 67, 77, 38, 93,246,247, + 68, 56, 59, 65, 69, 60, 70, 80, 71, 87,248,249,250,251,252,253, +) + +# Model Table: +# total sequences: 100% +# first 512 sequences: 92.6386% +# first 1024 sequences:7.3177% +# rest sequences: 1.0230% +# negative sequences: 0.0436% +ThaiLangModel = ( +0,1,3,3,3,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3,3,0,3,3,3,3, +0,3,3,0,0,0,1,3,0,3,3,2,3,3,0,1,2,3,3,3,3,0,2,0,2,0,0,3,2,1,2,2, +3,0,3,3,2,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,0,3,2,3,0,2,2,2,3, +0,2,3,0,0,0,0,1,0,1,2,3,1,1,3,2,2,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1, +3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,3,3,2,2,2, +3,1,2,3,0,3,3,2,2,1,2,3,3,1,2,0,1,3,0,1,0,0,1,0,0,0,0,0,0,0,1,1, +3,3,2,2,3,3,3,3,1,2,3,3,3,3,3,2,2,2,2,3,3,2,2,3,3,2,2,3,2,3,2,2, +3,3,1,2,3,1,2,2,3,3,1,0,2,1,0,0,3,1,2,1,0,0,1,0,0,0,0,0,0,1,0,1, +3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,2,3,3,2,2,3,2,2,2,2,1,1,3,1,2,1,1, +3,2,1,0,2,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0, +3,3,3,2,3,2,3,3,2,2,3,2,3,3,2,3,1,1,2,3,2,2,2,3,2,2,2,2,2,1,2,1, +2,2,1,1,3,3,2,1,0,1,2,2,0,1,3,0,0,0,1,1,0,0,0,0,0,2,3,0,0,2,1,1, +3,3,2,3,3,2,0,0,3,3,0,3,3,0,2,2,3,1,2,2,1,1,1,0,2,2,2,0,2,2,1,1, +0,2,1,0,2,0,0,2,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0, +3,3,2,3,3,2,0,0,3,3,0,2,3,0,2,1,2,2,2,2,1,2,0,0,2,2,2,0,2,2,1,1, +0,2,1,0,2,0,0,2,0,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0, +3,3,2,3,2,3,2,0,2,2,1,3,2,1,3,2,1,2,3,2,2,3,0,2,3,2,2,1,2,2,2,2, +1,2,2,0,0,0,0,2,0,1,2,0,1,1,1,0,1,0,3,1,1,0,0,0,0,0,0,0,0,0,1,0, +3,3,2,3,3,2,3,2,2,2,3,2,2,3,2,2,1,2,3,2,2,3,1,3,2,2,2,3,2,2,2,3, +3,2,1,3,0,1,1,1,0,2,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0, +1,0,0,3,0,3,3,3,3,3,0,0,3,0,2,2,3,3,3,3,3,0,0,0,1,1,3,0,0,0,0,2, +0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,3,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0, +2,0,3,3,3,3,0,0,2,3,0,0,3,0,3,3,2,3,3,3,3,3,0,0,3,3,3,0,0,0,3,3, +0,0,3,0,0,0,0,2,0,0,2,1,1,3,0,0,1,0,0,2,3,0,1,0,0,0,0,0,0,0,1,0, +3,3,3,3,2,3,3,3,3,3,3,3,1,2,1,3,3,2,2,1,2,2,2,3,1,1,2,0,2,1,2,1, +2,2,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0, +3,0,2,1,2,3,3,3,0,2,0,2,2,0,2,1,3,2,2,1,2,1,0,0,2,2,1,0,2,1,2,2, +0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,2,1,3,3,1,1,3,0,2,3,1,1,3,2,1,1,2,0,2,2,3,2,1,1,1,1,1,2, +3,0,0,1,3,1,2,1,2,0,3,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, +3,3,1,1,3,2,3,3,3,1,3,2,1,3,2,1,3,2,2,2,2,1,3,3,1,2,1,3,1,2,3,0, +2,1,1,3,2,2,2,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, +3,3,2,3,2,3,3,2,3,2,3,2,3,3,2,1,0,3,2,2,2,1,2,2,2,1,2,2,1,2,1,1, +2,2,2,3,0,1,3,1,1,1,1,0,1,1,0,2,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,2,3,2,2,1,1,3,2,3,2,3,2,0,3,2,2,1,2,0,2,2,2,1,2,2,2,2,1, +3,2,1,2,2,1,0,2,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1, +3,3,3,3,3,2,3,1,2,3,3,2,2,3,0,1,1,2,0,3,3,2,2,3,0,1,1,3,0,0,0,0, +3,1,0,3,3,0,2,0,2,1,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,2,3,2,3,3,0,1,3,1,1,2,1,2,1,1,3,1,1,0,2,3,1,1,1,1,1,1,1,1, +3,1,1,2,2,2,2,1,1,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,2,2,1,1,2,1,3,3,2,3,2,2,3,2,2,3,1,2,2,1,2,0,3,2,1,2,2,2,2,2,1, +3,2,1,2,2,2,1,1,1,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,1,3,3,0,2,1,0,3,2,0,0,3,1,0,1,1,0,1,0,0,0,0,0,1, +1,0,0,1,0,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,2,2,2,3,0,0,1,3,0,3,2,0,3,2,2,3,3,3,3,3,1,0,2,2,2,0,2,2,1,2, +0,2,3,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +3,0,2,3,1,3,3,2,3,3,0,3,3,0,3,2,2,3,2,3,3,3,0,0,2,2,3,0,1,1,1,3, +0,0,3,0,0,0,2,2,0,1,3,0,1,2,2,2,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1, +3,2,3,3,2,0,3,3,2,2,3,1,3,2,1,3,2,0,1,2,2,0,2,3,2,1,0,3,0,0,0,0, +3,0,0,2,3,1,3,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,1,3,2,2,2,1,2,0,1,3,1,1,3,1,3,0,0,2,1,1,1,1,2,1,1,1,0,2,1,0,1, +1,2,0,0,0,3,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,3,1,0,0,0,1,0, +3,3,3,3,2,2,2,2,2,1,3,1,1,1,2,0,1,1,2,1,2,1,3,2,0,0,3,1,1,1,1,1, +3,1,0,2,3,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,2,3,0,3,3,0,2,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2,3,1,3,0,0,1,2,0,0,2,0,3,3,2,3,3,3,2,3,0,0,2,2,2,0,0,0,2,2, +0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,2,3,1,3,3,0,0,1,0,3,0,0,0,0,0, +0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,1,2,3,1,2,3,1,0,3,0,2,2,1,0,2,1,1,2,0,1,0,0,1,1,1,1,0,1,0,0, +1,0,0,0,0,1,1,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,2,1,0,1,1,1,3,1,2,2,2,2,2,2,1,1,1,1,0,3,1,0,1,3,1,1,1,1, +1,1,0,2,0,1,3,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1, +3,0,2,2,1,3,3,2,3,3,0,1,1,0,2,2,1,2,1,3,3,1,0,0,3,2,0,0,0,0,2,1, +0,1,0,0,0,0,1,2,0,1,1,3,1,1,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, +0,0,3,0,0,1,0,0,0,3,0,0,3,0,3,1,0,1,1,1,3,2,0,0,0,3,0,0,0,0,2,0, +0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, +3,3,1,3,2,1,3,3,1,2,2,0,1,2,1,0,1,2,0,0,0,0,0,3,0,0,0,3,0,0,0,0, +3,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,1,2,0,3,3,3,2,2,0,1,1,0,1,3,0,0,0,2,2,0,0,0,0,3,1,0,1,0,0,0, +0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,2,3,1,2,0,0,2,1,0,3,1,0,1,2,0,1,1,1,1,3,0,0,3,1,1,0,2,2,1,1, +0,2,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,0,3,1,2,0,0,2,2,0,1,2,0,1,0,1,3,1,2,1,0,0,0,2,0,3,0,0,0,1,0, +0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,1,1,2,2,0,0,0,2,0,2,1,0,1,1,0,1,1,1,2,1,0,0,1,1,1,0,2,1,1,1, +0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1, +0,0,0,2,0,1,3,1,1,1,1,0,0,0,0,3,2,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0, +0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,0,2,3,2,2,0,0,0,1,0,0,0,0,2,3,2,1,2,2,3,0,0,0,2,3,1,0,0,0,1,1, +0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0, +3,3,2,2,0,1,0,0,0,0,2,0,2,0,1,0,0,0,1,1,0,0,0,2,1,0,1,0,1,1,0,0, +0,1,0,2,0,0,1,0,3,0,1,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,1,0,0,1,0,0,0,0,0,1,1,2,0,0,0,0,1,0,0,1,3,1,0,0,0,0,1,1,0,0, +0,1,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0, +3,3,1,1,1,1,2,3,0,0,2,1,1,1,1,1,0,2,1,1,0,0,0,2,1,0,1,2,1,1,0,1, +2,1,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,3,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1, +0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,2,0,0,0,0,0,0,1,2,1,0,1,1,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2,0,0,0,1,3,0,1,0,0,0,2,0,0,0,0,0,0,0,1,2,0,0,0,0,0, +3,3,0,0,1,1,2,0,0,1,2,1,0,1,1,1,0,1,1,0,0,2,1,1,0,1,0,0,1,1,1,0, +0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,1,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, +2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,3,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +1,1,0,1,2,0,1,2,0,0,1,1,0,2,0,1,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0, +1,0,0,1,0,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,2,1,3,0,0,0,0,1,1,0,0,0,0,0,0,0,3, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,1,0,1,0,0,2,0,0,2,0,0,1,1,2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0, +1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, +1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0, +1,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,1,1,0,0,2,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +) + +TIS620ThaiModel = { + 'char_to_order_map': TIS620CharToOrderMap, + 'precedence_matrix': ThaiLangModel, + 'typical_positive_ratio': 0.926386, + 'keep_english_letter': False, + 'charset_name': "TIS-620", + 'language': 'Thai', +} diff --git a/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py b/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py new file mode 100644 index 0000000..a427a45 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Communicator client code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Özgür Baskın - Turkish Language Model +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +# 255: Control characters that usually does not exist in any text +# 254: Carriage/Return +# 253: symbol (punctuation) that does not belong to word +# 252: 0 - 9 + +# Character Mapping Table: +Latin5_TurkishCharToOrderMap = ( +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, +255, 23, 37, 47, 39, 29, 52, 36, 45, 53, 60, 16, 49, 20, 46, 42, + 48, 69, 44, 35, 31, 51, 38, 62, 65, 43, 56,255,255,255,255,255, +255, 1, 21, 28, 12, 2, 18, 27, 25, 3, 24, 10, 5, 13, 4, 15, + 26, 64, 7, 8, 9, 14, 32, 57, 58, 11, 22,255,255,255,255,255, +180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165, +164,163,162,161,160,159,101,158,157,156,155,154,153,152,151,106, +150,149,148,147,146,145,144,100,143,142,141,140,139,138,137,136, + 94, 80, 93,135,105,134,133, 63,132,131,130,129,128,127,126,125, +124,104, 73, 99, 79, 85,123, 54,122, 98, 92,121,120, 91,103,119, + 68,118,117, 97,116,115, 50, 90,114,113,112,111, 55, 41, 40, 86, + 89, 70, 59, 78, 71, 82, 88, 33, 77, 66, 84, 83,110, 75, 61, 96, + 30, 67,109, 74, 87,102, 34, 95, 81,108, 76, 72, 17, 6, 19,107, +) + +TurkishLangModel = ( +3,2,3,3,3,1,3,3,3,3,3,3,3,3,2,1,1,3,3,1,3,3,0,3,3,3,3,3,0,3,1,3, +3,2,1,0,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, +3,2,2,3,3,0,3,3,3,3,3,3,3,2,3,1,0,3,3,1,3,3,0,3,3,3,3,3,0,3,0,3, +3,1,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,0,1,0,1, +3,3,2,3,3,0,3,3,3,3,3,3,3,2,3,1,1,3,3,0,3,3,1,2,3,3,3,3,0,3,0,3, +3,1,1,0,0,0,1,0,0,0,0,1,1,0,1,2,1,0,0,0,1,0,0,0,0,2,0,0,0,0,0,1, +3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,1,3,3,2,0,3,2,1,2,2,1,3,3,0,0,0,2, +2,2,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1, +3,3,3,2,3,3,1,2,3,3,3,3,3,3,3,1,3,2,1,0,3,2,0,1,2,3,3,2,1,0,0,2, +2,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0, +1,0,1,3,3,1,3,3,3,3,3,3,3,1,2,0,0,2,3,0,2,3,0,0,2,2,2,3,0,3,0,1, +2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,0,3,2,0,2,3,2,3,3,1,0,0,2, +3,2,0,0,1,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,2,0,0,1, +3,3,3,2,3,3,2,3,3,3,3,2,3,3,3,0,3,3,0,0,2,1,0,0,2,3,2,2,0,0,0,2, +2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,1,0,2,0,0,1, +3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,0,1,3,2,1,1,3,2,3,2,1,0,0,2, +2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, +3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,2,0,2,3,0,0,2,2,2,2,0,0,0,2, +3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, +3,3,3,3,3,3,3,2,2,2,2,3,2,3,3,0,3,3,1,1,2,2,0,0,2,2,3,2,0,0,1,3, +0,3,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1, +3,3,3,2,3,3,3,2,1,2,2,3,2,3,3,0,3,2,0,0,1,1,0,1,1,2,1,2,0,0,0,1, +0,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0, +3,3,3,2,3,3,2,3,2,2,2,3,3,3,3,1,3,1,1,0,3,2,1,1,3,3,2,3,1,0,0,1, +1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,1, +3,2,2,3,3,0,3,3,3,3,3,3,3,2,2,1,0,3,3,1,3,3,0,1,3,3,2,3,0,3,0,3, +2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, +2,2,2,3,3,0,3,3,3,3,3,3,3,3,3,0,0,3,2,0,3,3,0,3,2,3,3,3,0,3,1,3, +2,0,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, +3,3,3,1,2,3,3,1,0,0,1,0,0,3,3,2,3,0,0,2,0,0,2,0,2,0,0,0,2,0,2,0, +0,3,1,0,1,0,0,0,2,2,1,0,1,1,2,1,2,2,2,0,2,1,1,0,0,0,2,0,0,0,0,0, +1,2,1,3,3,0,3,3,3,3,3,2,3,0,0,0,0,2,3,0,2,3,1,0,2,3,1,3,0,3,0,2, +3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,1,3,3,2,2,3,2,2,0,1,2,3,0,1,2,1,0,1,0,0,0,1,0,2,2,0,0,0,1, +1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0, +3,3,3,1,3,3,1,1,3,3,1,1,3,3,1,0,2,1,2,0,2,1,0,0,1,1,2,1,0,0,0,2, +2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,1,0,2,1,3,0,0,2,0,0,3,3,0,3,0,0,1,0,1,2,0,0,1,1,2,2,0,1,0, +0,1,2,1,1,0,1,0,1,1,1,1,1,0,1,1,1,2,2,1,2,0,1,0,0,0,0,0,0,1,0,0, +3,3,3,2,3,2,3,3,0,2,2,2,3,3,3,0,3,0,0,0,2,2,0,1,2,1,1,1,0,0,0,1, +0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +3,3,3,3,3,3,2,1,2,2,3,3,3,3,2,0,2,0,0,0,2,2,0,0,2,1,3,3,0,0,1,1, +1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0, +1,1,2,3,3,0,3,3,3,3,3,3,2,2,0,2,0,2,3,2,3,2,2,2,2,2,2,2,1,3,2,3, +2,0,2,1,2,2,2,2,1,1,2,2,1,2,2,1,2,0,0,2,1,1,0,2,1,0,0,1,0,0,0,1, +2,3,3,1,1,1,0,1,1,1,2,3,2,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0, +0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,2,2,2,3,2,3,2,2,1,3,3,3,0,2,1,2,0,2,1,0,0,1,1,1,1,1,0,0,1, +2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, +3,3,3,2,3,3,3,3,3,2,3,1,2,3,3,1,2,0,0,0,0,0,0,0,3,2,1,1,0,0,0,0, +2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, +3,3,3,2,2,3,3,2,1,1,1,1,1,3,3,0,3,1,0,0,1,1,0,0,3,1,2,1,0,0,0,0, +0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0, +3,3,3,2,2,3,2,2,2,3,2,1,1,3,3,0,3,0,0,0,0,1,0,0,3,1,1,2,0,0,0,1, +1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, +1,1,1,3,3,0,3,3,3,3,3,2,2,2,1,2,0,2,1,2,2,1,1,0,1,2,2,2,2,2,2,2, +0,0,2,1,2,1,2,1,0,1,1,3,1,2,1,1,2,0,0,2,0,1,0,1,0,1,0,0,0,1,0,1, +3,3,3,1,3,3,3,0,1,1,0,2,2,3,1,0,3,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,2,0,0,2,2,1,0,0,1,0,0,3,3,1,3,0,0,1,1,0,2,0,3,0,0,0,2,0,1,1, +0,1,2,0,1,2,2,0,2,2,2,2,1,0,2,1,1,0,2,0,2,1,2,0,0,0,0,0,0,0,0,0, +3,3,3,1,3,2,3,2,0,2,2,2,1,3,2,0,2,1,2,0,1,2,0,0,1,0,2,2,0,0,0,2, +1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0, +3,3,3,0,3,3,1,1,2,3,1,0,3,2,3,0,3,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0, +1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,3,3,0,3,3,2,3,3,2,2,0,0,0,0,1,2,0,1,3,0,0,0,3,1,1,0,3,0,2, +2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,1,2,2,1,0,3,1,1,1,1,3,3,2,3,0,0,1,0,1,2,0,2,2,0,2,2,0,2,1, +0,2,2,1,1,1,1,0,2,1,1,0,1,1,1,1,2,1,2,1,2,0,1,0,1,0,0,0,0,0,0,0, +3,3,3,0,1,1,3,0,0,1,1,0,0,2,2,0,3,0,0,1,1,0,1,0,0,0,0,0,2,0,0,0, +0,3,1,0,1,0,1,0,2,0,0,1,0,1,0,1,1,1,2,1,1,0,2,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,0,2,0,1,1,1,0,0,3,3,0,2,0,0,1,0,0,2,1,1,0,1,0,1,0,1,0, +0,2,0,1,2,0,2,0,2,1,1,0,1,0,2,1,1,0,2,1,1,0,1,0,0,0,1,1,0,0,0,0, +3,2,3,0,1,0,0,0,0,0,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,0,2,0,0,0, +0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,2,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,0,0,2,3,0,0,1,0,1,0,2,3,2,3,0,0,1,3,0,2,1,0,0,0,0,2,0,1,0, +0,2,1,0,0,1,1,0,2,1,0,0,1,0,0,1,1,0,1,1,2,0,1,0,0,0,0,1,0,0,0,0, +3,2,2,0,0,1,1,0,0,0,0,0,0,3,1,1,1,0,0,0,0,0,1,0,0,0,0,0,2,0,1,0, +0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,3,3,0,2,3,2,2,1,2,2,1,1,2,0,1,3,2,2,2,0,0,2,2,0,0,0,1,2,1, +3,0,2,1,1,0,1,1,1,0,1,2,2,2,1,1,2,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0, +0,1,1,2,3,0,3,3,3,2,2,2,2,1,0,1,0,1,0,1,2,2,0,0,2,2,1,3,1,1,2,1, +0,0,1,1,2,0,1,1,0,0,1,2,0,2,1,1,2,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0, +3,3,2,0,0,3,1,0,0,0,0,0,0,3,2,1,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, +0,2,1,1,0,0,1,0,1,2,0,0,1,1,0,0,2,1,1,1,1,0,2,0,0,0,0,0,0,0,0,0, +3,3,2,0,0,1,0,0,0,0,1,0,0,3,3,2,2,0,0,1,0,0,2,0,1,0,0,0,2,0,1,0, +0,0,1,1,0,0,2,0,2,1,0,0,1,1,2,1,2,0,2,1,2,1,1,1,0,0,1,1,0,0,0,0, +3,3,2,0,0,2,2,0,0,0,1,1,0,2,2,1,3,1,0,1,0,1,2,0,0,0,0,0,1,0,1,0, +0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,2,0,0,0,1,0,0,1,0,0,2,3,1,2,0,0,1,0,0,2,0,0,0,1,0,2,0,2,0, +0,1,1,2,2,1,2,0,2,1,1,0,0,1,1,0,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,1,2,1,0,0,1,1,0,3,3,1,2,0,0,1,0,0,2,0,2,0,1,1,2,0,0,0, +0,0,1,1,1,1,2,0,1,1,0,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0, +3,3,3,0,2,2,3,2,0,0,1,0,0,2,3,1,0,0,0,0,0,0,2,0,2,0,0,0,2,0,0,0, +0,1,1,0,0,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, +3,2,3,0,0,0,0,0,0,0,1,0,0,2,2,2,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, +0,0,2,1,1,0,1,0,2,1,1,0,0,1,1,2,1,0,2,0,2,0,1,0,0,0,2,0,0,0,0,0, +0,0,0,2,2,0,2,1,1,1,1,2,2,0,0,1,0,1,0,0,1,3,0,0,0,0,1,0,0,2,1,0, +0,0,1,0,1,0,0,0,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, +2,0,0,2,3,0,2,3,1,2,2,0,2,0,0,2,0,2,1,1,1,2,1,0,0,1,2,1,1,2,1,0, +1,0,2,0,1,0,1,1,0,0,2,2,1,2,1,1,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, +3,3,3,0,2,1,2,0,0,0,1,0,0,3,2,0,1,0,0,1,0,0,2,0,0,0,1,2,1,0,1,0, +0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,2,2,0,2,2,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,0,1,0,0,0,1,1,1,1, +0,0,2,1,0,1,1,1,0,1,1,2,1,2,1,1,2,0,1,1,2,1,0,2,0,0,0,0,0,0,0,0, +3,2,2,0,0,2,0,0,0,0,0,0,0,2,2,0,2,0,0,1,0,0,2,0,0,0,0,0,2,0,0,0, +0,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,3,2,0,2,2,0,1,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0, +2,0,1,0,1,0,1,1,0,0,1,2,0,1,0,1,1,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0, +2,2,2,0,1,1,0,0,0,1,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,1,2,0,1,0, +0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,2,1,0,1,1,1,0,0,0,0,1,2,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, +1,1,2,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,1, +0,0,1,2,2,0,2,1,2,1,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,0,0,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, +2,2,2,0,0,0,1,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, +0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2,2,2,0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +) + +Latin5TurkishModel = { + 'char_to_order_map': Latin5_TurkishCharToOrderMap, + 'precedence_matrix': TurkishLangModel, + 'typical_positive_ratio': 0.970290, + 'keep_english_letter': True, + 'charset_name': "ISO-8859-9", + 'language': 'Turkish', +} diff --git a/Lib/site-packages/pip/_vendor/chardet/latin1prober.py b/Lib/site-packages/pip/_vendor/chardet/latin1prober.py new file mode 100644 index 0000000..7d1e8c2 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/latin1prober.py @@ -0,0 +1,145 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState + +FREQ_CAT_NUM = 4 + +UDF = 0 # undefined +OTH = 1 # other +ASC = 2 # ascii capital letter +ASS = 3 # ascii small letter +ACV = 4 # accent capital vowel +ACO = 5 # accent capital other +ASV = 6 # accent small vowel +ASO = 7 # accent small other +CLASS_NUM = 8 # total classes + +Latin1_CharToClass = ( + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F + OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47 + ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F + ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57 + ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F + OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67 + ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F + ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77 + ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F + OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87 + OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F + UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97 + OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 + OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF + ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7 + ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF + ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7 + ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF + ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7 + ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF + ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7 + ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF +) + +# 0 : illegal +# 1 : very unlikely +# 2 : normal +# 3 : very likely +Latin1ClassModel = ( +# UDF OTH ASC ASS ACV ACO ASV ASO + 0, 0, 0, 0, 0, 0, 0, 0, # UDF + 0, 3, 3, 3, 3, 3, 3, 3, # OTH + 0, 3, 3, 3, 3, 3, 3, 3, # ASC + 0, 3, 3, 3, 1, 1, 3, 3, # ASS + 0, 3, 3, 3, 1, 2, 1, 2, # ACV + 0, 3, 3, 3, 3, 3, 3, 3, # ACO + 0, 3, 1, 3, 1, 1, 1, 3, # ASV + 0, 3, 1, 3, 1, 1, 3, 3, # ASO +) + + +class Latin1Prober(CharSetProber): + def __init__(self): + super(Latin1Prober, self).__init__() + self._last_char_class = None + self._freq_counter = None + self.reset() + + def reset(self): + self._last_char_class = OTH + self._freq_counter = [0] * FREQ_CAT_NUM + CharSetProber.reset(self) + + @property + def charset_name(self): + return "ISO-8859-1" + + @property + def language(self): + return "" + + def feed(self, byte_str): + byte_str = self.filter_with_english_letters(byte_str) + for c in byte_str: + char_class = Latin1_CharToClass[c] + freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) + + char_class] + if freq == 0: + self._state = ProbingState.NOT_ME + break + self._freq_counter[freq] += 1 + self._last_char_class = char_class + + return self.state + + def get_confidence(self): + if self.state == ProbingState.NOT_ME: + return 0.01 + + total = sum(self._freq_counter) + if total < 0.01: + confidence = 0.0 + else: + confidence = ((self._freq_counter[3] - self._freq_counter[1] * 20.0) + / total) + if confidence < 0.0: + confidence = 0.0 + # lower the confidence of latin1 so that other more accurate + # detector can take priority. + confidence = confidence * 0.73 + return confidence diff --git a/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py b/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py new file mode 100644 index 0000000..6256ecf --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py @@ -0,0 +1,91 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState + + +class MultiByteCharSetProber(CharSetProber): + """ + MultiByteCharSetProber + """ + + def __init__(self, lang_filter=None): + super(MultiByteCharSetProber, self).__init__(lang_filter=lang_filter) + self.distribution_analyzer = None + self.coding_sm = None + self._last_char = [0, 0] + + def reset(self): + super(MultiByteCharSetProber, self).reset() + if self.coding_sm: + self.coding_sm.reset() + if self.distribution_analyzer: + self.distribution_analyzer.reset() + self._last_char = [0, 0] + + @property + def charset_name(self): + raise NotImplementedError + + @property + def language(self): + raise NotImplementedError + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.distribution_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + return self.distribution_analyzer.get_confidence() diff --git a/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py b/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py new file mode 100644 index 0000000..530abe7 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py @@ -0,0 +1,54 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# Proofpoint, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetgroupprober import CharSetGroupProber +from .utf8prober import UTF8Prober +from .sjisprober import SJISProber +from .eucjpprober import EUCJPProber +from .gb2312prober import GB2312Prober +from .euckrprober import EUCKRProber +from .cp949prober import CP949Prober +from .big5prober import Big5Prober +from .euctwprober import EUCTWProber + + +class MBCSGroupProber(CharSetGroupProber): + def __init__(self, lang_filter=None): + super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) + self.probers = [ + UTF8Prober(), + SJISProber(), + EUCJPProber(), + GB2312Prober(), + EUCKRProber(), + CP949Prober(), + Big5Prober(), + EUCTWProber() + ] + self.reset() diff --git a/Lib/site-packages/pip/_vendor/chardet/mbcssm.py b/Lib/site-packages/pip/_vendor/chardet/mbcssm.py new file mode 100644 index 0000000..8360d0f --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/mbcssm.py @@ -0,0 +1,572 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .enums import MachineState + +# BIG5 + +BIG5_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,1, # 78 - 7f + 4,4,4,4,4,4,4,4, # 80 - 87 + 4,4,4,4,4,4,4,4, # 88 - 8f + 4,4,4,4,4,4,4,4, # 90 - 97 + 4,4,4,4,4,4,4,4, # 98 - 9f + 4,3,3,3,3,3,3,3, # a0 - a7 + 3,3,3,3,3,3,3,3, # a8 - af + 3,3,3,3,3,3,3,3, # b0 - b7 + 3,3,3,3,3,3,3,3, # b8 - bf + 3,3,3,3,3,3,3,3, # c0 - c7 + 3,3,3,3,3,3,3,3, # c8 - cf + 3,3,3,3,3,3,3,3, # d0 - d7 + 3,3,3,3,3,3,3,3, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,3,3,3, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,3,3,0 # f8 - ff +) + +BIG5_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17 +) + +BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0) + +BIG5_SM_MODEL = {'class_table': BIG5_CLS, + 'class_factor': 5, + 'state_table': BIG5_ST, + 'char_len_table': BIG5_CHAR_LEN_TABLE, + 'name': 'Big5'} + +# CP949 + +CP949_CLS = ( + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0, # 00 - 0f + 1,1,1,1,1,1,1,1, 1,1,1,0,1,1,1,1, # 10 - 1f + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 20 - 2f + 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 30 - 3f + 1,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4, # 40 - 4f + 4,4,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 50 - 5f + 1,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5, # 60 - 6f + 5,5,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 70 - 7f + 0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 80 - 8f + 6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 90 - 9f + 6,7,7,7,7,7,7,7, 7,7,7,7,7,8,8,8, # a0 - af + 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, # b0 - bf + 7,7,7,7,7,7,9,2, 2,3,2,2,2,2,2,2, # c0 - cf + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # d0 - df + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # e0 - ef + 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,0, # f0 - ff +) + +CP949_ST = ( +#cls= 0 1 2 3 4 5 6 7 8 9 # previous state = + MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4 + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5 + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6 +) + +CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) + +CP949_SM_MODEL = {'class_table': CP949_CLS, + 'class_factor': 10, + 'state_table': CP949_ST, + 'char_len_table': CP949_CHAR_LEN_TABLE, + 'name': 'CP949'} + +# EUC-JP + +EUCJP_CLS = ( + 4,4,4,4,4,4,4,4, # 00 - 07 + 4,4,4,4,4,4,5,5, # 08 - 0f + 4,4,4,4,4,4,4,4, # 10 - 17 + 4,4,4,5,4,4,4,4, # 18 - 1f + 4,4,4,4,4,4,4,4, # 20 - 27 + 4,4,4,4,4,4,4,4, # 28 - 2f + 4,4,4,4,4,4,4,4, # 30 - 37 + 4,4,4,4,4,4,4,4, # 38 - 3f + 4,4,4,4,4,4,4,4, # 40 - 47 + 4,4,4,4,4,4,4,4, # 48 - 4f + 4,4,4,4,4,4,4,4, # 50 - 57 + 4,4,4,4,4,4,4,4, # 58 - 5f + 4,4,4,4,4,4,4,4, # 60 - 67 + 4,4,4,4,4,4,4,4, # 68 - 6f + 4,4,4,4,4,4,4,4, # 70 - 77 + 4,4,4,4,4,4,4,4, # 78 - 7f + 5,5,5,5,5,5,5,5, # 80 - 87 + 5,5,5,5,5,5,1,3, # 88 - 8f + 5,5,5,5,5,5,5,5, # 90 - 97 + 5,5,5,5,5,5,5,5, # 98 - 9f + 5,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,2,2,2, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,2,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,0,5 # f8 - ff +) + +EUCJP_ST = ( + 3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f + 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27 +) + +EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0) + +EUCJP_SM_MODEL = {'class_table': EUCJP_CLS, + 'class_factor': 6, + 'state_table': EUCJP_ST, + 'char_len_table': EUCJP_CHAR_LEN_TABLE, + 'name': 'EUC-JP'} + +# EUC-KR + +EUCKR_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 1,1,1,1,1,1,1,1, # 40 - 47 + 1,1,1,1,1,1,1,1, # 48 - 4f + 1,1,1,1,1,1,1,1, # 50 - 57 + 1,1,1,1,1,1,1,1, # 58 - 5f + 1,1,1,1,1,1,1,1, # 60 - 67 + 1,1,1,1,1,1,1,1, # 68 - 6f + 1,1,1,1,1,1,1,1, # 70 - 77 + 1,1,1,1,1,1,1,1, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,3,3,3, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,3,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 2,2,2,2,2,2,2,2, # e0 - e7 + 2,2,2,2,2,2,2,2, # e8 - ef + 2,2,2,2,2,2,2,2, # f0 - f7 + 2,2,2,2,2,2,2,0 # f8 - ff +) + +EUCKR_ST = ( + MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f +) + +EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0) + +EUCKR_SM_MODEL = {'class_table': EUCKR_CLS, + 'class_factor': 4, + 'state_table': EUCKR_ST, + 'char_len_table': EUCKR_CHAR_LEN_TABLE, + 'name': 'EUC-KR'} + +# EUC-TW + +EUCTW_CLS = ( + 2,2,2,2,2,2,2,2, # 00 - 07 + 2,2,2,2,2,2,0,0, # 08 - 0f + 2,2,2,2,2,2,2,2, # 10 - 17 + 2,2,2,0,2,2,2,2, # 18 - 1f + 2,2,2,2,2,2,2,2, # 20 - 27 + 2,2,2,2,2,2,2,2, # 28 - 2f + 2,2,2,2,2,2,2,2, # 30 - 37 + 2,2,2,2,2,2,2,2, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,2, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,6,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,3,4,4,4,4,4,4, # a0 - a7 + 5,5,1,1,1,1,1,1, # a8 - af + 1,1,1,1,1,1,1,1, # b0 - b7 + 1,1,1,1,1,1,1,1, # b8 - bf + 1,1,3,1,3,3,3,3, # c0 - c7 + 3,3,3,3,3,3,3,3, # c8 - cf + 3,3,3,3,3,3,3,3, # d0 - d7 + 3,3,3,3,3,3,3,3, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,3,3,3, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,3,3,0 # f8 - ff +) + +EUCTW_ST = ( + MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17 + MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27 + MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f +) + +EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3) + +EUCTW_SM_MODEL = {'class_table': EUCTW_CLS, + 'class_factor': 7, + 'state_table': EUCTW_ST, + 'char_len_table': EUCTW_CHAR_LEN_TABLE, + 'name': 'x-euc-tw'} + +# GB2312 + +GB2312_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 3,3,3,3,3,3,3,3, # 30 - 37 + 3,3,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,4, # 78 - 7f + 5,6,6,6,6,6,6,6, # 80 - 87 + 6,6,6,6,6,6,6,6, # 88 - 8f + 6,6,6,6,6,6,6,6, # 90 - 97 + 6,6,6,6,6,6,6,6, # 98 - 9f + 6,6,6,6,6,6,6,6, # a0 - a7 + 6,6,6,6,6,6,6,6, # a8 - af + 6,6,6,6,6,6,6,6, # b0 - b7 + 6,6,6,6,6,6,6,6, # b8 - bf + 6,6,6,6,6,6,6,6, # c0 - c7 + 6,6,6,6,6,6,6,6, # c8 - cf + 6,6,6,6,6,6,6,6, # d0 - d7 + 6,6,6,6,6,6,6,6, # d8 - df + 6,6,6,6,6,6,6,6, # e0 - e7 + 6,6,6,6,6,6,6,6, # e8 - ef + 6,6,6,6,6,6,6,6, # f0 - f7 + 6,6,6,6,6,6,6,0 # f8 - ff +) + +GB2312_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17 + 4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27 + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f +) + +# To be accurate, the length of class 6 can be either 2 or 4. +# But it is not necessary to discriminate between the two since +# it is used for frequency analysis only, and we are validating +# each code range there as well. So it is safe to set it to be +# 2 here. +GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2) + +GB2312_SM_MODEL = {'class_table': GB2312_CLS, + 'class_factor': 7, + 'state_table': GB2312_ST, + 'char_len_table': GB2312_CHAR_LEN_TABLE, + 'name': 'GB2312'} + +# Shift_JIS + +SJIS_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 2,2,2,2,2,2,2,2, # 40 - 47 + 2,2,2,2,2,2,2,2, # 48 - 4f + 2,2,2,2,2,2,2,2, # 50 - 57 + 2,2,2,2,2,2,2,2, # 58 - 5f + 2,2,2,2,2,2,2,2, # 60 - 67 + 2,2,2,2,2,2,2,2, # 68 - 6f + 2,2,2,2,2,2,2,2, # 70 - 77 + 2,2,2,2,2,2,2,1, # 78 - 7f + 3,3,3,3,3,2,2,3, # 80 - 87 + 3,3,3,3,3,3,3,3, # 88 - 8f + 3,3,3,3,3,3,3,3, # 90 - 97 + 3,3,3,3,3,3,3,3, # 98 - 9f + #0xa0 is illegal in sjis encoding, but some pages does + #contain such byte. We need to be more error forgiven. + 2,2,2,2,2,2,2,2, # a0 - a7 + 2,2,2,2,2,2,2,2, # a8 - af + 2,2,2,2,2,2,2,2, # b0 - b7 + 2,2,2,2,2,2,2,2, # b8 - bf + 2,2,2,2,2,2,2,2, # c0 - c7 + 2,2,2,2,2,2,2,2, # c8 - cf + 2,2,2,2,2,2,2,2, # d0 - d7 + 2,2,2,2,2,2,2,2, # d8 - df + 3,3,3,3,3,3,3,3, # e0 - e7 + 3,3,3,3,3,4,4,4, # e8 - ef + 3,3,3,3,3,3,3,3, # f0 - f7 + 3,3,3,3,3,0,0,0) # f8 - ff + + +SJIS_ST = ( + MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17 +) + +SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0) + +SJIS_SM_MODEL = {'class_table': SJIS_CLS, + 'class_factor': 6, + 'state_table': SJIS_ST, + 'char_len_table': SJIS_CHAR_LEN_TABLE, + 'name': 'Shift_JIS'} + +# UCS2-BE + +UCS2BE_CLS = ( + 0,0,0,0,0,0,0,0, # 00 - 07 + 0,0,1,0,0,2,0,0, # 08 - 0f + 0,0,0,0,0,0,0,0, # 10 - 17 + 0,0,0,3,0,0,0,0, # 18 - 1f + 0,0,0,0,0,0,0,0, # 20 - 27 + 0,3,3,3,3,3,0,0, # 28 - 2f + 0,0,0,0,0,0,0,0, # 30 - 37 + 0,0,0,0,0,0,0,0, # 38 - 3f + 0,0,0,0,0,0,0,0, # 40 - 47 + 0,0,0,0,0,0,0,0, # 48 - 4f + 0,0,0,0,0,0,0,0, # 50 - 57 + 0,0,0,0,0,0,0,0, # 58 - 5f + 0,0,0,0,0,0,0,0, # 60 - 67 + 0,0,0,0,0,0,0,0, # 68 - 6f + 0,0,0,0,0,0,0,0, # 70 - 77 + 0,0,0,0,0,0,0,0, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,0,0,0,0,0,0,0, # a0 - a7 + 0,0,0,0,0,0,0,0, # a8 - af + 0,0,0,0,0,0,0,0, # b0 - b7 + 0,0,0,0,0,0,0,0, # b8 - bf + 0,0,0,0,0,0,0,0, # c0 - c7 + 0,0,0,0,0,0,0,0, # c8 - cf + 0,0,0,0,0,0,0,0, # d0 - d7 + 0,0,0,0,0,0,0,0, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,4,5 # f8 - ff +) + +UCS2BE_ST = ( + 5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17 + 6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f + 6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27 + 5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f + 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37 +) + +UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2) + +UCS2BE_SM_MODEL = {'class_table': UCS2BE_CLS, + 'class_factor': 6, + 'state_table': UCS2BE_ST, + 'char_len_table': UCS2BE_CHAR_LEN_TABLE, + 'name': 'UTF-16BE'} + +# UCS2-LE + +UCS2LE_CLS = ( + 0,0,0,0,0,0,0,0, # 00 - 07 + 0,0,1,0,0,2,0,0, # 08 - 0f + 0,0,0,0,0,0,0,0, # 10 - 17 + 0,0,0,3,0,0,0,0, # 18 - 1f + 0,0,0,0,0,0,0,0, # 20 - 27 + 0,3,3,3,3,3,0,0, # 28 - 2f + 0,0,0,0,0,0,0,0, # 30 - 37 + 0,0,0,0,0,0,0,0, # 38 - 3f + 0,0,0,0,0,0,0,0, # 40 - 47 + 0,0,0,0,0,0,0,0, # 48 - 4f + 0,0,0,0,0,0,0,0, # 50 - 57 + 0,0,0,0,0,0,0,0, # 58 - 5f + 0,0,0,0,0,0,0,0, # 60 - 67 + 0,0,0,0,0,0,0,0, # 68 - 6f + 0,0,0,0,0,0,0,0, # 70 - 77 + 0,0,0,0,0,0,0,0, # 78 - 7f + 0,0,0,0,0,0,0,0, # 80 - 87 + 0,0,0,0,0,0,0,0, # 88 - 8f + 0,0,0,0,0,0,0,0, # 90 - 97 + 0,0,0,0,0,0,0,0, # 98 - 9f + 0,0,0,0,0,0,0,0, # a0 - a7 + 0,0,0,0,0,0,0,0, # a8 - af + 0,0,0,0,0,0,0,0, # b0 - b7 + 0,0,0,0,0,0,0,0, # b8 - bf + 0,0,0,0,0,0,0,0, # c0 - c7 + 0,0,0,0,0,0,0,0, # c8 - cf + 0,0,0,0,0,0,0,0, # d0 - d7 + 0,0,0,0,0,0,0,0, # d8 - df + 0,0,0,0,0,0,0,0, # e0 - e7 + 0,0,0,0,0,0,0,0, # e8 - ef + 0,0,0,0,0,0,0,0, # f0 - f7 + 0,0,0,0,0,0,4,5 # f8 - ff +) + +UCS2LE_ST = ( + 6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f + MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17 + 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f + 7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27 + 5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f + 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37 +) + +UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2) + +UCS2LE_SM_MODEL = {'class_table': UCS2LE_CLS, + 'class_factor': 6, + 'state_table': UCS2LE_ST, + 'char_len_table': UCS2LE_CHAR_LEN_TABLE, + 'name': 'UTF-16LE'} + +# UTF-8 + +UTF8_CLS = ( + 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value + 1,1,1,1,1,1,0,0, # 08 - 0f + 1,1,1,1,1,1,1,1, # 10 - 17 + 1,1,1,0,1,1,1,1, # 18 - 1f + 1,1,1,1,1,1,1,1, # 20 - 27 + 1,1,1,1,1,1,1,1, # 28 - 2f + 1,1,1,1,1,1,1,1, # 30 - 37 + 1,1,1,1,1,1,1,1, # 38 - 3f + 1,1,1,1,1,1,1,1, # 40 - 47 + 1,1,1,1,1,1,1,1, # 48 - 4f + 1,1,1,1,1,1,1,1, # 50 - 57 + 1,1,1,1,1,1,1,1, # 58 - 5f + 1,1,1,1,1,1,1,1, # 60 - 67 + 1,1,1,1,1,1,1,1, # 68 - 6f + 1,1,1,1,1,1,1,1, # 70 - 77 + 1,1,1,1,1,1,1,1, # 78 - 7f + 2,2,2,2,3,3,3,3, # 80 - 87 + 4,4,4,4,4,4,4,4, # 88 - 8f + 4,4,4,4,4,4,4,4, # 90 - 97 + 4,4,4,4,4,4,4,4, # 98 - 9f + 5,5,5,5,5,5,5,5, # a0 - a7 + 5,5,5,5,5,5,5,5, # a8 - af + 5,5,5,5,5,5,5,5, # b0 - b7 + 5,5,5,5,5,5,5,5, # b8 - bf + 0,0,6,6,6,6,6,6, # c0 - c7 + 6,6,6,6,6,6,6,6, # c8 - cf + 6,6,6,6,6,6,6,6, # d0 - d7 + 6,6,6,6,6,6,6,6, # d8 - df + 7,8,8,8,8,8,8,8, # e0 - e7 + 8,8,8,8,8,9,8,8, # e8 - ef + 10,11,11,11,11,11,11,11, # f0 - f7 + 12,13,13,13,14,15,0,0 # f8 - ff +) + +UTF8_ST = ( + MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07 + 9, 11, 8, 7, 6, 5, 4, 3,#08-0f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27 + MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f + MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f + MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f + MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f + MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af + MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf + MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7 + MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf +) + +UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) + +UTF8_SM_MODEL = {'class_table': UTF8_CLS, + 'class_factor': 16, + 'state_table': UTF8_ST, + 'char_len_table': UTF8_CHAR_LEN_TABLE, + 'name': 'UTF-8'} diff --git a/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py b/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py new file mode 100644 index 0000000..0adb51d --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py @@ -0,0 +1,132 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import CharacterCategory, ProbingState, SequenceLikelihood + + +class SingleByteCharSetProber(CharSetProber): + SAMPLE_SIZE = 64 + SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2 + POSITIVE_SHORTCUT_THRESHOLD = 0.95 + NEGATIVE_SHORTCUT_THRESHOLD = 0.05 + + def __init__(self, model, reversed=False, name_prober=None): + super(SingleByteCharSetProber, self).__init__() + self._model = model + # TRUE if we need to reverse every pair in the model lookup + self._reversed = reversed + # Optional auxiliary prober for name decision + self._name_prober = name_prober + self._last_order = None + self._seq_counters = None + self._total_seqs = None + self._total_char = None + self._freq_char = None + self.reset() + + def reset(self): + super(SingleByteCharSetProber, self).reset() + # char order of last character + self._last_order = 255 + self._seq_counters = [0] * SequenceLikelihood.get_num_categories() + self._total_seqs = 0 + self._total_char = 0 + # characters that fall in our sampling range + self._freq_char = 0 + + @property + def charset_name(self): + if self._name_prober: + return self._name_prober.charset_name + else: + return self._model['charset_name'] + + @property + def language(self): + if self._name_prober: + return self._name_prober.language + else: + return self._model.get('language') + + def feed(self, byte_str): + if not self._model['keep_english_letter']: + byte_str = self.filter_international_words(byte_str) + if not byte_str: + return self.state + char_to_order_map = self._model['char_to_order_map'] + for i, c in enumerate(byte_str): + # XXX: Order is in range 1-64, so one would think we want 0-63 here, + # but that leads to 27 more test failures than before. + order = char_to_order_map[c] + # XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but + # CharacterCategory.SYMBOL is actually 253, so we use CONTROL + # to make it closer to the original intent. The only difference + # is whether or not we count digits and control characters for + # _total_char purposes. + if order < CharacterCategory.CONTROL: + self._total_char += 1 + if order < self.SAMPLE_SIZE: + self._freq_char += 1 + if self._last_order < self.SAMPLE_SIZE: + self._total_seqs += 1 + if not self._reversed: + i = (self._last_order * self.SAMPLE_SIZE) + order + model = self._model['precedence_matrix'][i] + else: # reverse the order of the letters in the lookup + i = (order * self.SAMPLE_SIZE) + self._last_order + model = self._model['precedence_matrix'][i] + self._seq_counters[model] += 1 + self._last_order = order + + charset_name = self._model['charset_name'] + if self.state == ProbingState.DETECTING: + if self._total_seqs > self.SB_ENOUGH_REL_THRESHOLD: + confidence = self.get_confidence() + if confidence > self.POSITIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, we have a winner', + charset_name, confidence) + self._state = ProbingState.FOUND_IT + elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD: + self.logger.debug('%s confidence = %s, below negative ' + 'shortcut threshhold %s', charset_name, + confidence, + self.NEGATIVE_SHORTCUT_THRESHOLD) + self._state = ProbingState.NOT_ME + + return self.state + + def get_confidence(self): + r = 0.01 + if self._total_seqs > 0: + r = ((1.0 * self._seq_counters[SequenceLikelihood.POSITIVE]) / + self._total_seqs / self._model['typical_positive_ratio']) + r = r * self._freq_char / self._total_char + if r >= 1.0: + r = 0.99 + return r diff --git a/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py b/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py new file mode 100644 index 0000000..98e95dc --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py @@ -0,0 +1,73 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetgroupprober import CharSetGroupProber +from .sbcharsetprober import SingleByteCharSetProber +from .langcyrillicmodel import (Win1251CyrillicModel, Koi8rModel, + Latin5CyrillicModel, MacCyrillicModel, + Ibm866Model, Ibm855Model) +from .langgreekmodel import Latin7GreekModel, Win1253GreekModel +from .langbulgarianmodel import Latin5BulgarianModel, Win1251BulgarianModel +# from .langhungarianmodel import Latin2HungarianModel, Win1250HungarianModel +from .langthaimodel import TIS620ThaiModel +from .langhebrewmodel import Win1255HebrewModel +from .hebrewprober import HebrewProber +from .langturkishmodel import Latin5TurkishModel + + +class SBCSGroupProber(CharSetGroupProber): + def __init__(self): + super(SBCSGroupProber, self).__init__() + self.probers = [ + SingleByteCharSetProber(Win1251CyrillicModel), + SingleByteCharSetProber(Koi8rModel), + SingleByteCharSetProber(Latin5CyrillicModel), + SingleByteCharSetProber(MacCyrillicModel), + SingleByteCharSetProber(Ibm866Model), + SingleByteCharSetProber(Ibm855Model), + SingleByteCharSetProber(Latin7GreekModel), + SingleByteCharSetProber(Win1253GreekModel), + SingleByteCharSetProber(Latin5BulgarianModel), + SingleByteCharSetProber(Win1251BulgarianModel), + # TODO: Restore Hungarian encodings (iso-8859-2 and windows-1250) + # after we retrain model. + # SingleByteCharSetProber(Latin2HungarianModel), + # SingleByteCharSetProber(Win1250HungarianModel), + SingleByteCharSetProber(TIS620ThaiModel), + SingleByteCharSetProber(Latin5TurkishModel), + ] + hebrew_prober = HebrewProber() + logical_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, + False, hebrew_prober) + visual_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, True, + hebrew_prober) + hebrew_prober.set_model_probers(logical_hebrew_prober, visual_hebrew_prober) + self.probers.extend([hebrew_prober, logical_hebrew_prober, + visual_hebrew_prober]) + + self.reset() diff --git a/Lib/site-packages/pip/_vendor/chardet/sjisprober.py b/Lib/site-packages/pip/_vendor/chardet/sjisprober.py new file mode 100644 index 0000000..9e29623 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/sjisprober.py @@ -0,0 +1,92 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .mbcharsetprober import MultiByteCharSetProber +from .codingstatemachine import CodingStateMachine +from .chardistribution import SJISDistributionAnalysis +from .jpcntx import SJISContextAnalysis +from .mbcssm import SJIS_SM_MODEL +from .enums import ProbingState, MachineState + + +class SJISProber(MultiByteCharSetProber): + def __init__(self): + super(SJISProber, self).__init__() + self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) + self.distribution_analyzer = SJISDistributionAnalysis() + self.context_analyzer = SJISContextAnalysis() + self.reset() + + def reset(self): + super(SJISProber, self).reset() + self.context_analyzer.reset() + + @property + def charset_name(self): + return self.context_analyzer.charset_name + + @property + def language(self): + return "Japanese" + + def feed(self, byte_str): + for i in range(len(byte_str)): + coding_state = self.coding_sm.next_state(byte_str[i]) + if coding_state == MachineState.ERROR: + self.logger.debug('%s %s prober hit error at byte %s', + self.charset_name, self.language, i) + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + char_len = self.coding_sm.get_current_charlen() + if i == 0: + self._last_char[1] = byte_str[0] + self.context_analyzer.feed(self._last_char[2 - char_len:], + char_len) + self.distribution_analyzer.feed(self._last_char, char_len) + else: + self.context_analyzer.feed(byte_str[i + 1 - char_len:i + 3 + - char_len], char_len) + self.distribution_analyzer.feed(byte_str[i - 1:i + 1], + char_len) + + self._last_char[0] = byte_str[-1] + + if self.state == ProbingState.DETECTING: + if (self.context_analyzer.got_enough_data() and + (self.get_confidence() > self.SHORTCUT_THRESHOLD)): + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + context_conf = self.context_analyzer.get_confidence() + distrib_conf = self.distribution_analyzer.get_confidence() + return max(context_conf, distrib_conf) diff --git a/Lib/site-packages/pip/_vendor/chardet/universaldetector.py b/Lib/site-packages/pip/_vendor/chardet/universaldetector.py new file mode 100644 index 0000000..7b4e92d --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/universaldetector.py @@ -0,0 +1,286 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# Shy Shalom - original C code +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### +""" +Module containing the UniversalDetector detector class, which is the primary +class a user of ``chardet`` should use. + +:author: Mark Pilgrim (initial port to Python) +:author: Shy Shalom (original C code) +:author: Dan Blanchard (major refactoring for 3.0) +:author: Ian Cordasco +""" + + +import codecs +import logging +import re + +from .charsetgroupprober import CharSetGroupProber +from .enums import InputState, LanguageFilter, ProbingState +from .escprober import EscCharSetProber +from .latin1prober import Latin1Prober +from .mbcsgroupprober import MBCSGroupProber +from .sbcsgroupprober import SBCSGroupProber + + +class UniversalDetector(object): + """ + The ``UniversalDetector`` class underlies the ``chardet.detect`` function + and coordinates all of the different charset probers. + + To get a ``dict`` containing an encoding and its confidence, you can simply + run: + + .. code:: + + u = UniversalDetector() + u.feed(some_bytes) + u.close() + detected = u.result + + """ + + MINIMUM_THRESHOLD = 0.20 + HIGH_BYTE_DETECTOR = re.compile(b'[\x80-\xFF]') + ESC_DETECTOR = re.compile(b'(\033|~{)') + WIN_BYTE_DETECTOR = re.compile(b'[\x80-\x9F]') + ISO_WIN_MAP = {'iso-8859-1': 'Windows-1252', + 'iso-8859-2': 'Windows-1250', + 'iso-8859-5': 'Windows-1251', + 'iso-8859-6': 'Windows-1256', + 'iso-8859-7': 'Windows-1253', + 'iso-8859-8': 'Windows-1255', + 'iso-8859-9': 'Windows-1254', + 'iso-8859-13': 'Windows-1257'} + + def __init__(self, lang_filter=LanguageFilter.ALL): + self._esc_charset_prober = None + self._charset_probers = [] + self.result = None + self.done = None + self._got_data = None + self._input_state = None + self._last_char = None + self.lang_filter = lang_filter + self.logger = logging.getLogger(__name__) + self._has_win_bytes = None + self.reset() + + def reset(self): + """ + Reset the UniversalDetector and all of its probers back to their + initial states. This is called by ``__init__``, so you only need to + call this directly in between analyses of different documents. + """ + self.result = {'encoding': None, 'confidence': 0.0, 'language': None} + self.done = False + self._got_data = False + self._has_win_bytes = False + self._input_state = InputState.PURE_ASCII + self._last_char = b'' + if self._esc_charset_prober: + self._esc_charset_prober.reset() + for prober in self._charset_probers: + prober.reset() + + def feed(self, byte_str): + """ + Takes a chunk of a document and feeds it through all of the relevant + charset probers. + + After calling ``feed``, you can check the value of the ``done`` + attribute to see if you need to continue feeding the + ``UniversalDetector`` more data, or if it has made a prediction + (in the ``result`` attribute). + + .. note:: + You should always call ``close`` when you're done feeding in your + document if ``done`` is not already ``True``. + """ + if self.done: + return + + if not len(byte_str): + return + + if not isinstance(byte_str, bytearray): + byte_str = bytearray(byte_str) + + # First check for known BOMs, since these are guaranteed to be correct + if not self._got_data: + # If the data starts with BOM, we know it is UTF + if byte_str.startswith(codecs.BOM_UTF8): + # EF BB BF UTF-8 with BOM + self.result = {'encoding': "UTF-8-SIG", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_UTF32_LE, + codecs.BOM_UTF32_BE)): + # FF FE 00 00 UTF-32, little-endian BOM + # 00 00 FE FF UTF-32, big-endian BOM + self.result = {'encoding': "UTF-32", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\xFE\xFF\x00\x00'): + # FE FF 00 00 UCS-4, unusual octet order BOM (3412) + self.result = {'encoding': "X-ISO-10646-UCS-4-3412", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith(b'\x00\x00\xFF\xFE'): + # 00 00 FF FE UCS-4, unusual octet order BOM (2143) + self.result = {'encoding': "X-ISO-10646-UCS-4-2143", + 'confidence': 1.0, + 'language': ''} + elif byte_str.startswith((codecs.BOM_LE, codecs.BOM_BE)): + # FF FE UTF-16, little endian BOM + # FE FF UTF-16, big endian BOM + self.result = {'encoding': "UTF-16", + 'confidence': 1.0, + 'language': ''} + + self._got_data = True + if self.result['encoding'] is not None: + self.done = True + return + + # If none of those matched and we've only see ASCII so far, check + # for high bytes and escape sequences + if self._input_state == InputState.PURE_ASCII: + if self.HIGH_BYTE_DETECTOR.search(byte_str): + self._input_state = InputState.HIGH_BYTE + elif self._input_state == InputState.PURE_ASCII and \ + self.ESC_DETECTOR.search(self._last_char + byte_str): + self._input_state = InputState.ESC_ASCII + + self._last_char = byte_str[-1:] + + # If we've seen escape sequences, use the EscCharSetProber, which + # uses a simple state machine to check for known escape sequences in + # HZ and ISO-2022 encodings, since those are the only encodings that + # use such sequences. + if self._input_state == InputState.ESC_ASCII: + if not self._esc_charset_prober: + self._esc_charset_prober = EscCharSetProber(self.lang_filter) + if self._esc_charset_prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': + self._esc_charset_prober.charset_name, + 'confidence': + self._esc_charset_prober.get_confidence(), + 'language': + self._esc_charset_prober.language} + self.done = True + # If we've seen high bytes (i.e., those with values greater than 127), + # we need to do more complicated checks using all our multi-byte and + # single-byte probers that are left. The single-byte probers + # use character bigram distributions to determine the encoding, whereas + # the multi-byte probers use a combination of character unigram and + # bigram distributions. + elif self._input_state == InputState.HIGH_BYTE: + if not self._charset_probers: + self._charset_probers = [MBCSGroupProber(self.lang_filter)] + # If we're checking non-CJK encodings, use single-byte prober + if self.lang_filter & LanguageFilter.NON_CJK: + self._charset_probers.append(SBCSGroupProber()) + self._charset_probers.append(Latin1Prober()) + for prober in self._charset_probers: + if prober.feed(byte_str) == ProbingState.FOUND_IT: + self.result = {'encoding': prober.charset_name, + 'confidence': prober.get_confidence(), + 'language': prober.language} + self.done = True + break + if self.WIN_BYTE_DETECTOR.search(byte_str): + self._has_win_bytes = True + + def close(self): + """ + Stop analyzing the current document and come up with a final + prediction. + + :returns: The ``result`` attribute, a ``dict`` with the keys + `encoding`, `confidence`, and `language`. + """ + # Don't bother with checks if we're already done + if self.done: + return self.result + self.done = True + + if not self._got_data: + self.logger.debug('no data received!') + + # Default to ASCII if it is all we've seen so far + elif self._input_state == InputState.PURE_ASCII: + self.result = {'encoding': 'ascii', + 'confidence': 1.0, + 'language': ''} + + # If we have seen non-ASCII, return the best that met MINIMUM_THRESHOLD + elif self._input_state == InputState.HIGH_BYTE: + prober_confidence = None + max_prober_confidence = 0.0 + max_prober = None + for prober in self._charset_probers: + if not prober: + continue + prober_confidence = prober.get_confidence() + if prober_confidence > max_prober_confidence: + max_prober_confidence = prober_confidence + max_prober = prober + if max_prober and (max_prober_confidence > self.MINIMUM_THRESHOLD): + charset_name = max_prober.charset_name + lower_charset_name = max_prober.charset_name.lower() + confidence = max_prober.get_confidence() + # Use Windows encoding name instead of ISO-8859 if we saw any + # extra Windows-specific bytes + if lower_charset_name.startswith('iso-8859'): + if self._has_win_bytes: + charset_name = self.ISO_WIN_MAP.get(lower_charset_name, + charset_name) + self.result = {'encoding': charset_name, + 'confidence': confidence, + 'language': max_prober.language} + + # Log all prober confidences if none met MINIMUM_THRESHOLD + if self.logger.getEffectiveLevel() == logging.DEBUG: + if self.result['encoding'] is None: + self.logger.debug('no probers hit minimum threshold') + for group_prober in self._charset_probers: + if not group_prober: + continue + if isinstance(group_prober, CharSetGroupProber): + for prober in group_prober.probers: + self.logger.debug('%s %s confidence = %s', + prober.charset_name, + prober.language, + prober.get_confidence()) + else: + self.logger.debug('%s %s confidence = %s', + prober.charset_name, + prober.language, + prober.get_confidence()) + return self.result diff --git a/Lib/site-packages/pip/_vendor/chardet/utf8prober.py b/Lib/site-packages/pip/_vendor/chardet/utf8prober.py new file mode 100644 index 0000000..6c3196c --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/utf8prober.py @@ -0,0 +1,82 @@ +######################## BEGIN LICENSE BLOCK ######################## +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Pilgrim - port to Python +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA +######################### END LICENSE BLOCK ######################### + +from .charsetprober import CharSetProber +from .enums import ProbingState, MachineState +from .codingstatemachine import CodingStateMachine +from .mbcssm import UTF8_SM_MODEL + + + +class UTF8Prober(CharSetProber): + ONE_CHAR_PROB = 0.5 + + def __init__(self): + super(UTF8Prober, self).__init__() + self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) + self._num_mb_chars = None + self.reset() + + def reset(self): + super(UTF8Prober, self).reset() + self.coding_sm.reset() + self._num_mb_chars = 0 + + @property + def charset_name(self): + return "utf-8" + + @property + def language(self): + return "" + + def feed(self, byte_str): + for c in byte_str: + coding_state = self.coding_sm.next_state(c) + if coding_state == MachineState.ERROR: + self._state = ProbingState.NOT_ME + break + elif coding_state == MachineState.ITS_ME: + self._state = ProbingState.FOUND_IT + break + elif coding_state == MachineState.START: + if self.coding_sm.get_current_charlen() >= 2: + self._num_mb_chars += 1 + + if self.state == ProbingState.DETECTING: + if self.get_confidence() > self.SHORTCUT_THRESHOLD: + self._state = ProbingState.FOUND_IT + + return self.state + + def get_confidence(self): + unlike = 0.99 + if self._num_mb_chars < 6: + unlike *= self.ONE_CHAR_PROB ** self._num_mb_chars + return 1.0 - unlike + else: + return unlike diff --git a/Lib/site-packages/pip/_vendor/chardet/version.py b/Lib/site-packages/pip/_vendor/chardet/version.py new file mode 100644 index 0000000..bb2a34a --- /dev/null +++ b/Lib/site-packages/pip/_vendor/chardet/version.py @@ -0,0 +1,9 @@ +""" +This module exists only to simplify retrieving the version number of chardet +from within setup.py and from chardet subpackages. + +:author: Dan Blanchard (dan.blanchard@gmail.com) +""" + +__version__ = "3.0.4" +VERSION = __version__.split('.') diff --git a/Lib/site-packages/pip/_vendor/colorama/__init__.py b/Lib/site-packages/pip/_vendor/colorama/__init__.py new file mode 100644 index 0000000..34c263c --- /dev/null +++ b/Lib/site-packages/pip/_vendor/colorama/__init__.py @@ -0,0 +1,6 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from .initialise import init, deinit, reinit, colorama_text +from .ansi import Fore, Back, Style, Cursor +from .ansitowin32 import AnsiToWin32 + +__version__ = '0.4.3' diff --git a/Lib/site-packages/pip/_vendor/colorama/ansi.py b/Lib/site-packages/pip/_vendor/colorama/ansi.py new file mode 100644 index 0000000..7877658 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/colorama/ansi.py @@ -0,0 +1,102 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +''' +This module generates ANSI character codes to printing colors to terminals. +See: http://en.wikipedia.org/wiki/ANSI_escape_code +''' + +CSI = '\033[' +OSC = '\033]' +BEL = '\007' + + +def code_to_chars(code): + return CSI + str(code) + 'm' + +def set_title(title): + return OSC + '2;' + title + BEL + +def clear_screen(mode=2): + return CSI + str(mode) + 'J' + +def clear_line(mode=2): + return CSI + str(mode) + 'K' + + +class AnsiCodes(object): + def __init__(self): + # the subclasses declare class attributes which are numbers. + # Upon instantiation we define instance attributes, which are the same + # as the class attributes but wrapped with the ANSI escape sequence + for name in dir(self): + if not name.startswith('_'): + value = getattr(self, name) + setattr(self, name, code_to_chars(value)) + + +class AnsiCursor(object): + def UP(self, n=1): + return CSI + str(n) + 'A' + def DOWN(self, n=1): + return CSI + str(n) + 'B' + def FORWARD(self, n=1): + return CSI + str(n) + 'C' + def BACK(self, n=1): + return CSI + str(n) + 'D' + def POS(self, x=1, y=1): + return CSI + str(y) + ';' + str(x) + 'H' + + +class AnsiFore(AnsiCodes): + BLACK = 30 + RED = 31 + GREEN = 32 + YELLOW = 33 + BLUE = 34 + MAGENTA = 35 + CYAN = 36 + WHITE = 37 + RESET = 39 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 90 + LIGHTRED_EX = 91 + LIGHTGREEN_EX = 92 + LIGHTYELLOW_EX = 93 + LIGHTBLUE_EX = 94 + LIGHTMAGENTA_EX = 95 + LIGHTCYAN_EX = 96 + LIGHTWHITE_EX = 97 + + +class AnsiBack(AnsiCodes): + BLACK = 40 + RED = 41 + GREEN = 42 + YELLOW = 43 + BLUE = 44 + MAGENTA = 45 + CYAN = 46 + WHITE = 47 + RESET = 49 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 100 + LIGHTRED_EX = 101 + LIGHTGREEN_EX = 102 + LIGHTYELLOW_EX = 103 + LIGHTBLUE_EX = 104 + LIGHTMAGENTA_EX = 105 + LIGHTCYAN_EX = 106 + LIGHTWHITE_EX = 107 + + +class AnsiStyle(AnsiCodes): + BRIGHT = 1 + DIM = 2 + NORMAL = 22 + RESET_ALL = 0 + +Fore = AnsiFore() +Back = AnsiBack() +Style = AnsiStyle() +Cursor = AnsiCursor() diff --git a/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py b/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py new file mode 100644 index 0000000..359c92b --- /dev/null +++ b/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py @@ -0,0 +1,257 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import re +import sys +import os + +from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style +from .winterm import WinTerm, WinColor, WinStyle +from .win32 import windll, winapi_test + + +winterm = None +if windll is not None: + winterm = WinTerm() + + +class StreamWrapper(object): + ''' + Wraps a stream (such as stdout), acting as a transparent proxy for all + attribute access apart from method 'write()', which is delegated to our + Converter instance. + ''' + def __init__(self, wrapped, converter): + # double-underscore everything to prevent clashes with names of + # attributes on the wrapped stream object. + self.__wrapped = wrapped + self.__convertor = converter + + def __getattr__(self, name): + return getattr(self.__wrapped, name) + + def __enter__(self, *args, **kwargs): + # special method lookup bypasses __getattr__/__getattribute__, see + # https://stackoverflow.com/questions/12632894/why-doesnt-getattr-work-with-exit + # thus, contextlib magic methods are not proxied via __getattr__ + return self.__wrapped.__enter__(*args, **kwargs) + + def __exit__(self, *args, **kwargs): + return self.__wrapped.__exit__(*args, **kwargs) + + def write(self, text): + self.__convertor.write(text) + + def isatty(self): + stream = self.__wrapped + if 'PYCHARM_HOSTED' in os.environ: + if stream is not None and (stream is sys.__stdout__ or stream is sys.__stderr__): + return True + try: + stream_isatty = stream.isatty + except AttributeError: + return False + else: + return stream_isatty() + + @property + def closed(self): + stream = self.__wrapped + try: + return stream.closed + except AttributeError: + return True + + +class AnsiToWin32(object): + ''' + Implements a 'write()' method which, on Windows, will strip ANSI character + sequences from the text, and if outputting to a tty, will convert them into + win32 function calls. + ''' + ANSI_CSI_RE = re.compile('\001?\033\\[((?:\\d|;)*)([a-zA-Z])\002?') # Control Sequence Introducer + ANSI_OSC_RE = re.compile('\001?\033\\]((?:.|;)*?)(\x07)\002?') # Operating System Command + + def __init__(self, wrapped, convert=None, strip=None, autoreset=False): + # The wrapped stream (normally sys.stdout or sys.stderr) + self.wrapped = wrapped + + # should we reset colors to defaults after every .write() + self.autoreset = autoreset + + # create the proxy wrapping our output stream + self.stream = StreamWrapper(wrapped, self) + + on_windows = os.name == 'nt' + # We test if the WinAPI works, because even if we are on Windows + # we may be using a terminal that doesn't support the WinAPI + # (e.g. Cygwin Terminal). In this case it's up to the terminal + # to support the ANSI codes. + conversion_supported = on_windows and winapi_test() + + # should we strip ANSI sequences from our output? + if strip is None: + strip = conversion_supported or (not self.stream.closed and not self.stream.isatty()) + self.strip = strip + + # should we should convert ANSI sequences into win32 calls? + if convert is None: + convert = conversion_supported and not self.stream.closed and self.stream.isatty() + self.convert = convert + + # dict of ansi codes to win32 functions and parameters + self.win32_calls = self.get_win32_calls() + + # are we wrapping stderr? + self.on_stderr = self.wrapped is sys.stderr + + def should_wrap(self): + ''' + True if this class is actually needed. If false, then the output + stream will not be affected, nor will win32 calls be issued, so + wrapping stdout is not actually required. This will generally be + False on non-Windows platforms, unless optional functionality like + autoreset has been requested using kwargs to init() + ''' + return self.convert or self.strip or self.autoreset + + def get_win32_calls(self): + if self.convert and winterm: + return { + AnsiStyle.RESET_ALL: (winterm.reset_all, ), + AnsiStyle.BRIGHT: (winterm.style, WinStyle.BRIGHT), + AnsiStyle.DIM: (winterm.style, WinStyle.NORMAL), + AnsiStyle.NORMAL: (winterm.style, WinStyle.NORMAL), + AnsiFore.BLACK: (winterm.fore, WinColor.BLACK), + AnsiFore.RED: (winterm.fore, WinColor.RED), + AnsiFore.GREEN: (winterm.fore, WinColor.GREEN), + AnsiFore.YELLOW: (winterm.fore, WinColor.YELLOW), + AnsiFore.BLUE: (winterm.fore, WinColor.BLUE), + AnsiFore.MAGENTA: (winterm.fore, WinColor.MAGENTA), + AnsiFore.CYAN: (winterm.fore, WinColor.CYAN), + AnsiFore.WHITE: (winterm.fore, WinColor.GREY), + AnsiFore.RESET: (winterm.fore, ), + AnsiFore.LIGHTBLACK_EX: (winterm.fore, WinColor.BLACK, True), + AnsiFore.LIGHTRED_EX: (winterm.fore, WinColor.RED, True), + AnsiFore.LIGHTGREEN_EX: (winterm.fore, WinColor.GREEN, True), + AnsiFore.LIGHTYELLOW_EX: (winterm.fore, WinColor.YELLOW, True), + AnsiFore.LIGHTBLUE_EX: (winterm.fore, WinColor.BLUE, True), + AnsiFore.LIGHTMAGENTA_EX: (winterm.fore, WinColor.MAGENTA, True), + AnsiFore.LIGHTCYAN_EX: (winterm.fore, WinColor.CYAN, True), + AnsiFore.LIGHTWHITE_EX: (winterm.fore, WinColor.GREY, True), + AnsiBack.BLACK: (winterm.back, WinColor.BLACK), + AnsiBack.RED: (winterm.back, WinColor.RED), + AnsiBack.GREEN: (winterm.back, WinColor.GREEN), + AnsiBack.YELLOW: (winterm.back, WinColor.YELLOW), + AnsiBack.BLUE: (winterm.back, WinColor.BLUE), + AnsiBack.MAGENTA: (winterm.back, WinColor.MAGENTA), + AnsiBack.CYAN: (winterm.back, WinColor.CYAN), + AnsiBack.WHITE: (winterm.back, WinColor.GREY), + AnsiBack.RESET: (winterm.back, ), + AnsiBack.LIGHTBLACK_EX: (winterm.back, WinColor.BLACK, True), + AnsiBack.LIGHTRED_EX: (winterm.back, WinColor.RED, True), + AnsiBack.LIGHTGREEN_EX: (winterm.back, WinColor.GREEN, True), + AnsiBack.LIGHTYELLOW_EX: (winterm.back, WinColor.YELLOW, True), + AnsiBack.LIGHTBLUE_EX: (winterm.back, WinColor.BLUE, True), + AnsiBack.LIGHTMAGENTA_EX: (winterm.back, WinColor.MAGENTA, True), + AnsiBack.LIGHTCYAN_EX: (winterm.back, WinColor.CYAN, True), + AnsiBack.LIGHTWHITE_EX: (winterm.back, WinColor.GREY, True), + } + return dict() + + def write(self, text): + if self.strip or self.convert: + self.write_and_convert(text) + else: + self.wrapped.write(text) + self.wrapped.flush() + if self.autoreset: + self.reset_all() + + + def reset_all(self): + if self.convert: + self.call_win32('m', (0,)) + elif not self.strip and not self.stream.closed: + self.wrapped.write(Style.RESET_ALL) + + + def write_and_convert(self, text): + ''' + Write the given text to our wrapped stream, stripping any ANSI + sequences from the text, and optionally converting them into win32 + calls. + ''' + cursor = 0 + text = self.convert_osc(text) + for match in self.ANSI_CSI_RE.finditer(text): + start, end = match.span() + self.write_plain_text(text, cursor, start) + self.convert_ansi(*match.groups()) + cursor = end + self.write_plain_text(text, cursor, len(text)) + + + def write_plain_text(self, text, start, end): + if start < end: + self.wrapped.write(text[start:end]) + self.wrapped.flush() + + + def convert_ansi(self, paramstring, command): + if self.convert: + params = self.extract_params(command, paramstring) + self.call_win32(command, params) + + + def extract_params(self, command, paramstring): + if command in 'Hf': + params = tuple(int(p) if len(p) != 0 else 1 for p in paramstring.split(';')) + while len(params) < 2: + # defaults: + params = params + (1,) + else: + params = tuple(int(p) for p in paramstring.split(';') if len(p) != 0) + if len(params) == 0: + # defaults: + if command in 'JKm': + params = (0,) + elif command in 'ABCD': + params = (1,) + + return params + + + def call_win32(self, command, params): + if command == 'm': + for param in params: + if param in self.win32_calls: + func_args = self.win32_calls[param] + func = func_args[0] + args = func_args[1:] + kwargs = dict(on_stderr=self.on_stderr) + func(*args, **kwargs) + elif command in 'J': + winterm.erase_screen(params[0], on_stderr=self.on_stderr) + elif command in 'K': + winterm.erase_line(params[0], on_stderr=self.on_stderr) + elif command in 'Hf': # cursor position - absolute + winterm.set_cursor_position(params, on_stderr=self.on_stderr) + elif command in 'ABCD': # cursor position - relative + n = params[0] + # A - up, B - down, C - forward, D - back + x, y = {'A': (0, -n), 'B': (0, n), 'C': (n, 0), 'D': (-n, 0)}[command] + winterm.cursor_adjust(x, y, on_stderr=self.on_stderr) + + + def convert_osc(self, text): + for match in self.ANSI_OSC_RE.finditer(text): + start, end = match.span() + text = text[:start] + text[end:] + paramstring, command = match.groups() + if command in '\x07': # \x07 = BEL + params = paramstring.split(";") + # 0 - change title and icon (we will only change title) + # 1 - change icon (we don't support this) + # 2 - change title + if params[0] in '02': + winterm.set_title(params[1]) + return text diff --git a/Lib/site-packages/pip/_vendor/colorama/initialise.py b/Lib/site-packages/pip/_vendor/colorama/initialise.py new file mode 100644 index 0000000..430d066 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/colorama/initialise.py @@ -0,0 +1,80 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import atexit +import contextlib +import sys + +from .ansitowin32 import AnsiToWin32 + + +orig_stdout = None +orig_stderr = None + +wrapped_stdout = None +wrapped_stderr = None + +atexit_done = False + + +def reset_all(): + if AnsiToWin32 is not None: # Issue #74: objects might become None at exit + AnsiToWin32(orig_stdout).reset_all() + + +def init(autoreset=False, convert=None, strip=None, wrap=True): + + if not wrap and any([autoreset, convert, strip]): + raise ValueError('wrap=False conflicts with any other arg=True') + + global wrapped_stdout, wrapped_stderr + global orig_stdout, orig_stderr + + orig_stdout = sys.stdout + orig_stderr = sys.stderr + + if sys.stdout is None: + wrapped_stdout = None + else: + sys.stdout = wrapped_stdout = \ + wrap_stream(orig_stdout, convert, strip, autoreset, wrap) + if sys.stderr is None: + wrapped_stderr = None + else: + sys.stderr = wrapped_stderr = \ + wrap_stream(orig_stderr, convert, strip, autoreset, wrap) + + global atexit_done + if not atexit_done: + atexit.register(reset_all) + atexit_done = True + + +def deinit(): + if orig_stdout is not None: + sys.stdout = orig_stdout + if orig_stderr is not None: + sys.stderr = orig_stderr + + +@contextlib.contextmanager +def colorama_text(*args, **kwargs): + init(*args, **kwargs) + try: + yield + finally: + deinit() + + +def reinit(): + if wrapped_stdout is not None: + sys.stdout = wrapped_stdout + if wrapped_stderr is not None: + sys.stderr = wrapped_stderr + + +def wrap_stream(stream, convert, strip, autoreset, wrap): + if wrap: + wrapper = AnsiToWin32(stream, + convert=convert, strip=strip, autoreset=autoreset) + if wrapper.should_wrap(): + stream = wrapper.stream + return stream diff --git a/Lib/site-packages/pip/_vendor/colorama/win32.py b/Lib/site-packages/pip/_vendor/colorama/win32.py new file mode 100644 index 0000000..c2d8360 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/colorama/win32.py @@ -0,0 +1,152 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. + +# from winbase.h +STDOUT = -11 +STDERR = -12 + +try: + import ctypes + from ctypes import LibraryLoader + windll = LibraryLoader(ctypes.WinDLL) + from ctypes import wintypes +except (AttributeError, ImportError): + windll = None + SetConsoleTextAttribute = lambda *_: None + winapi_test = lambda *_: None +else: + from ctypes import byref, Structure, c_char, POINTER + + COORD = wintypes._COORD + + class CONSOLE_SCREEN_BUFFER_INFO(Structure): + """struct in wincon.h.""" + _fields_ = [ + ("dwSize", COORD), + ("dwCursorPosition", COORD), + ("wAttributes", wintypes.WORD), + ("srWindow", wintypes.SMALL_RECT), + ("dwMaximumWindowSize", COORD), + ] + def __str__(self): + return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % ( + self.dwSize.Y, self.dwSize.X + , self.dwCursorPosition.Y, self.dwCursorPosition.X + , self.wAttributes + , self.srWindow.Top, self.srWindow.Left, self.srWindow.Bottom, self.srWindow.Right + , self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X + ) + + _GetStdHandle = windll.kernel32.GetStdHandle + _GetStdHandle.argtypes = [ + wintypes.DWORD, + ] + _GetStdHandle.restype = wintypes.HANDLE + + _GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo + _GetConsoleScreenBufferInfo.argtypes = [ + wintypes.HANDLE, + POINTER(CONSOLE_SCREEN_BUFFER_INFO), + ] + _GetConsoleScreenBufferInfo.restype = wintypes.BOOL + + _SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute + _SetConsoleTextAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + ] + _SetConsoleTextAttribute.restype = wintypes.BOOL + + _SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition + _SetConsoleCursorPosition.argtypes = [ + wintypes.HANDLE, + COORD, + ] + _SetConsoleCursorPosition.restype = wintypes.BOOL + + _FillConsoleOutputCharacterA = windll.kernel32.FillConsoleOutputCharacterA + _FillConsoleOutputCharacterA.argtypes = [ + wintypes.HANDLE, + c_char, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputCharacterA.restype = wintypes.BOOL + + _FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute + _FillConsoleOutputAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputAttribute.restype = wintypes.BOOL + + _SetConsoleTitleW = windll.kernel32.SetConsoleTitleW + _SetConsoleTitleW.argtypes = [ + wintypes.LPCWSTR + ] + _SetConsoleTitleW.restype = wintypes.BOOL + + def _winapi_test(handle): + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return bool(success) + + def winapi_test(): + return any(_winapi_test(h) for h in + (_GetStdHandle(STDOUT), _GetStdHandle(STDERR))) + + def GetConsoleScreenBufferInfo(stream_id=STDOUT): + handle = _GetStdHandle(stream_id) + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return csbi + + def SetConsoleTextAttribute(stream_id, attrs): + handle = _GetStdHandle(stream_id) + return _SetConsoleTextAttribute(handle, attrs) + + def SetConsoleCursorPosition(stream_id, position, adjust=True): + position = COORD(*position) + # If the position is out of range, do nothing. + if position.Y <= 0 or position.X <= 0: + return + # Adjust for Windows' SetConsoleCursorPosition: + # 1. being 0-based, while ANSI is 1-based. + # 2. expecting (x,y), while ANSI uses (y,x). + adjusted_position = COORD(position.Y - 1, position.X - 1) + if adjust: + # Adjust for viewport's scroll position + sr = GetConsoleScreenBufferInfo(STDOUT).srWindow + adjusted_position.Y += sr.Top + adjusted_position.X += sr.Left + # Resume normal processing + handle = _GetStdHandle(stream_id) + return _SetConsoleCursorPosition(handle, adjusted_position) + + def FillConsoleOutputCharacter(stream_id, char, length, start): + handle = _GetStdHandle(stream_id) + char = c_char(char.encode()) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + success = _FillConsoleOutputCharacterA( + handle, char, length, start, byref(num_written)) + return num_written.value + + def FillConsoleOutputAttribute(stream_id, attr, length, start): + ''' FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )''' + handle = _GetStdHandle(stream_id) + attribute = wintypes.WORD(attr) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + return _FillConsoleOutputAttribute( + handle, attribute, length, start, byref(num_written)) + + def SetConsoleTitle(title): + return _SetConsoleTitleW(title) diff --git a/Lib/site-packages/pip/_vendor/colorama/winterm.py b/Lib/site-packages/pip/_vendor/colorama/winterm.py new file mode 100644 index 0000000..0fdb4ec --- /dev/null +++ b/Lib/site-packages/pip/_vendor/colorama/winterm.py @@ -0,0 +1,169 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from . import win32 + + +# from wincon.h +class WinColor(object): + BLACK = 0 + BLUE = 1 + GREEN = 2 + CYAN = 3 + RED = 4 + MAGENTA = 5 + YELLOW = 6 + GREY = 7 + +# from wincon.h +class WinStyle(object): + NORMAL = 0x00 # dim text, dim background + BRIGHT = 0x08 # bright text, dim background + BRIGHT_BACKGROUND = 0x80 # dim text, bright background + +class WinTerm(object): + + def __init__(self): + self._default = win32.GetConsoleScreenBufferInfo(win32.STDOUT).wAttributes + self.set_attrs(self._default) + self._default_fore = self._fore + self._default_back = self._back + self._default_style = self._style + # In order to emulate LIGHT_EX in windows, we borrow the BRIGHT style. + # So that LIGHT_EX colors and BRIGHT style do not clobber each other, + # we track them separately, since LIGHT_EX is overwritten by Fore/Back + # and BRIGHT is overwritten by Style codes. + self._light = 0 + + def get_attrs(self): + return self._fore + self._back * 16 + (self._style | self._light) + + def set_attrs(self, value): + self._fore = value & 7 + self._back = (value >> 4) & 7 + self._style = value & (WinStyle.BRIGHT | WinStyle.BRIGHT_BACKGROUND) + + def reset_all(self, on_stderr=None): + self.set_attrs(self._default) + self.set_console(attrs=self._default) + self._light = 0 + + def fore(self, fore=None, light=False, on_stderr=False): + if fore is None: + fore = self._default_fore + self._fore = fore + # Emulate LIGHT_EX with BRIGHT Style + if light: + self._light |= WinStyle.BRIGHT + else: + self._light &= ~WinStyle.BRIGHT + self.set_console(on_stderr=on_stderr) + + def back(self, back=None, light=False, on_stderr=False): + if back is None: + back = self._default_back + self._back = back + # Emulate LIGHT_EX with BRIGHT_BACKGROUND Style + if light: + self._light |= WinStyle.BRIGHT_BACKGROUND + else: + self._light &= ~WinStyle.BRIGHT_BACKGROUND + self.set_console(on_stderr=on_stderr) + + def style(self, style=None, on_stderr=False): + if style is None: + style = self._default_style + self._style = style + self.set_console(on_stderr=on_stderr) + + def set_console(self, attrs=None, on_stderr=False): + if attrs is None: + attrs = self.get_attrs() + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleTextAttribute(handle, attrs) + + def get_position(self, handle): + position = win32.GetConsoleScreenBufferInfo(handle).dwCursorPosition + # Because Windows coordinates are 0-based, + # and win32.SetConsoleCursorPosition expects 1-based. + position.X += 1 + position.Y += 1 + return position + + def set_cursor_position(self, position=None, on_stderr=False): + if position is None: + # I'm not currently tracking the position, so there is no default. + # position = self.get_position() + return + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleCursorPosition(handle, position) + + def cursor_adjust(self, x, y, on_stderr=False): + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + position = self.get_position(handle) + adjusted_position = (position.Y + y, position.X + x) + win32.SetConsoleCursorPosition(handle, adjusted_position, adjust=False) + + def erase_screen(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the screen. + # 1 should clear from the cursor to the beginning of the screen. + # 2 should clear the entire screen, and move cursor to (1,1) + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + # get the number of character cells in the current buffer + cells_in_screen = csbi.dwSize.X * csbi.dwSize.Y + # get number of character cells before current cursor position + cells_before_cursor = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = cells_in_screen - cells_before_cursor + elif mode == 1: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_before_cursor + elif mode == 2: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_in_screen + else: + # invalid mode + return + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + if mode == 2: + # put the cursor where needed + win32.SetConsoleCursorPosition(handle, (1, 1)) + + def erase_line(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the line. + # 1 should clear from the cursor to the beginning of the line. + # 2 should clear the entire line. + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = csbi.dwSize.X - csbi.dwCursorPosition.X + elif mode == 1: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwCursorPosition.X + elif mode == 2: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwSize.X + else: + # invalid mode + return + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + + def set_title(self, title): + win32.SetConsoleTitle(title) diff --git a/Lib/site-packages/pip/_vendor/contextlib2.py b/Lib/site-packages/pip/_vendor/contextlib2.py new file mode 100644 index 0000000..3aae8f4 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/contextlib2.py @@ -0,0 +1,518 @@ +"""contextlib2 - backports and enhancements to the contextlib module""" + +import abc +import sys +import warnings +from collections import deque +from functools import wraps + +__all__ = ["contextmanager", "closing", "nullcontext", + "AbstractContextManager", + "ContextDecorator", "ExitStack", + "redirect_stdout", "redirect_stderr", "suppress"] + +# Backwards compatibility +__all__ += ["ContextStack"] + + +# Backport abc.ABC +if sys.version_info[:2] >= (3, 4): + _abc_ABC = abc.ABC +else: + _abc_ABC = abc.ABCMeta('ABC', (object,), {'__slots__': ()}) + + +# Backport classic class MRO +def _classic_mro(C, result): + if C in result: + return + result.append(C) + for B in C.__bases__: + _classic_mro(B, result) + return result + + +# Backport _collections_abc._check_methods +def _check_methods(C, *methods): + try: + mro = C.__mro__ + except AttributeError: + mro = tuple(_classic_mro(C, [])) + + for method in methods: + for B in mro: + if method in B.__dict__: + if B.__dict__[method] is None: + return NotImplemented + break + else: + return NotImplemented + return True + + +class AbstractContextManager(_abc_ABC): + """An abstract base class for context managers.""" + + def __enter__(self): + """Return `self` upon entering the runtime context.""" + return self + + @abc.abstractmethod + def __exit__(self, exc_type, exc_value, traceback): + """Raise any exception triggered within the runtime context.""" + return None + + @classmethod + def __subclasshook__(cls, C): + """Check whether subclass is considered a subclass of this ABC.""" + if cls is AbstractContextManager: + return _check_methods(C, "__enter__", "__exit__") + return NotImplemented + + +class ContextDecorator(object): + """A base class or mixin that enables context managers to work as decorators.""" + + def refresh_cm(self): + """Returns the context manager used to actually wrap the call to the + decorated function. + + The default implementation just returns *self*. + + Overriding this method allows otherwise one-shot context managers + like _GeneratorContextManager to support use as decorators via + implicit recreation. + + DEPRECATED: refresh_cm was never added to the standard library's + ContextDecorator API + """ + warnings.warn("refresh_cm was never added to the standard library", + DeprecationWarning) + return self._recreate_cm() + + def _recreate_cm(self): + """Return a recreated instance of self. + + Allows an otherwise one-shot context manager like + _GeneratorContextManager to support use as + a decorator via implicit recreation. + + This is a private interface just for _GeneratorContextManager. + See issue #11647 for details. + """ + return self + + def __call__(self, func): + @wraps(func) + def inner(*args, **kwds): + with self._recreate_cm(): + return func(*args, **kwds) + return inner + + +class _GeneratorContextManager(ContextDecorator): + """Helper for @contextmanager decorator.""" + + def __init__(self, func, args, kwds): + self.gen = func(*args, **kwds) + self.func, self.args, self.kwds = func, args, kwds + # Issue 19330: ensure context manager instances have good docstrings + doc = getattr(func, "__doc__", None) + if doc is None: + doc = type(self).__doc__ + self.__doc__ = doc + # Unfortunately, this still doesn't provide good help output when + # inspecting the created context manager instances, since pydoc + # currently bypasses the instance docstring and shows the docstring + # for the class instead. + # See http://bugs.python.org/issue19404 for more details. + + def _recreate_cm(self): + # _GCM instances are one-shot context managers, so the + # CM must be recreated each time a decorated function is + # called + return self.__class__(self.func, self.args, self.kwds) + + def __enter__(self): + try: + return next(self.gen) + except StopIteration: + raise RuntimeError("generator didn't yield") + + def __exit__(self, type, value, traceback): + if type is None: + try: + next(self.gen) + except StopIteration: + return + else: + raise RuntimeError("generator didn't stop") + else: + if value is None: + # Need to force instantiation so we can reliably + # tell if we get the same exception back + value = type() + try: + self.gen.throw(type, value, traceback) + raise RuntimeError("generator didn't stop after throw()") + except StopIteration as exc: + # Suppress StopIteration *unless* it's the same exception that + # was passed to throw(). This prevents a StopIteration + # raised inside the "with" statement from being suppressed. + return exc is not value + except RuntimeError as exc: + # Don't re-raise the passed in exception + if exc is value: + return False + # Likewise, avoid suppressing if a StopIteration exception + # was passed to throw() and later wrapped into a RuntimeError + # (see PEP 479). + if _HAVE_EXCEPTION_CHAINING and exc.__cause__ is value: + return False + raise + except: + # only re-raise if it's *not* the exception that was + # passed to throw(), because __exit__() must not raise + # an exception unless __exit__() itself failed. But throw() + # has to raise the exception to signal propagation, so this + # fixes the impedance mismatch between the throw() protocol + # and the __exit__() protocol. + # + if sys.exc_info()[1] is not value: + raise + + +def contextmanager(func): + """@contextmanager decorator. + + Typical usage: + + @contextmanager + def some_generator(): + + try: + yield + finally: + + + This makes this: + + with some_generator() as : + + + equivalent to this: + + + try: + = + + finally: + + + """ + @wraps(func) + def helper(*args, **kwds): + return _GeneratorContextManager(func, args, kwds) + return helper + + +class closing(object): + """Context to automatically close something at the end of a block. + + Code like this: + + with closing(.open()) as f: + + + is equivalent to this: + + f = .open() + try: + + finally: + f.close() + + """ + def __init__(self, thing): + self.thing = thing + + def __enter__(self): + return self.thing + + def __exit__(self, *exc_info): + self.thing.close() + + +class _RedirectStream(object): + + _stream = None + + def __init__(self, new_target): + self._new_target = new_target + # We use a list of old targets to make this CM re-entrant + self._old_targets = [] + + def __enter__(self): + self._old_targets.append(getattr(sys, self._stream)) + setattr(sys, self._stream, self._new_target) + return self._new_target + + def __exit__(self, exctype, excinst, exctb): + setattr(sys, self._stream, self._old_targets.pop()) + + +class redirect_stdout(_RedirectStream): + """Context manager for temporarily redirecting stdout to another file. + + # How to send help() to stderr + with redirect_stdout(sys.stderr): + help(dir) + + # How to write help() to a file + with open('help.txt', 'w') as f: + with redirect_stdout(f): + help(pow) + """ + + _stream = "stdout" + + +class redirect_stderr(_RedirectStream): + """Context manager for temporarily redirecting stderr to another file.""" + + _stream = "stderr" + + +class suppress(object): + """Context manager to suppress specified exceptions + + After the exception is suppressed, execution proceeds with the next + statement following the with statement. + + with suppress(FileNotFoundError): + os.remove(somefile) + # Execution still resumes here if the file was already removed + """ + + def __init__(self, *exceptions): + self._exceptions = exceptions + + def __enter__(self): + pass + + def __exit__(self, exctype, excinst, exctb): + # Unlike isinstance and issubclass, CPython exception handling + # currently only looks at the concrete type hierarchy (ignoring + # the instance and subclass checking hooks). While Guido considers + # that a bug rather than a feature, it's a fairly hard one to fix + # due to various internal implementation details. suppress provides + # the simpler issubclass based semantics, rather than trying to + # exactly reproduce the limitations of the CPython interpreter. + # + # See http://bugs.python.org/issue12029 for more details + return exctype is not None and issubclass(exctype, self._exceptions) + + +# Context manipulation is Python 3 only +_HAVE_EXCEPTION_CHAINING = sys.version_info[0] >= 3 +if _HAVE_EXCEPTION_CHAINING: + def _make_context_fixer(frame_exc): + def _fix_exception_context(new_exc, old_exc): + # Context may not be correct, so find the end of the chain + while 1: + exc_context = new_exc.__context__ + if exc_context is old_exc: + # Context is already set correctly (see issue 20317) + return + if exc_context is None or exc_context is frame_exc: + break + new_exc = exc_context + # Change the end of the chain to point to the exception + # we expect it to reference + new_exc.__context__ = old_exc + return _fix_exception_context + + def _reraise_with_existing_context(exc_details): + try: + # bare "raise exc_details[1]" replaces our carefully + # set-up context + fixed_ctx = exc_details[1].__context__ + raise exc_details[1] + except BaseException: + exc_details[1].__context__ = fixed_ctx + raise +else: + # No exception context in Python 2 + def _make_context_fixer(frame_exc): + return lambda new_exc, old_exc: None + + # Use 3 argument raise in Python 2, + # but use exec to avoid SyntaxError in Python 3 + def _reraise_with_existing_context(exc_details): + exc_type, exc_value, exc_tb = exc_details + exec("raise exc_type, exc_value, exc_tb") + +# Handle old-style classes if they exist +try: + from types import InstanceType +except ImportError: + # Python 3 doesn't have old-style classes + _get_type = type +else: + # Need to handle old-style context managers on Python 2 + def _get_type(obj): + obj_type = type(obj) + if obj_type is InstanceType: + return obj.__class__ # Old-style class + return obj_type # New-style class + + +# Inspired by discussions on http://bugs.python.org/issue13585 +class ExitStack(object): + """Context manager for dynamic management of a stack of exit callbacks + + For example: + + with ExitStack() as stack: + files = [stack.enter_context(open(fname)) for fname in filenames] + # All opened files will automatically be closed at the end of + # the with statement, even if attempts to open files later + # in the list raise an exception + + """ + def __init__(self): + self._exit_callbacks = deque() + + def pop_all(self): + """Preserve the context stack by transferring it to a new instance""" + new_stack = type(self)() + new_stack._exit_callbacks = self._exit_callbacks + self._exit_callbacks = deque() + return new_stack + + def _push_cm_exit(self, cm, cm_exit): + """Helper to correctly register callbacks to __exit__ methods""" + def _exit_wrapper(*exc_details): + return cm_exit(cm, *exc_details) + _exit_wrapper.__self__ = cm + self.push(_exit_wrapper) + + def push(self, exit): + """Registers a callback with the standard __exit__ method signature + + Can suppress exceptions the same way __exit__ methods can. + + Also accepts any object with an __exit__ method (registering a call + to the method instead of the object itself) + """ + # We use an unbound method rather than a bound method to follow + # the standard lookup behaviour for special methods + _cb_type = _get_type(exit) + try: + exit_method = _cb_type.__exit__ + except AttributeError: + # Not a context manager, so assume its a callable + self._exit_callbacks.append(exit) + else: + self._push_cm_exit(exit, exit_method) + return exit # Allow use as a decorator + + def callback(self, callback, *args, **kwds): + """Registers an arbitrary callback and arguments. + + Cannot suppress exceptions. + """ + def _exit_wrapper(exc_type, exc, tb): + callback(*args, **kwds) + # We changed the signature, so using @wraps is not appropriate, but + # setting __wrapped__ may still help with introspection + _exit_wrapper.__wrapped__ = callback + self.push(_exit_wrapper) + return callback # Allow use as a decorator + + def enter_context(self, cm): + """Enters the supplied context manager + + If successful, also pushes its __exit__ method as a callback and + returns the result of the __enter__ method. + """ + # We look up the special methods on the type to match the with statement + _cm_type = _get_type(cm) + _exit = _cm_type.__exit__ + result = _cm_type.__enter__(cm) + self._push_cm_exit(cm, _exit) + return result + + def close(self): + """Immediately unwind the context stack""" + self.__exit__(None, None, None) + + def __enter__(self): + return self + + def __exit__(self, *exc_details): + received_exc = exc_details[0] is not None + + # We manipulate the exception state so it behaves as though + # we were actually nesting multiple with statements + frame_exc = sys.exc_info()[1] + _fix_exception_context = _make_context_fixer(frame_exc) + + # Callbacks are invoked in LIFO order to match the behaviour of + # nested context managers + suppressed_exc = False + pending_raise = False + while self._exit_callbacks: + cb = self._exit_callbacks.pop() + try: + if cb(*exc_details): + suppressed_exc = True + pending_raise = False + exc_details = (None, None, None) + except: + new_exc_details = sys.exc_info() + # simulate the stack of exceptions by setting the context + _fix_exception_context(new_exc_details[1], exc_details[1]) + pending_raise = True + exc_details = new_exc_details + if pending_raise: + _reraise_with_existing_context(exc_details) + return received_exc and suppressed_exc + + +# Preserve backwards compatibility +class ContextStack(ExitStack): + """Backwards compatibility alias for ExitStack""" + + def __init__(self): + warnings.warn("ContextStack has been renamed to ExitStack", + DeprecationWarning) + super(ContextStack, self).__init__() + + def register_exit(self, callback): + return self.push(callback) + + def register(self, callback, *args, **kwds): + return self.callback(callback, *args, **kwds) + + def preserve(self): + return self.pop_all() + + +class nullcontext(AbstractContextManager): + """Context manager that does no additional processing. + Used as a stand-in for a normal context manager, when a particular + block of code is only sometimes used with a normal context manager: + cm = optional_cm if condition else nullcontext() + with cm: + # Perform operation, using optional_cm if condition is True + """ + + def __init__(self, enter_result=None): + self.enter_result = enter_result + + def __enter__(self): + return self.enter_result + + def __exit__(self, *excinfo): + pass diff --git a/Lib/site-packages/pip/_vendor/distlib/__init__.py b/Lib/site-packages/pip/_vendor/distlib/__init__.py new file mode 100644 index 0000000..e19aebd --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2019 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import logging + +__version__ = '0.3.0' + +class DistlibException(Exception): + pass + +try: + from logging import NullHandler +except ImportError: # pragma: no cover + class NullHandler(logging.Handler): + def handle(self, record): pass + def emit(self, record): pass + def createLock(self): self.lock = None + +logger = logging.getLogger(__name__) +logger.addHandler(NullHandler()) diff --git a/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py b/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py new file mode 100644 index 0000000..f7dbf4c --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py @@ -0,0 +1,6 @@ +"""Modules copied from Python 3 standard libraries, for internal use only. + +Individual classes and functions are found in d2._backport.misc. Intended +usage is to always import things missing from 3.1 from that module: the +built-in/stdlib objects will be used if found. +""" diff --git a/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py b/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py new file mode 100644 index 0000000..cfb318d --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Backports for individual classes and functions.""" + +import os +import sys + +__all__ = ['cache_from_source', 'callable', 'fsencode'] + + +try: + from imp import cache_from_source +except ImportError: + def cache_from_source(py_file, debug=__debug__): + ext = debug and 'c' or 'o' + return py_file + ext + + +try: + callable = callable +except NameError: + from collections import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode +except AttributeError: + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, str): + return filename.encode(sys.getfilesystemencoding()) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) diff --git a/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py b/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py new file mode 100644 index 0000000..159e49e --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py @@ -0,0 +1,761 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Utility functions for copying and archiving files and directory trees. + +XXX The functions here don't copy the resource fork or other metadata on Mac. + +""" + +import os +import sys +import stat +from os.path import abspath +import fnmatch +import collections +import errno +from . import tarfile + +try: + import bz2 + _BZ2_SUPPORTED = True +except ImportError: + _BZ2_SUPPORTED = False + +try: + from pwd import getpwnam +except ImportError: + getpwnam = None + +try: + from grp import getgrnam +except ImportError: + getgrnam = None + +__all__ = ["copyfileobj", "copyfile", "copymode", "copystat", "copy", "copy2", + "copytree", "move", "rmtree", "Error", "SpecialFileError", + "ExecError", "make_archive", "get_archive_formats", + "register_archive_format", "unregister_archive_format", + "get_unpack_formats", "register_unpack_format", + "unregister_unpack_format", "unpack_archive", "ignore_patterns"] + +class Error(EnvironmentError): + pass + +class SpecialFileError(EnvironmentError): + """Raised when trying to do a kind of operation (e.g. copying) which is + not supported on a special file (e.g. a named pipe)""" + +class ExecError(EnvironmentError): + """Raised when a command could not be executed""" + +class ReadError(EnvironmentError): + """Raised when an archive cannot be read""" + +class RegistryError(Exception): + """Raised when a registry operation with the archiving + and unpacking registries fails""" + + +try: + WindowsError +except NameError: + WindowsError = None + +def copyfileobj(fsrc, fdst, length=16*1024): + """copy data from file-like object fsrc to file-like object fdst""" + while 1: + buf = fsrc.read(length) + if not buf: + break + fdst.write(buf) + +def _samefile(src, dst): + # Macintosh, Unix. + if hasattr(os.path, 'samefile'): + try: + return os.path.samefile(src, dst) + except OSError: + return False + + # All other platforms: check for same pathname. + return (os.path.normcase(os.path.abspath(src)) == + os.path.normcase(os.path.abspath(dst))) + +def copyfile(src, dst): + """Copy data from src to dst""" + if _samefile(src, dst): + raise Error("`%s` and `%s` are the same file" % (src, dst)) + + for fn in [src, dst]: + try: + st = os.stat(fn) + except OSError: + # File most likely does not exist + pass + else: + # XXX What about other special files? (sockets, devices...) + if stat.S_ISFIFO(st.st_mode): + raise SpecialFileError("`%s` is a named pipe" % fn) + + with open(src, 'rb') as fsrc: + with open(dst, 'wb') as fdst: + copyfileobj(fsrc, fdst) + +def copymode(src, dst): + """Copy mode bits from src to dst""" + if hasattr(os, 'chmod'): + st = os.stat(src) + mode = stat.S_IMODE(st.st_mode) + os.chmod(dst, mode) + +def copystat(src, dst): + """Copy all stat info (mode bits, atime, mtime, flags) from src to dst""" + st = os.stat(src) + mode = stat.S_IMODE(st.st_mode) + if hasattr(os, 'utime'): + os.utime(dst, (st.st_atime, st.st_mtime)) + if hasattr(os, 'chmod'): + os.chmod(dst, mode) + if hasattr(os, 'chflags') and hasattr(st, 'st_flags'): + try: + os.chflags(dst, st.st_flags) + except OSError as why: + if (not hasattr(errno, 'EOPNOTSUPP') or + why.errno != errno.EOPNOTSUPP): + raise + +def copy(src, dst): + """Copy data and mode bits ("cp src dst"). + + The destination may be a directory. + + """ + if os.path.isdir(dst): + dst = os.path.join(dst, os.path.basename(src)) + copyfile(src, dst) + copymode(src, dst) + +def copy2(src, dst): + """Copy data and all stat info ("cp -p src dst"). + + The destination may be a directory. + + """ + if os.path.isdir(dst): + dst = os.path.join(dst, os.path.basename(src)) + copyfile(src, dst) + copystat(src, dst) + +def ignore_patterns(*patterns): + """Function that can be used as copytree() ignore parameter. + + Patterns is a sequence of glob-style patterns + that are used to exclude files""" + def _ignore_patterns(path, names): + ignored_names = [] + for pattern in patterns: + ignored_names.extend(fnmatch.filter(names, pattern)) + return set(ignored_names) + return _ignore_patterns + +def copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, + ignore_dangling_symlinks=False): + """Recursively copy a directory tree. + + The destination directory must not already exist. + If exception(s) occur, an Error is raised with a list of reasons. + + If the optional symlinks flag is true, symbolic links in the + source tree result in symbolic links in the destination tree; if + it is false, the contents of the files pointed to by symbolic + links are copied. If the file pointed by the symlink doesn't + exist, an exception will be added in the list of errors raised in + an Error exception at the end of the copy process. + + You can set the optional ignore_dangling_symlinks flag to true if you + want to silence this exception. Notice that this has no effect on + platforms that don't support os.symlink. + + The optional ignore argument is a callable. If given, it + is called with the `src` parameter, which is the directory + being visited by copytree(), and `names` which is the list of + `src` contents, as returned by os.listdir(): + + callable(src, names) -> ignored_names + + Since copytree() is called recursively, the callable will be + called once for each directory that is copied. It returns a + list of names relative to the `src` directory that should + not be copied. + + The optional copy_function argument is a callable that will be used + to copy each file. It will be called with the source path and the + destination path as arguments. By default, copy2() is used, but any + function that supports the same signature (like copy()) can be used. + + """ + names = os.listdir(src) + if ignore is not None: + ignored_names = ignore(src, names) + else: + ignored_names = set() + + os.makedirs(dst) + errors = [] + for name in names: + if name in ignored_names: + continue + srcname = os.path.join(src, name) + dstname = os.path.join(dst, name) + try: + if os.path.islink(srcname): + linkto = os.readlink(srcname) + if symlinks: + os.symlink(linkto, dstname) + else: + # ignore dangling symlink if the flag is on + if not os.path.exists(linkto) and ignore_dangling_symlinks: + continue + # otherwise let the copy occurs. copy2 will raise an error + copy_function(srcname, dstname) + elif os.path.isdir(srcname): + copytree(srcname, dstname, symlinks, ignore, copy_function) + else: + # Will raise a SpecialFileError for unsupported file types + copy_function(srcname, dstname) + # catch the Error from the recursive copytree so that we can + # continue with other files + except Error as err: + errors.extend(err.args[0]) + except EnvironmentError as why: + errors.append((srcname, dstname, str(why))) + try: + copystat(src, dst) + except OSError as why: + if WindowsError is not None and isinstance(why, WindowsError): + # Copying file access times may fail on Windows + pass + else: + errors.extend((src, dst, str(why))) + if errors: + raise Error(errors) + +def rmtree(path, ignore_errors=False, onerror=None): + """Recursively delete a directory tree. + + If ignore_errors is set, errors are ignored; otherwise, if onerror + is set, it is called to handle the error with arguments (func, + path, exc_info) where func is os.listdir, os.remove, or os.rmdir; + path is the argument to that function that caused it to fail; and + exc_info is a tuple returned by sys.exc_info(). If ignore_errors + is false and onerror is None, an exception is raised. + + """ + if ignore_errors: + def onerror(*args): + pass + elif onerror is None: + def onerror(*args): + raise + try: + if os.path.islink(path): + # symlinks to directories are forbidden, see bug #1669 + raise OSError("Cannot call rmtree on a symbolic link") + except OSError: + onerror(os.path.islink, path, sys.exc_info()) + # can't continue even if onerror hook returns + return + names = [] + try: + names = os.listdir(path) + except os.error: + onerror(os.listdir, path, sys.exc_info()) + for name in names: + fullname = os.path.join(path, name) + try: + mode = os.lstat(fullname).st_mode + except os.error: + mode = 0 + if stat.S_ISDIR(mode): + rmtree(fullname, ignore_errors, onerror) + else: + try: + os.remove(fullname) + except os.error: + onerror(os.remove, fullname, sys.exc_info()) + try: + os.rmdir(path) + except os.error: + onerror(os.rmdir, path, sys.exc_info()) + + +def _basename(path): + # A basename() variant which first strips the trailing slash, if present. + # Thus we always get the last component of the path, even for directories. + return os.path.basename(path.rstrip(os.path.sep)) + +def move(src, dst): + """Recursively move a file or directory to another location. This is + similar to the Unix "mv" command. + + If the destination is a directory or a symlink to a directory, the source + is moved inside the directory. The destination path must not already + exist. + + If the destination already exists but is not a directory, it may be + overwritten depending on os.rename() semantics. + + If the destination is on our current filesystem, then rename() is used. + Otherwise, src is copied to the destination and then removed. + A lot more could be done here... A look at a mv.c shows a lot of + the issues this implementation glosses over. + + """ + real_dst = dst + if os.path.isdir(dst): + if _samefile(src, dst): + # We might be on a case insensitive filesystem, + # perform the rename anyway. + os.rename(src, dst) + return + + real_dst = os.path.join(dst, _basename(src)) + if os.path.exists(real_dst): + raise Error("Destination path '%s' already exists" % real_dst) + try: + os.rename(src, real_dst) + except OSError: + if os.path.isdir(src): + if _destinsrc(src, dst): + raise Error("Cannot move a directory '%s' into itself '%s'." % (src, dst)) + copytree(src, real_dst, symlinks=True) + rmtree(src) + else: + copy2(src, real_dst) + os.unlink(src) + +def _destinsrc(src, dst): + src = abspath(src) + dst = abspath(dst) + if not src.endswith(os.path.sep): + src += os.path.sep + if not dst.endswith(os.path.sep): + dst += os.path.sep + return dst.startswith(src) + +def _get_gid(name): + """Returns a gid, given a group name.""" + if getgrnam is None or name is None: + return None + try: + result = getgrnam(name) + except KeyError: + result = None + if result is not None: + return result[2] + return None + +def _get_uid(name): + """Returns an uid, given a user name.""" + if getpwnam is None or name is None: + return None + try: + result = getpwnam(name) + except KeyError: + result = None + if result is not None: + return result[2] + return None + +def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0, + owner=None, group=None, logger=None): + """Create a (possibly compressed) tar file from all the files under + 'base_dir'. + + 'compress' must be "gzip" (the default), "bzip2", or None. + + 'owner' and 'group' can be used to define an owner and a group for the + archive that is being built. If not provided, the current owner and group + will be used. + + The output tar file will be named 'base_name' + ".tar", possibly plus + the appropriate compression extension (".gz", or ".bz2"). + + Returns the output filename. + """ + tar_compression = {'gzip': 'gz', None: ''} + compress_ext = {'gzip': '.gz'} + + if _BZ2_SUPPORTED: + tar_compression['bzip2'] = 'bz2' + compress_ext['bzip2'] = '.bz2' + + # flags for compression program, each element of list will be an argument + if compress is not None and compress not in compress_ext: + raise ValueError("bad value for 'compress', or compression format not " + "supported : {0}".format(compress)) + + archive_name = base_name + '.tar' + compress_ext.get(compress, '') + archive_dir = os.path.dirname(archive_name) + + if not os.path.exists(archive_dir): + if logger is not None: + logger.info("creating %s", archive_dir) + if not dry_run: + os.makedirs(archive_dir) + + # creating the tarball + if logger is not None: + logger.info('Creating tar archive') + + uid = _get_uid(owner) + gid = _get_gid(group) + + def _set_uid_gid(tarinfo): + if gid is not None: + tarinfo.gid = gid + tarinfo.gname = group + if uid is not None: + tarinfo.uid = uid + tarinfo.uname = owner + return tarinfo + + if not dry_run: + tar = tarfile.open(archive_name, 'w|%s' % tar_compression[compress]) + try: + tar.add(base_dir, filter=_set_uid_gid) + finally: + tar.close() + + return archive_name + +def _call_external_zip(base_dir, zip_filename, verbose=False, dry_run=False): + # XXX see if we want to keep an external call here + if verbose: + zipoptions = "-r" + else: + zipoptions = "-rq" + from distutils.errors import DistutilsExecError + from distutils.spawn import spawn + try: + spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run) + except DistutilsExecError: + # XXX really should distinguish between "couldn't find + # external 'zip' command" and "zip failed". + raise ExecError("unable to create zip file '%s': " + "could neither import the 'zipfile' module nor " + "find a standalone zip utility") % zip_filename + +def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None): + """Create a zip file from all the files under 'base_dir'. + + The output zip file will be named 'base_name' + ".zip". Uses either the + "zipfile" Python module (if available) or the InfoZIP "zip" utility + (if installed and found on the default search path). If neither tool is + available, raises ExecError. Returns the name of the output zip + file. + """ + zip_filename = base_name + ".zip" + archive_dir = os.path.dirname(base_name) + + if not os.path.exists(archive_dir): + if logger is not None: + logger.info("creating %s", archive_dir) + if not dry_run: + os.makedirs(archive_dir) + + # If zipfile module is not available, try spawning an external 'zip' + # command. + try: + import zipfile + except ImportError: + zipfile = None + + if zipfile is None: + _call_external_zip(base_dir, zip_filename, verbose, dry_run) + else: + if logger is not None: + logger.info("creating '%s' and adding '%s' to it", + zip_filename, base_dir) + + if not dry_run: + zip = zipfile.ZipFile(zip_filename, "w", + compression=zipfile.ZIP_DEFLATED) + + for dirpath, dirnames, filenames in os.walk(base_dir): + for name in filenames: + path = os.path.normpath(os.path.join(dirpath, name)) + if os.path.isfile(path): + zip.write(path, path) + if logger is not None: + logger.info("adding '%s'", path) + zip.close() + + return zip_filename + +_ARCHIVE_FORMATS = { + 'gztar': (_make_tarball, [('compress', 'gzip')], "gzip'ed tar-file"), + 'bztar': (_make_tarball, [('compress', 'bzip2')], "bzip2'ed tar-file"), + 'tar': (_make_tarball, [('compress', None)], "uncompressed tar file"), + 'zip': (_make_zipfile, [], "ZIP file"), + } + +if _BZ2_SUPPORTED: + _ARCHIVE_FORMATS['bztar'] = (_make_tarball, [('compress', 'bzip2')], + "bzip2'ed tar-file") + +def get_archive_formats(): + """Returns a list of supported formats for archiving and unarchiving. + + Each element of the returned sequence is a tuple (name, description) + """ + formats = [(name, registry[2]) for name, registry in + _ARCHIVE_FORMATS.items()] + formats.sort() + return formats + +def register_archive_format(name, function, extra_args=None, description=''): + """Registers an archive format. + + name is the name of the format. function is the callable that will be + used to create archives. If provided, extra_args is a sequence of + (name, value) tuples that will be passed as arguments to the callable. + description can be provided to describe the format, and will be returned + by the get_archive_formats() function. + """ + if extra_args is None: + extra_args = [] + if not isinstance(function, collections.Callable): + raise TypeError('The %s object is not callable' % function) + if not isinstance(extra_args, (tuple, list)): + raise TypeError('extra_args needs to be a sequence') + for element in extra_args: + if not isinstance(element, (tuple, list)) or len(element) !=2: + raise TypeError('extra_args elements are : (arg_name, value)') + + _ARCHIVE_FORMATS[name] = (function, extra_args, description) + +def unregister_archive_format(name): + del _ARCHIVE_FORMATS[name] + +def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, + dry_run=0, owner=None, group=None, logger=None): + """Create an archive file (eg. zip or tar). + + 'base_name' is the name of the file to create, minus any format-specific + extension; 'format' is the archive format: one of "zip", "tar", "bztar" + or "gztar". + + 'root_dir' is a directory that will be the root directory of the + archive; ie. we typically chdir into 'root_dir' before creating the + archive. 'base_dir' is the directory where we start archiving from; + ie. 'base_dir' will be the common prefix of all files and + directories in the archive. 'root_dir' and 'base_dir' both default + to the current directory. Returns the name of the archive file. + + 'owner' and 'group' are used when creating a tar archive. By default, + uses the current owner and group. + """ + save_cwd = os.getcwd() + if root_dir is not None: + if logger is not None: + logger.debug("changing into '%s'", root_dir) + base_name = os.path.abspath(base_name) + if not dry_run: + os.chdir(root_dir) + + if base_dir is None: + base_dir = os.curdir + + kwargs = {'dry_run': dry_run, 'logger': logger} + + try: + format_info = _ARCHIVE_FORMATS[format] + except KeyError: + raise ValueError("unknown archive format '%s'" % format) + + func = format_info[0] + for arg, val in format_info[1]: + kwargs[arg] = val + + if format != 'zip': + kwargs['owner'] = owner + kwargs['group'] = group + + try: + filename = func(base_name, base_dir, **kwargs) + finally: + if root_dir is not None: + if logger is not None: + logger.debug("changing back to '%s'", save_cwd) + os.chdir(save_cwd) + + return filename + + +def get_unpack_formats(): + """Returns a list of supported formats for unpacking. + + Each element of the returned sequence is a tuple + (name, extensions, description) + """ + formats = [(name, info[0], info[3]) for name, info in + _UNPACK_FORMATS.items()] + formats.sort() + return formats + +def _check_unpack_options(extensions, function, extra_args): + """Checks what gets registered as an unpacker.""" + # first make sure no other unpacker is registered for this extension + existing_extensions = {} + for name, info in _UNPACK_FORMATS.items(): + for ext in info[0]: + existing_extensions[ext] = name + + for extension in extensions: + if extension in existing_extensions: + msg = '%s is already registered for "%s"' + raise RegistryError(msg % (extension, + existing_extensions[extension])) + + if not isinstance(function, collections.Callable): + raise TypeError('The registered function must be a callable') + + +def register_unpack_format(name, extensions, function, extra_args=None, + description=''): + """Registers an unpack format. + + `name` is the name of the format. `extensions` is a list of extensions + corresponding to the format. + + `function` is the callable that will be + used to unpack archives. The callable will receive archives to unpack. + If it's unable to handle an archive, it needs to raise a ReadError + exception. + + If provided, `extra_args` is a sequence of + (name, value) tuples that will be passed as arguments to the callable. + description can be provided to describe the format, and will be returned + by the get_unpack_formats() function. + """ + if extra_args is None: + extra_args = [] + _check_unpack_options(extensions, function, extra_args) + _UNPACK_FORMATS[name] = extensions, function, extra_args, description + +def unregister_unpack_format(name): + """Removes the pack format from the registry.""" + del _UNPACK_FORMATS[name] + +def _ensure_directory(path): + """Ensure that the parent directory of `path` exists""" + dirname = os.path.dirname(path) + if not os.path.isdir(dirname): + os.makedirs(dirname) + +def _unpack_zipfile(filename, extract_dir): + """Unpack zip `filename` to `extract_dir` + """ + try: + import zipfile + except ImportError: + raise ReadError('zlib not supported, cannot unpack this archive.') + + if not zipfile.is_zipfile(filename): + raise ReadError("%s is not a zip file" % filename) + + zip = zipfile.ZipFile(filename) + try: + for info in zip.infolist(): + name = info.filename + + # don't extract absolute paths or ones with .. in them + if name.startswith('/') or '..' in name: + continue + + target = os.path.join(extract_dir, *name.split('/')) + if not target: + continue + + _ensure_directory(target) + if not name.endswith('/'): + # file + data = zip.read(info.filename) + f = open(target, 'wb') + try: + f.write(data) + finally: + f.close() + del data + finally: + zip.close() + +def _unpack_tarfile(filename, extract_dir): + """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir` + """ + try: + tarobj = tarfile.open(filename) + except tarfile.TarError: + raise ReadError( + "%s is not a compressed or uncompressed tar file" % filename) + try: + tarobj.extractall(extract_dir) + finally: + tarobj.close() + +_UNPACK_FORMATS = { + 'gztar': (['.tar.gz', '.tgz'], _unpack_tarfile, [], "gzip'ed tar-file"), + 'tar': (['.tar'], _unpack_tarfile, [], "uncompressed tar file"), + 'zip': (['.zip'], _unpack_zipfile, [], "ZIP file") + } + +if _BZ2_SUPPORTED: + _UNPACK_FORMATS['bztar'] = (['.bz2'], _unpack_tarfile, [], + "bzip2'ed tar-file") + +def _find_unpack_format(filename): + for name, info in _UNPACK_FORMATS.items(): + for extension in info[0]: + if filename.endswith(extension): + return name + return None + +def unpack_archive(filename, extract_dir=None, format=None): + """Unpack an archive. + + `filename` is the name of the archive. + + `extract_dir` is the name of the target directory, where the archive + is unpacked. If not provided, the current working directory is used. + + `format` is the archive format: one of "zip", "tar", or "gztar". Or any + other registered format. If not provided, unpack_archive will use the + filename extension and see if an unpacker was registered for that + extension. + + In case none is found, a ValueError is raised. + """ + if extract_dir is None: + extract_dir = os.getcwd() + + if format is not None: + try: + format_info = _UNPACK_FORMATS[format] + except KeyError: + raise ValueError("Unknown unpack format '{0}'".format(format)) + + func = format_info[1] + func(filename, extract_dir, **dict(format_info[2])) + else: + # we need to look at the registered unpackers supported extensions + format = _find_unpack_format(filename) + if format is None: + raise ReadError("Unknown archive format '{0}'".format(filename)) + + func = _UNPACK_FORMATS[format][1] + kwargs = dict(_UNPACK_FORMATS[format][2]) + func(filename, extract_dir, **kwargs) diff --git a/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg b/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg new file mode 100644 index 0000000..1746bd0 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg @@ -0,0 +1,84 @@ +[posix_prefix] +# Configuration directories. Some of these come straight out of the +# configure script. They are for implementing the other variables, not to +# be used directly in [resource_locations]. +confdir = /etc +datadir = /usr/share +libdir = /usr/lib +statedir = /var +# User resource directory +local = ~/.local/{distribution.name} + +stdlib = {base}/lib/python{py_version_short} +platstdlib = {platbase}/lib/python{py_version_short} +purelib = {base}/lib/python{py_version_short}/site-packages +platlib = {platbase}/lib/python{py_version_short}/site-packages +include = {base}/include/python{py_version_short}{abiflags} +platinclude = {platbase}/include/python{py_version_short}{abiflags} +data = {base} + +[posix_home] +stdlib = {base}/lib/python +platstdlib = {base}/lib/python +purelib = {base}/lib/python +platlib = {base}/lib/python +include = {base}/include/python +platinclude = {base}/include/python +scripts = {base}/bin +data = {base} + +[nt] +stdlib = {base}/Lib +platstdlib = {base}/Lib +purelib = {base}/Lib/site-packages +platlib = {base}/Lib/site-packages +include = {base}/Include +platinclude = {base}/Include +scripts = {base}/Scripts +data = {base} + +[os2] +stdlib = {base}/Lib +platstdlib = {base}/Lib +purelib = {base}/Lib/site-packages +platlib = {base}/Lib/site-packages +include = {base}/Include +platinclude = {base}/Include +scripts = {base}/Scripts +data = {base} + +[os2_home] +stdlib = {userbase}/lib/python{py_version_short} +platstdlib = {userbase}/lib/python{py_version_short} +purelib = {userbase}/lib/python{py_version_short}/site-packages +platlib = {userbase}/lib/python{py_version_short}/site-packages +include = {userbase}/include/python{py_version_short} +scripts = {userbase}/bin +data = {userbase} + +[nt_user] +stdlib = {userbase}/Python{py_version_nodot} +platstdlib = {userbase}/Python{py_version_nodot} +purelib = {userbase}/Python{py_version_nodot}/site-packages +platlib = {userbase}/Python{py_version_nodot}/site-packages +include = {userbase}/Python{py_version_nodot}/Include +scripts = {userbase}/Scripts +data = {userbase} + +[posix_user] +stdlib = {userbase}/lib/python{py_version_short} +platstdlib = {userbase}/lib/python{py_version_short} +purelib = {userbase}/lib/python{py_version_short}/site-packages +platlib = {userbase}/lib/python{py_version_short}/site-packages +include = {userbase}/include/python{py_version_short} +scripts = {userbase}/bin +data = {userbase} + +[osx_framework_user] +stdlib = {userbase}/lib/python +platstdlib = {userbase}/lib/python +purelib = {userbase}/lib/python/site-packages +platlib = {userbase}/lib/python/site-packages +include = {userbase}/include +scripts = {userbase}/bin +data = {userbase} diff --git a/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py b/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py new file mode 100644 index 0000000..b470a37 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py @@ -0,0 +1,786 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Access to Python's configuration information.""" + +import codecs +import os +import re +import sys +from os.path import pardir, realpath +try: + import configparser +except ImportError: + import ConfigParser as configparser + + +__all__ = [ + 'get_config_h_filename', + 'get_config_var', + 'get_config_vars', + 'get_makefile_filename', + 'get_path', + 'get_path_names', + 'get_paths', + 'get_platform', + 'get_python_version', + 'get_scheme_names', + 'parse_config_h', +] + + +def _safe_realpath(path): + try: + return realpath(path) + except OSError: + return path + + +if sys.executable: + _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable)) +else: + # sys.executable can be empty if argv[0] has been changed and Python is + # unable to retrieve the real program name + _PROJECT_BASE = _safe_realpath(os.getcwd()) + +if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir)) +# PC/VS7.1 +if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) +# PC/AMD64 +if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower(): + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) + + +def is_python_build(): + for fn in ("Setup.dist", "Setup.local"): + if os.path.isfile(os.path.join(_PROJECT_BASE, "Modules", fn)): + return True + return False + +_PYTHON_BUILD = is_python_build() + +_cfg_read = False + +def _ensure_cfg_read(): + global _cfg_read + if not _cfg_read: + from ..resources import finder + backport_package = __name__.rsplit('.', 1)[0] + _finder = finder(backport_package) + _cfgfile = _finder.find('sysconfig.cfg') + assert _cfgfile, 'sysconfig.cfg exists' + with _cfgfile.as_stream() as s: + _SCHEMES.readfp(s) + if _PYTHON_BUILD: + for scheme in ('posix_prefix', 'posix_home'): + _SCHEMES.set(scheme, 'include', '{srcdir}/Include') + _SCHEMES.set(scheme, 'platinclude', '{projectbase}/.') + + _cfg_read = True + + +_SCHEMES = configparser.RawConfigParser() +_VAR_REPL = re.compile(r'\{([^{]*?)\}') + +def _expand_globals(config): + _ensure_cfg_read() + if config.has_section('globals'): + globals = config.items('globals') + else: + globals = tuple() + + sections = config.sections() + for section in sections: + if section == 'globals': + continue + for option, value in globals: + if config.has_option(section, option): + continue + config.set(section, option, value) + config.remove_section('globals') + + # now expanding local variables defined in the cfg file + # + for section in config.sections(): + variables = dict(config.items(section)) + + def _replacer(matchobj): + name = matchobj.group(1) + if name in variables: + return variables[name] + return matchobj.group(0) + + for option, value in config.items(section): + config.set(section, option, _VAR_REPL.sub(_replacer, value)) + +#_expand_globals(_SCHEMES) + +_PY_VERSION = '%s.%s.%s' % sys.version_info[:3] +_PY_VERSION_SHORT = '%s.%s' % sys.version_info[:2] +_PY_VERSION_SHORT_NO_DOT = '%s%s' % sys.version_info[:2] +_PREFIX = os.path.normpath(sys.prefix) +_EXEC_PREFIX = os.path.normpath(sys.exec_prefix) +_CONFIG_VARS = None +_USER_BASE = None + + +def _subst_vars(path, local_vars): + """In the string `path`, replace tokens like {some.thing} with the + corresponding value from the map `local_vars`. + + If there is no corresponding value, leave the token unchanged. + """ + def _replacer(matchobj): + name = matchobj.group(1) + if name in local_vars: + return local_vars[name] + elif name in os.environ: + return os.environ[name] + return matchobj.group(0) + return _VAR_REPL.sub(_replacer, path) + + +def _extend_dict(target_dict, other_dict): + target_keys = target_dict.keys() + for key, value in other_dict.items(): + if key in target_keys: + continue + target_dict[key] = value + + +def _expand_vars(scheme, vars): + res = {} + if vars is None: + vars = {} + _extend_dict(vars, get_config_vars()) + + for key, value in _SCHEMES.items(scheme): + if os.name in ('posix', 'nt'): + value = os.path.expanduser(value) + res[key] = os.path.normpath(_subst_vars(value, vars)) + return res + + +def format_value(value, vars): + def _replacer(matchobj): + name = matchobj.group(1) + if name in vars: + return vars[name] + return matchobj.group(0) + return _VAR_REPL.sub(_replacer, value) + + +def _get_default_scheme(): + if os.name == 'posix': + # the default scheme for posix is posix_prefix + return 'posix_prefix' + return os.name + + +def _getuserbase(): + env_base = os.environ.get("PYTHONUSERBASE", None) + + def joinuser(*args): + return os.path.expanduser(os.path.join(*args)) + + # what about 'os2emx', 'riscos' ? + if os.name == "nt": + base = os.environ.get("APPDATA") or "~" + if env_base: + return env_base + else: + return joinuser(base, "Python") + + if sys.platform == "darwin": + framework = get_config_var("PYTHONFRAMEWORK") + if framework: + if env_base: + return env_base + else: + return joinuser("~", "Library", framework, "%d.%d" % + sys.version_info[:2]) + + if env_base: + return env_base + else: + return joinuser("~", ".local") + + +def _parse_makefile(filename, vars=None): + """Parse a Makefile-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + # Regexes needed for parsing Makefile (and similar syntaxes, + # like old-style Setup files). + _variable_rx = re.compile(r"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)") + _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)") + _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") + + if vars is None: + vars = {} + done = {} + notdone = {} + + with codecs.open(filename, encoding='utf-8', errors="surrogateescape") as f: + lines = f.readlines() + + for line in lines: + if line.startswith('#') or line.strip() == '': + continue + m = _variable_rx.match(line) + if m: + n, v = m.group(1, 2) + v = v.strip() + # `$$' is a literal `$' in make + tmpv = v.replace('$$', '') + + if "$" in tmpv: + notdone[n] = v + else: + try: + v = int(v) + except ValueError: + # insert literal `$' + done[n] = v.replace('$$', '$') + else: + done[n] = v + + # do variable interpolation here + variables = list(notdone.keys()) + + # Variables with a 'PY_' prefix in the makefile. These need to + # be made available without that prefix through sysconfig. + # Special care is needed to ensure that variable expansion works, even + # if the expansion uses the name without a prefix. + renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') + + while len(variables) > 0: + for name in tuple(variables): + value = notdone[name] + m = _findvar1_rx.search(value) or _findvar2_rx.search(value) + if m is not None: + n = m.group(1) + found = True + if n in done: + item = str(done[n]) + elif n in notdone: + # get it on a subsequent round + found = False + elif n in os.environ: + # do it like make: fall back to environment + item = os.environ[n] + + elif n in renamed_variables: + if (name.startswith('PY_') and + name[3:] in renamed_variables): + item = "" + + elif 'PY_' + n in notdone: + found = False + + else: + item = str(done['PY_' + n]) + + else: + done[n] = item = "" + + if found: + after = value[m.end():] + value = value[:m.start()] + item + after + if "$" in after: + notdone[name] = value + else: + try: + value = int(value) + except ValueError: + done[name] = value.strip() + else: + done[name] = value + variables.remove(name) + + if (name.startswith('PY_') and + name[3:] in renamed_variables): + + name = name[3:] + if name not in done: + done[name] = value + + else: + # bogus variable reference (e.g. "prefix=$/opt/python"); + # just drop it since we can't deal + done[name] = value + variables.remove(name) + + # strip spurious spaces + for k, v in done.items(): + if isinstance(v, str): + done[k] = v.strip() + + # save the results in the global dictionary + vars.update(done) + return vars + + +def get_makefile_filename(): + """Return the path of the Makefile.""" + if _PYTHON_BUILD: + return os.path.join(_PROJECT_BASE, "Makefile") + if hasattr(sys, 'abiflags'): + config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags) + else: + config_dir_name = 'config' + return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile') + + +def _init_posix(vars): + """Initialize the module as appropriate for POSIX systems.""" + # load the installed Makefile: + makefile = get_makefile_filename() + try: + _parse_makefile(makefile, vars) + except IOError as e: + msg = "invalid Python installation: unable to open %s" % makefile + if hasattr(e, "strerror"): + msg = msg + " (%s)" % e.strerror + raise IOError(msg) + # load the installed pyconfig.h: + config_h = get_config_h_filename() + try: + with open(config_h) as f: + parse_config_h(f, vars) + except IOError as e: + msg = "invalid Python installation: unable to open %s" % config_h + if hasattr(e, "strerror"): + msg = msg + " (%s)" % e.strerror + raise IOError(msg) + # On AIX, there are wrong paths to the linker scripts in the Makefile + # -- these paths are relative to the Python source, but when installed + # the scripts are in another directory. + if _PYTHON_BUILD: + vars['LDSHARED'] = vars['BLDSHARED'] + + +def _init_non_posix(vars): + """Initialize the module as appropriate for NT""" + # set basic install directories + vars['LIBDEST'] = get_path('stdlib') + vars['BINLIBDEST'] = get_path('platstdlib') + vars['INCLUDEPY'] = get_path('include') + vars['SO'] = '.pyd' + vars['EXE'] = '.exe' + vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT + vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) + +# +# public APIs +# + + +def parse_config_h(fp, vars=None): + """Parse a config.h-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + if vars is None: + vars = {} + define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") + undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") + + while True: + line = fp.readline() + if not line: + break + m = define_rx.match(line) + if m: + n, v = m.group(1, 2) + try: + v = int(v) + except ValueError: + pass + vars[n] = v + else: + m = undef_rx.match(line) + if m: + vars[m.group(1)] = 0 + return vars + + +def get_config_h_filename(): + """Return the path of pyconfig.h.""" + if _PYTHON_BUILD: + if os.name == "nt": + inc_dir = os.path.join(_PROJECT_BASE, "PC") + else: + inc_dir = _PROJECT_BASE + else: + inc_dir = get_path('platinclude') + return os.path.join(inc_dir, 'pyconfig.h') + + +def get_scheme_names(): + """Return a tuple containing the schemes names.""" + return tuple(sorted(_SCHEMES.sections())) + + +def get_path_names(): + """Return a tuple containing the paths names.""" + # xxx see if we want a static list + return _SCHEMES.options('posix_prefix') + + +def get_paths(scheme=_get_default_scheme(), vars=None, expand=True): + """Return a mapping containing an install scheme. + + ``scheme`` is the install scheme name. If not provided, it will + return the default scheme for the current platform. + """ + _ensure_cfg_read() + if expand: + return _expand_vars(scheme, vars) + else: + return dict(_SCHEMES.items(scheme)) + + +def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True): + """Return a path corresponding to the scheme. + + ``scheme`` is the install scheme name. + """ + return get_paths(scheme, vars, expand)[name] + + +def get_config_vars(*args): + """With no arguments, return a dictionary of all configuration + variables relevant for the current platform. + + On Unix, this means every variable defined in Python's installed Makefile; + On Windows and Mac OS it's a much smaller set. + + With arguments, return a list of values that result from looking up + each argument in the configuration variable dictionary. + """ + global _CONFIG_VARS + if _CONFIG_VARS is None: + _CONFIG_VARS = {} + # Normalized versions of prefix and exec_prefix are handy to have; + # in fact, these are the standard versions used most places in the + # distutils2 module. + _CONFIG_VARS['prefix'] = _PREFIX + _CONFIG_VARS['exec_prefix'] = _EXEC_PREFIX + _CONFIG_VARS['py_version'] = _PY_VERSION + _CONFIG_VARS['py_version_short'] = _PY_VERSION_SHORT + _CONFIG_VARS['py_version_nodot'] = _PY_VERSION[0] + _PY_VERSION[2] + _CONFIG_VARS['base'] = _PREFIX + _CONFIG_VARS['platbase'] = _EXEC_PREFIX + _CONFIG_VARS['projectbase'] = _PROJECT_BASE + try: + _CONFIG_VARS['abiflags'] = sys.abiflags + except AttributeError: + # sys.abiflags may not be defined on all platforms. + _CONFIG_VARS['abiflags'] = '' + + if os.name in ('nt', 'os2'): + _init_non_posix(_CONFIG_VARS) + if os.name == 'posix': + _init_posix(_CONFIG_VARS) + # Setting 'userbase' is done below the call to the + # init function to enable using 'get_config_var' in + # the init-function. + if sys.version >= '2.6': + _CONFIG_VARS['userbase'] = _getuserbase() + + if 'srcdir' not in _CONFIG_VARS: + _CONFIG_VARS['srcdir'] = _PROJECT_BASE + else: + _CONFIG_VARS['srcdir'] = _safe_realpath(_CONFIG_VARS['srcdir']) + + # Convert srcdir into an absolute path if it appears necessary. + # Normally it is relative to the build directory. However, during + # testing, for example, we might be running a non-installed python + # from a different directory. + if _PYTHON_BUILD and os.name == "posix": + base = _PROJECT_BASE + try: + cwd = os.getcwd() + except OSError: + cwd = None + if (not os.path.isabs(_CONFIG_VARS['srcdir']) and + base != cwd): + # srcdir is relative and we are not in the same directory + # as the executable. Assume executable is in the build + # directory and make srcdir absolute. + srcdir = os.path.join(base, _CONFIG_VARS['srcdir']) + _CONFIG_VARS['srcdir'] = os.path.normpath(srcdir) + + if sys.platform == 'darwin': + kernel_version = os.uname()[2] # Kernel version (8.4.3) + major_version = int(kernel_version.split('.')[0]) + + if major_version < 8: + # On Mac OS X before 10.4, check if -arch and -isysroot + # are in CFLAGS or LDFLAGS and remove them if they are. + # This is needed when building extensions on a 10.3 system + # using a universal build of python. + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + flags = _CONFIG_VARS[key] + flags = re.sub(r'-arch\s+\w+\s', ' ', flags) + flags = re.sub('-isysroot [^ \t]*', ' ', flags) + _CONFIG_VARS[key] = flags + else: + # Allow the user to override the architecture flags using + # an environment variable. + # NOTE: This name was introduced by Apple in OSX 10.5 and + # is used by several scripting languages distributed with + # that OS release. + if 'ARCHFLAGS' in os.environ: + arch = os.environ['ARCHFLAGS'] + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _CONFIG_VARS[key] + flags = re.sub(r'-arch\s+\w+\s', ' ', flags) + flags = flags + ' ' + arch + _CONFIG_VARS[key] = flags + + # If we're on OSX 10.5 or later and the user tries to + # compiles an extension using an SDK that is not present + # on the current machine it is better to not use an SDK + # than to fail. + # + # The major usecase for this is users using a Python.org + # binary installer on OSX 10.6: that installer uses + # the 10.4u SDK, but that SDK is not installed by default + # when you install Xcode. + # + CFLAGS = _CONFIG_VARS.get('CFLAGS', '') + m = re.search(r'-isysroot\s+(\S+)', CFLAGS) + if m is not None: + sdk = m.group(1) + if not os.path.exists(sdk): + for key in ('LDFLAGS', 'BASECFLAGS', + # a number of derived variables. These need to be + # patched up as well. + 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _CONFIG_VARS[key] + flags = re.sub(r'-isysroot\s+\S+(\s|$)', ' ', flags) + _CONFIG_VARS[key] = flags + + if args: + vals = [] + for name in args: + vals.append(_CONFIG_VARS.get(name)) + return vals + else: + return _CONFIG_VARS + + +def get_config_var(name): + """Return the value of a single variable using the dictionary returned by + 'get_config_vars()'. + + Equivalent to get_config_vars().get(name) + """ + return get_config_vars().get(name) + + +def get_platform(): + """Return a string that identifies the current platform. + + This is used mainly to distinguish platform-specific build directories and + platform-specific built distributions. Typically includes the OS name + and version and the architecture (as supplied by 'os.uname()'), + although the exact information included depends on the OS; eg. for IRIX + the architecture isn't particularly important (IRIX only runs on SGI + hardware), but for Linux the kernel version isn't particularly + important. + + Examples of returned values: + linux-i586 + linux-alpha (?) + solaris-2.6-sun4u + irix-5.3 + irix64-6.2 + + Windows will return one of: + win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) + win-ia64 (64bit Windows on Itanium) + win32 (all others - specifically, sys.platform is returned) + + For other non-POSIX platforms, currently just returns 'sys.platform'. + """ + if os.name == 'nt': + # sniff sys.version for architecture. + prefix = " bit (" + i = sys.version.find(prefix) + if i == -1: + return sys.platform + j = sys.version.find(")", i) + look = sys.version[i+len(prefix):j].lower() + if look == 'amd64': + return 'win-amd64' + if look == 'itanium': + return 'win-ia64' + return sys.platform + + if os.name != "posix" or not hasattr(os, 'uname'): + # XXX what about the architecture? NT is Intel or Alpha, + # Mac OS is M68k or PPC, etc. + return sys.platform + + # Try to distinguish various flavours of Unix + osname, host, release, version, machine = os.uname() + + # Convert the OS name to lowercase, remove '/' characters + # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh") + osname = osname.lower().replace('/', '') + machine = machine.replace(' ', '_') + machine = machine.replace('/', '-') + + if osname[:5] == "linux": + # At least on Linux/Intel, 'machine' is the processor -- + # i386, etc. + # XXX what about Alpha, SPARC, etc? + return "%s-%s" % (osname, machine) + elif osname[:5] == "sunos": + if release[0] >= "5": # SunOS 5 == Solaris 2 + osname = "solaris" + release = "%d.%s" % (int(release[0]) - 3, release[2:]) + # fall through to standard osname-release-machine representation + elif osname[:4] == "irix": # could be "irix64"! + return "%s-%s" % (osname, release) + elif osname[:3] == "aix": + return "%s-%s.%s" % (osname, version, release) + elif osname[:6] == "cygwin": + osname = "cygwin" + rel_re = re.compile(r'[\d.]+') + m = rel_re.match(release) + if m: + release = m.group() + elif osname[:6] == "darwin": + # + # For our purposes, we'll assume that the system version from + # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set + # to. This makes the compatibility story a bit more sane because the + # machine is going to compile and link as if it were + # MACOSX_DEPLOYMENT_TARGET. + cfgvars = get_config_vars() + macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET') + + if True: + # Always calculate the release of the running machine, + # needed to determine if we can build fat binaries or not. + + macrelease = macver + # Get the system version. Reading this plist is a documented + # way to get the system version (see the documentation for + # the Gestalt Manager) + try: + f = open('/System/Library/CoreServices/SystemVersion.plist') + except IOError: + # We're on a plain darwin box, fall back to the default + # behaviour. + pass + else: + try: + m = re.search(r'ProductUserVisibleVersion\s*' + r'(.*?)', f.read()) + finally: + f.close() + if m is not None: + macrelease = '.'.join(m.group(1).split('.')[:2]) + # else: fall back to the default behaviour + + if not macver: + macver = macrelease + + if macver: + release = macver + osname = "macosx" + + if ((macrelease + '.') >= '10.4.' and + '-arch' in get_config_vars().get('CFLAGS', '').strip()): + # The universal build will build fat binaries, but not on + # systems before 10.4 + # + # Try to detect 4-way universal builds, those have machine-type + # 'universal' instead of 'fat'. + + machine = 'fat' + cflags = get_config_vars().get('CFLAGS') + + archs = re.findall(r'-arch\s+(\S+)', cflags) + archs = tuple(sorted(set(archs))) + + if len(archs) == 1: + machine = archs[0] + elif archs == ('i386', 'ppc'): + machine = 'fat' + elif archs == ('i386', 'x86_64'): + machine = 'intel' + elif archs == ('i386', 'ppc', 'x86_64'): + machine = 'fat3' + elif archs == ('ppc64', 'x86_64'): + machine = 'fat64' + elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): + machine = 'universal' + else: + raise ValueError( + "Don't know machine value for archs=%r" % (archs,)) + + elif machine == 'i386': + # On OSX the machine type returned by uname is always the + # 32-bit variant, even if the executable architecture is + # the 64-bit variant + if sys.maxsize >= 2**32: + machine = 'x86_64' + + elif machine in ('PowerPC', 'Power_Macintosh'): + # Pick a sane name for the PPC architecture. + # See 'i386' case + if sys.maxsize >= 2**32: + machine = 'ppc64' + else: + machine = 'ppc' + + return "%s-%s-%s" % (osname, release, machine) + + +def get_python_version(): + return _PY_VERSION_SHORT + + +def _print_dict(title, data): + for index, (key, value) in enumerate(sorted(data.items())): + if index == 0: + print('%s: ' % (title)) + print('\t%s = "%s"' % (key, value)) + + +def _main(): + """Display all information sysconfig detains.""" + print('Platform: "%s"' % get_platform()) + print('Python version: "%s"' % get_python_version()) + print('Current installation scheme: "%s"' % _get_default_scheme()) + print() + _print_dict('Paths', get_paths()) + print() + _print_dict('Variables', get_config_vars()) + + +if __name__ == '__main__': + _main() diff --git a/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py b/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py new file mode 100644 index 0000000..d66d856 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py @@ -0,0 +1,2607 @@ +#------------------------------------------------------------------- +# tarfile.py +#------------------------------------------------------------------- +# Copyright (C) 2002 Lars Gustaebel +# All rights reserved. +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +from __future__ import print_function + +"""Read from and write to tar format archives. +""" + +__version__ = "$Revision$" + +version = "0.9.0" +__author__ = "Lars Gust\u00e4bel (lars@gustaebel.de)" +__date__ = "$Date: 2011-02-25 17:42:01 +0200 (Fri, 25 Feb 2011) $" +__cvsid__ = "$Id: tarfile.py 88586 2011-02-25 15:42:01Z marc-andre.lemburg $" +__credits__ = "Gustavo Niemeyer, Niels Gust\u00e4bel, Richard Townsend." + +#--------- +# Imports +#--------- +import sys +import os +import stat +import errno +import time +import struct +import copy +import re + +try: + import grp, pwd +except ImportError: + grp = pwd = None + +# os.symlink on Windows prior to 6.0 raises NotImplementedError +symlink_exception = (AttributeError, NotImplementedError) +try: + # WindowsError (1314) will be raised if the caller does not hold the + # SeCreateSymbolicLinkPrivilege privilege + symlink_exception += (WindowsError,) +except NameError: + pass + +# from tarfile import * +__all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError"] + +if sys.version_info[0] < 3: + import __builtin__ as builtins +else: + import builtins + +_open = builtins.open # Since 'open' is TarFile.open + +#--------------------------------------------------------- +# tar constants +#--------------------------------------------------------- +NUL = b"\0" # the null character +BLOCKSIZE = 512 # length of processing blocks +RECORDSIZE = BLOCKSIZE * 20 # length of records +GNU_MAGIC = b"ustar \0" # magic gnu tar string +POSIX_MAGIC = b"ustar\x0000" # magic posix tar string + +LENGTH_NAME = 100 # maximum length of a filename +LENGTH_LINK = 100 # maximum length of a linkname +LENGTH_PREFIX = 155 # maximum length of the prefix field + +REGTYPE = b"0" # regular file +AREGTYPE = b"\0" # regular file +LNKTYPE = b"1" # link (inside tarfile) +SYMTYPE = b"2" # symbolic link +CHRTYPE = b"3" # character special device +BLKTYPE = b"4" # block special device +DIRTYPE = b"5" # directory +FIFOTYPE = b"6" # fifo special device +CONTTYPE = b"7" # contiguous file + +GNUTYPE_LONGNAME = b"L" # GNU tar longname +GNUTYPE_LONGLINK = b"K" # GNU tar longlink +GNUTYPE_SPARSE = b"S" # GNU tar sparse file + +XHDTYPE = b"x" # POSIX.1-2001 extended header +XGLTYPE = b"g" # POSIX.1-2001 global header +SOLARIS_XHDTYPE = b"X" # Solaris extended header + +USTAR_FORMAT = 0 # POSIX.1-1988 (ustar) format +GNU_FORMAT = 1 # GNU tar format +PAX_FORMAT = 2 # POSIX.1-2001 (pax) format +DEFAULT_FORMAT = GNU_FORMAT + +#--------------------------------------------------------- +# tarfile constants +#--------------------------------------------------------- +# File types that tarfile supports: +SUPPORTED_TYPES = (REGTYPE, AREGTYPE, LNKTYPE, + SYMTYPE, DIRTYPE, FIFOTYPE, + CONTTYPE, CHRTYPE, BLKTYPE, + GNUTYPE_LONGNAME, GNUTYPE_LONGLINK, + GNUTYPE_SPARSE) + +# File types that will be treated as a regular file. +REGULAR_TYPES = (REGTYPE, AREGTYPE, + CONTTYPE, GNUTYPE_SPARSE) + +# File types that are part of the GNU tar format. +GNU_TYPES = (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK, + GNUTYPE_SPARSE) + +# Fields from a pax header that override a TarInfo attribute. +PAX_FIELDS = ("path", "linkpath", "size", "mtime", + "uid", "gid", "uname", "gname") + +# Fields from a pax header that are affected by hdrcharset. +PAX_NAME_FIELDS = set(("path", "linkpath", "uname", "gname")) + +# Fields in a pax header that are numbers, all other fields +# are treated as strings. +PAX_NUMBER_FIELDS = { + "atime": float, + "ctime": float, + "mtime": float, + "uid": int, + "gid": int, + "size": int +} + +#--------------------------------------------------------- +# Bits used in the mode field, values in octal. +#--------------------------------------------------------- +S_IFLNK = 0o120000 # symbolic link +S_IFREG = 0o100000 # regular file +S_IFBLK = 0o060000 # block device +S_IFDIR = 0o040000 # directory +S_IFCHR = 0o020000 # character device +S_IFIFO = 0o010000 # fifo + +TSUID = 0o4000 # set UID on execution +TSGID = 0o2000 # set GID on execution +TSVTX = 0o1000 # reserved + +TUREAD = 0o400 # read by owner +TUWRITE = 0o200 # write by owner +TUEXEC = 0o100 # execute/search by owner +TGREAD = 0o040 # read by group +TGWRITE = 0o020 # write by group +TGEXEC = 0o010 # execute/search by group +TOREAD = 0o004 # read by other +TOWRITE = 0o002 # write by other +TOEXEC = 0o001 # execute/search by other + +#--------------------------------------------------------- +# initialization +#--------------------------------------------------------- +if os.name in ("nt", "ce"): + ENCODING = "utf-8" +else: + ENCODING = sys.getfilesystemencoding() + +#--------------------------------------------------------- +# Some useful functions +#--------------------------------------------------------- + +def stn(s, length, encoding, errors): + """Convert a string to a null-terminated bytes object. + """ + s = s.encode(encoding, errors) + return s[:length] + (length - len(s)) * NUL + +def nts(s, encoding, errors): + """Convert a null-terminated bytes object to a string. + """ + p = s.find(b"\0") + if p != -1: + s = s[:p] + return s.decode(encoding, errors) + +def nti(s): + """Convert a number field to a python number. + """ + # There are two possible encodings for a number field, see + # itn() below. + if s[0] != chr(0o200): + try: + n = int(nts(s, "ascii", "strict") or "0", 8) + except ValueError: + raise InvalidHeaderError("invalid header") + else: + n = 0 + for i in range(len(s) - 1): + n <<= 8 + n += ord(s[i + 1]) + return n + +def itn(n, digits=8, format=DEFAULT_FORMAT): + """Convert a python number to a number field. + """ + # POSIX 1003.1-1988 requires numbers to be encoded as a string of + # octal digits followed by a null-byte, this allows values up to + # (8**(digits-1))-1. GNU tar allows storing numbers greater than + # that if necessary. A leading 0o200 byte indicates this particular + # encoding, the following digits-1 bytes are a big-endian + # representation. This allows values up to (256**(digits-1))-1. + if 0 <= n < 8 ** (digits - 1): + s = ("%0*o" % (digits - 1, n)).encode("ascii") + NUL + else: + if format != GNU_FORMAT or n >= 256 ** (digits - 1): + raise ValueError("overflow in number field") + + if n < 0: + # XXX We mimic GNU tar's behaviour with negative numbers, + # this could raise OverflowError. + n = struct.unpack("L", struct.pack("l", n))[0] + + s = bytearray() + for i in range(digits - 1): + s.insert(0, n & 0o377) + n >>= 8 + s.insert(0, 0o200) + return s + +def calc_chksums(buf): + """Calculate the checksum for a member's header by summing up all + characters except for the chksum field which is treated as if + it was filled with spaces. According to the GNU tar sources, + some tars (Sun and NeXT) calculate chksum with signed char, + which will be different if there are chars in the buffer with + the high bit set. So we calculate two checksums, unsigned and + signed. + """ + unsigned_chksum = 256 + sum(struct.unpack("148B", buf[:148]) + struct.unpack("356B", buf[156:512])) + signed_chksum = 256 + sum(struct.unpack("148b", buf[:148]) + struct.unpack("356b", buf[156:512])) + return unsigned_chksum, signed_chksum + +def copyfileobj(src, dst, length=None): + """Copy length bytes from fileobj src to fileobj dst. + If length is None, copy the entire content. + """ + if length == 0: + return + if length is None: + while True: + buf = src.read(16*1024) + if not buf: + break + dst.write(buf) + return + + BUFSIZE = 16 * 1024 + blocks, remainder = divmod(length, BUFSIZE) + for b in range(blocks): + buf = src.read(BUFSIZE) + if len(buf) < BUFSIZE: + raise IOError("end of file reached") + dst.write(buf) + + if remainder != 0: + buf = src.read(remainder) + if len(buf) < remainder: + raise IOError("end of file reached") + dst.write(buf) + return + +filemode_table = ( + ((S_IFLNK, "l"), + (S_IFREG, "-"), + (S_IFBLK, "b"), + (S_IFDIR, "d"), + (S_IFCHR, "c"), + (S_IFIFO, "p")), + + ((TUREAD, "r"),), + ((TUWRITE, "w"),), + ((TUEXEC|TSUID, "s"), + (TSUID, "S"), + (TUEXEC, "x")), + + ((TGREAD, "r"),), + ((TGWRITE, "w"),), + ((TGEXEC|TSGID, "s"), + (TSGID, "S"), + (TGEXEC, "x")), + + ((TOREAD, "r"),), + ((TOWRITE, "w"),), + ((TOEXEC|TSVTX, "t"), + (TSVTX, "T"), + (TOEXEC, "x")) +) + +def filemode(mode): + """Convert a file's mode to a string of the form + -rwxrwxrwx. + Used by TarFile.list() + """ + perm = [] + for table in filemode_table: + for bit, char in table: + if mode & bit == bit: + perm.append(char) + break + else: + perm.append("-") + return "".join(perm) + +class TarError(Exception): + """Base exception.""" + pass +class ExtractError(TarError): + """General exception for extract errors.""" + pass +class ReadError(TarError): + """Exception for unreadable tar archives.""" + pass +class CompressionError(TarError): + """Exception for unavailable compression methods.""" + pass +class StreamError(TarError): + """Exception for unsupported operations on stream-like TarFiles.""" + pass +class HeaderError(TarError): + """Base exception for header errors.""" + pass +class EmptyHeaderError(HeaderError): + """Exception for empty headers.""" + pass +class TruncatedHeaderError(HeaderError): + """Exception for truncated headers.""" + pass +class EOFHeaderError(HeaderError): + """Exception for end of file headers.""" + pass +class InvalidHeaderError(HeaderError): + """Exception for invalid headers.""" + pass +class SubsequentHeaderError(HeaderError): + """Exception for missing and invalid extended headers.""" + pass + +#--------------------------- +# internal stream interface +#--------------------------- +class _LowLevelFile(object): + """Low-level file object. Supports reading and writing. + It is used instead of a regular file object for streaming + access. + """ + + def __init__(self, name, mode): + mode = { + "r": os.O_RDONLY, + "w": os.O_WRONLY | os.O_CREAT | os.O_TRUNC, + }[mode] + if hasattr(os, "O_BINARY"): + mode |= os.O_BINARY + self.fd = os.open(name, mode, 0o666) + + def close(self): + os.close(self.fd) + + def read(self, size): + return os.read(self.fd, size) + + def write(self, s): + os.write(self.fd, s) + +class _Stream(object): + """Class that serves as an adapter between TarFile and + a stream-like object. The stream-like object only + needs to have a read() or write() method and is accessed + blockwise. Use of gzip or bzip2 compression is possible. + A stream-like object could be for example: sys.stdin, + sys.stdout, a socket, a tape device etc. + + _Stream is intended to be used only internally. + """ + + def __init__(self, name, mode, comptype, fileobj, bufsize): + """Construct a _Stream object. + """ + self._extfileobj = True + if fileobj is None: + fileobj = _LowLevelFile(name, mode) + self._extfileobj = False + + if comptype == '*': + # Enable transparent compression detection for the + # stream interface + fileobj = _StreamProxy(fileobj) + comptype = fileobj.getcomptype() + + self.name = name or "" + self.mode = mode + self.comptype = comptype + self.fileobj = fileobj + self.bufsize = bufsize + self.buf = b"" + self.pos = 0 + self.closed = False + + try: + if comptype == "gz": + try: + import zlib + except ImportError: + raise CompressionError("zlib module is not available") + self.zlib = zlib + self.crc = zlib.crc32(b"") + if mode == "r": + self._init_read_gz() + else: + self._init_write_gz() + + if comptype == "bz2": + try: + import bz2 + except ImportError: + raise CompressionError("bz2 module is not available") + if mode == "r": + self.dbuf = b"" + self.cmp = bz2.BZ2Decompressor() + else: + self.cmp = bz2.BZ2Compressor() + except: + if not self._extfileobj: + self.fileobj.close() + self.closed = True + raise + + def __del__(self): + if hasattr(self, "closed") and not self.closed: + self.close() + + def _init_write_gz(self): + """Initialize for writing with gzip compression. + """ + self.cmp = self.zlib.compressobj(9, self.zlib.DEFLATED, + -self.zlib.MAX_WBITS, + self.zlib.DEF_MEM_LEVEL, + 0) + timestamp = struct.pack(" self.bufsize: + self.fileobj.write(self.buf[:self.bufsize]) + self.buf = self.buf[self.bufsize:] + + def close(self): + """Close the _Stream object. No operation should be + done on it afterwards. + """ + if self.closed: + return + + if self.mode == "w" and self.comptype != "tar": + self.buf += self.cmp.flush() + + if self.mode == "w" and self.buf: + self.fileobj.write(self.buf) + self.buf = b"" + if self.comptype == "gz": + # The native zlib crc is an unsigned 32-bit integer, but + # the Python wrapper implicitly casts that to a signed C + # long. So, on a 32-bit box self.crc may "look negative", + # while the same crc on a 64-bit box may "look positive". + # To avoid irksome warnings from the `struct` module, force + # it to look positive on all boxes. + self.fileobj.write(struct.pack("= 0: + blocks, remainder = divmod(pos - self.pos, self.bufsize) + for i in range(blocks): + self.read(self.bufsize) + self.read(remainder) + else: + raise StreamError("seeking backwards is not allowed") + return self.pos + + def read(self, size=None): + """Return the next size number of bytes from the stream. + If size is not defined, return all bytes of the stream + up to EOF. + """ + if size is None: + t = [] + while True: + buf = self._read(self.bufsize) + if not buf: + break + t.append(buf) + buf = "".join(t) + else: + buf = self._read(size) + self.pos += len(buf) + return buf + + def _read(self, size): + """Return size bytes from the stream. + """ + if self.comptype == "tar": + return self.__read(size) + + c = len(self.dbuf) + while c < size: + buf = self.__read(self.bufsize) + if not buf: + break + try: + buf = self.cmp.decompress(buf) + except IOError: + raise ReadError("invalid compressed data") + self.dbuf += buf + c += len(buf) + buf = self.dbuf[:size] + self.dbuf = self.dbuf[size:] + return buf + + def __read(self, size): + """Return size bytes from stream. If internal buffer is empty, + read another block from the stream. + """ + c = len(self.buf) + while c < size: + buf = self.fileobj.read(self.bufsize) + if not buf: + break + self.buf += buf + c += len(buf) + buf = self.buf[:size] + self.buf = self.buf[size:] + return buf +# class _Stream + +class _StreamProxy(object): + """Small proxy class that enables transparent compression + detection for the Stream interface (mode 'r|*'). + """ + + def __init__(self, fileobj): + self.fileobj = fileobj + self.buf = self.fileobj.read(BLOCKSIZE) + + def read(self, size): + self.read = self.fileobj.read + return self.buf + + def getcomptype(self): + if self.buf.startswith(b"\037\213\010"): + return "gz" + if self.buf.startswith(b"BZh91"): + return "bz2" + return "tar" + + def close(self): + self.fileobj.close() +# class StreamProxy + +class _BZ2Proxy(object): + """Small proxy class that enables external file object + support for "r:bz2" and "w:bz2" modes. This is actually + a workaround for a limitation in bz2 module's BZ2File + class which (unlike gzip.GzipFile) has no support for + a file object argument. + """ + + blocksize = 16 * 1024 + + def __init__(self, fileobj, mode): + self.fileobj = fileobj + self.mode = mode + self.name = getattr(self.fileobj, "name", None) + self.init() + + def init(self): + import bz2 + self.pos = 0 + if self.mode == "r": + self.bz2obj = bz2.BZ2Decompressor() + self.fileobj.seek(0) + self.buf = b"" + else: + self.bz2obj = bz2.BZ2Compressor() + + def read(self, size): + x = len(self.buf) + while x < size: + raw = self.fileobj.read(self.blocksize) + if not raw: + break + data = self.bz2obj.decompress(raw) + self.buf += data + x += len(data) + + buf = self.buf[:size] + self.buf = self.buf[size:] + self.pos += len(buf) + return buf + + def seek(self, pos): + if pos < self.pos: + self.init() + self.read(pos - self.pos) + + def tell(self): + return self.pos + + def write(self, data): + self.pos += len(data) + raw = self.bz2obj.compress(data) + self.fileobj.write(raw) + + def close(self): + if self.mode == "w": + raw = self.bz2obj.flush() + self.fileobj.write(raw) +# class _BZ2Proxy + +#------------------------ +# Extraction file object +#------------------------ +class _FileInFile(object): + """A thin wrapper around an existing file object that + provides a part of its data as an individual file + object. + """ + + def __init__(self, fileobj, offset, size, blockinfo=None): + self.fileobj = fileobj + self.offset = offset + self.size = size + self.position = 0 + + if blockinfo is None: + blockinfo = [(0, size)] + + # Construct a map with data and zero blocks. + self.map_index = 0 + self.map = [] + lastpos = 0 + realpos = self.offset + for offset, size in blockinfo: + if offset > lastpos: + self.map.append((False, lastpos, offset, None)) + self.map.append((True, offset, offset + size, realpos)) + realpos += size + lastpos = offset + size + if lastpos < self.size: + self.map.append((False, lastpos, self.size, None)) + + def seekable(self): + if not hasattr(self.fileobj, "seekable"): + # XXX gzip.GzipFile and bz2.BZ2File + return True + return self.fileobj.seekable() + + def tell(self): + """Return the current file position. + """ + return self.position + + def seek(self, position): + """Seek to a position in the file. + """ + self.position = position + + def read(self, size=None): + """Read data from the file. + """ + if size is None: + size = self.size - self.position + else: + size = min(size, self.size - self.position) + + buf = b"" + while size > 0: + while True: + data, start, stop, offset = self.map[self.map_index] + if start <= self.position < stop: + break + else: + self.map_index += 1 + if self.map_index == len(self.map): + self.map_index = 0 + length = min(size, stop - self.position) + if data: + self.fileobj.seek(offset + (self.position - start)) + buf += self.fileobj.read(length) + else: + buf += NUL * length + size -= length + self.position += length + return buf +#class _FileInFile + + +class ExFileObject(object): + """File-like object for reading an archive member. + Is returned by TarFile.extractfile(). + """ + blocksize = 1024 + + def __init__(self, tarfile, tarinfo): + self.fileobj = _FileInFile(tarfile.fileobj, + tarinfo.offset_data, + tarinfo.size, + tarinfo.sparse) + self.name = tarinfo.name + self.mode = "r" + self.closed = False + self.size = tarinfo.size + + self.position = 0 + self.buffer = b"" + + def readable(self): + return True + + def writable(self): + return False + + def seekable(self): + return self.fileobj.seekable() + + def read(self, size=None): + """Read at most size bytes from the file. If size is not + present or None, read all data until EOF is reached. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + buf = b"" + if self.buffer: + if size is None: + buf = self.buffer + self.buffer = b"" + else: + buf = self.buffer[:size] + self.buffer = self.buffer[size:] + + if size is None: + buf += self.fileobj.read() + else: + buf += self.fileobj.read(size - len(buf)) + + self.position += len(buf) + return buf + + # XXX TextIOWrapper uses the read1() method. + read1 = read + + def readline(self, size=-1): + """Read one entire line from the file. If size is present + and non-negative, return a string with at most that + size, which may be an incomplete line. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + pos = self.buffer.find(b"\n") + 1 + if pos == 0: + # no newline found. + while True: + buf = self.fileobj.read(self.blocksize) + self.buffer += buf + if not buf or b"\n" in buf: + pos = self.buffer.find(b"\n") + 1 + if pos == 0: + # no newline found. + pos = len(self.buffer) + break + + if size != -1: + pos = min(size, pos) + + buf = self.buffer[:pos] + self.buffer = self.buffer[pos:] + self.position += len(buf) + return buf + + def readlines(self): + """Return a list with all remaining lines. + """ + result = [] + while True: + line = self.readline() + if not line: break + result.append(line) + return result + + def tell(self): + """Return the current file position. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + return self.position + + def seek(self, pos, whence=os.SEEK_SET): + """Seek to a position in the file. + """ + if self.closed: + raise ValueError("I/O operation on closed file") + + if whence == os.SEEK_SET: + self.position = min(max(pos, 0), self.size) + elif whence == os.SEEK_CUR: + if pos < 0: + self.position = max(self.position + pos, 0) + else: + self.position = min(self.position + pos, self.size) + elif whence == os.SEEK_END: + self.position = max(min(self.size + pos, self.size), 0) + else: + raise ValueError("Invalid argument") + + self.buffer = b"" + self.fileobj.seek(self.position) + + def close(self): + """Close the file object. + """ + self.closed = True + + def __iter__(self): + """Get an iterator over the file's lines. + """ + while True: + line = self.readline() + if not line: + break + yield line +#class ExFileObject + +#------------------ +# Exported Classes +#------------------ +class TarInfo(object): + """Informational class which holds the details about an + archive member given by a tar header block. + TarInfo objects are returned by TarFile.getmember(), + TarFile.getmembers() and TarFile.gettarinfo() and are + usually created internally. + """ + + __slots__ = ("name", "mode", "uid", "gid", "size", "mtime", + "chksum", "type", "linkname", "uname", "gname", + "devmajor", "devminor", + "offset", "offset_data", "pax_headers", "sparse", + "tarfile", "_sparse_structs", "_link_target") + + def __init__(self, name=""): + """Construct a TarInfo object. name is the optional name + of the member. + """ + self.name = name # member name + self.mode = 0o644 # file permissions + self.uid = 0 # user id + self.gid = 0 # group id + self.size = 0 # file size + self.mtime = 0 # modification time + self.chksum = 0 # header checksum + self.type = REGTYPE # member type + self.linkname = "" # link name + self.uname = "" # user name + self.gname = "" # group name + self.devmajor = 0 # device major number + self.devminor = 0 # device minor number + + self.offset = 0 # the tar header starts here + self.offset_data = 0 # the file's data starts here + + self.sparse = None # sparse member information + self.pax_headers = {} # pax header information + + # In pax headers the "name" and "linkname" field are called + # "path" and "linkpath". + def _getpath(self): + return self.name + def _setpath(self, name): + self.name = name + path = property(_getpath, _setpath) + + def _getlinkpath(self): + return self.linkname + def _setlinkpath(self, linkname): + self.linkname = linkname + linkpath = property(_getlinkpath, _setlinkpath) + + def __repr__(self): + return "<%s %r at %#x>" % (self.__class__.__name__,self.name,id(self)) + + def get_info(self): + """Return the TarInfo's attributes as a dictionary. + """ + info = { + "name": self.name, + "mode": self.mode & 0o7777, + "uid": self.uid, + "gid": self.gid, + "size": self.size, + "mtime": self.mtime, + "chksum": self.chksum, + "type": self.type, + "linkname": self.linkname, + "uname": self.uname, + "gname": self.gname, + "devmajor": self.devmajor, + "devminor": self.devminor + } + + if info["type"] == DIRTYPE and not info["name"].endswith("/"): + info["name"] += "/" + + return info + + def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="surrogateescape"): + """Return a tar header as a string of 512 byte blocks. + """ + info = self.get_info() + + if format == USTAR_FORMAT: + return self.create_ustar_header(info, encoding, errors) + elif format == GNU_FORMAT: + return self.create_gnu_header(info, encoding, errors) + elif format == PAX_FORMAT: + return self.create_pax_header(info, encoding) + else: + raise ValueError("invalid format") + + def create_ustar_header(self, info, encoding, errors): + """Return the object as a ustar header block. + """ + info["magic"] = POSIX_MAGIC + + if len(info["linkname"]) > LENGTH_LINK: + raise ValueError("linkname is too long") + + if len(info["name"]) > LENGTH_NAME: + info["prefix"], info["name"] = self._posix_split_name(info["name"]) + + return self._create_header(info, USTAR_FORMAT, encoding, errors) + + def create_gnu_header(self, info, encoding, errors): + """Return the object as a GNU header block sequence. + """ + info["magic"] = GNU_MAGIC + + buf = b"" + if len(info["linkname"]) > LENGTH_LINK: + buf += self._create_gnu_long_header(info["linkname"], GNUTYPE_LONGLINK, encoding, errors) + + if len(info["name"]) > LENGTH_NAME: + buf += self._create_gnu_long_header(info["name"], GNUTYPE_LONGNAME, encoding, errors) + + return buf + self._create_header(info, GNU_FORMAT, encoding, errors) + + def create_pax_header(self, info, encoding): + """Return the object as a ustar header block. If it cannot be + represented this way, prepend a pax extended header sequence + with supplement information. + """ + info["magic"] = POSIX_MAGIC + pax_headers = self.pax_headers.copy() + + # Test string fields for values that exceed the field length or cannot + # be represented in ASCII encoding. + for name, hname, length in ( + ("name", "path", LENGTH_NAME), ("linkname", "linkpath", LENGTH_LINK), + ("uname", "uname", 32), ("gname", "gname", 32)): + + if hname in pax_headers: + # The pax header has priority. + continue + + # Try to encode the string as ASCII. + try: + info[name].encode("ascii", "strict") + except UnicodeEncodeError: + pax_headers[hname] = info[name] + continue + + if len(info[name]) > length: + pax_headers[hname] = info[name] + + # Test number fields for values that exceed the field limit or values + # that like to be stored as float. + for name, digits in (("uid", 8), ("gid", 8), ("size", 12), ("mtime", 12)): + if name in pax_headers: + # The pax header has priority. Avoid overflow. + info[name] = 0 + continue + + val = info[name] + if not 0 <= val < 8 ** (digits - 1) or isinstance(val, float): + pax_headers[name] = str(val) + info[name] = 0 + + # Create a pax extended header if necessary. + if pax_headers: + buf = self._create_pax_generic_header(pax_headers, XHDTYPE, encoding) + else: + buf = b"" + + return buf + self._create_header(info, USTAR_FORMAT, "ascii", "replace") + + @classmethod + def create_pax_global_header(cls, pax_headers): + """Return the object as a pax global header block sequence. + """ + return cls._create_pax_generic_header(pax_headers, XGLTYPE, "utf8") + + def _posix_split_name(self, name): + """Split a name longer than 100 chars into a prefix + and a name part. + """ + prefix = name[:LENGTH_PREFIX + 1] + while prefix and prefix[-1] != "/": + prefix = prefix[:-1] + + name = name[len(prefix):] + prefix = prefix[:-1] + + if not prefix or len(name) > LENGTH_NAME: + raise ValueError("name is too long") + return prefix, name + + @staticmethod + def _create_header(info, format, encoding, errors): + """Return a header block. info is a dictionary with file + information, format must be one of the *_FORMAT constants. + """ + parts = [ + stn(info.get("name", ""), 100, encoding, errors), + itn(info.get("mode", 0) & 0o7777, 8, format), + itn(info.get("uid", 0), 8, format), + itn(info.get("gid", 0), 8, format), + itn(info.get("size", 0), 12, format), + itn(info.get("mtime", 0), 12, format), + b" ", # checksum field + info.get("type", REGTYPE), + stn(info.get("linkname", ""), 100, encoding, errors), + info.get("magic", POSIX_MAGIC), + stn(info.get("uname", ""), 32, encoding, errors), + stn(info.get("gname", ""), 32, encoding, errors), + itn(info.get("devmajor", 0), 8, format), + itn(info.get("devminor", 0), 8, format), + stn(info.get("prefix", ""), 155, encoding, errors) + ] + + buf = struct.pack("%ds" % BLOCKSIZE, b"".join(parts)) + chksum = calc_chksums(buf[-BLOCKSIZE:])[0] + buf = buf[:-364] + ("%06o\0" % chksum).encode("ascii") + buf[-357:] + return buf + + @staticmethod + def _create_payload(payload): + """Return the string payload filled with zero bytes + up to the next 512 byte border. + """ + blocks, remainder = divmod(len(payload), BLOCKSIZE) + if remainder > 0: + payload += (BLOCKSIZE - remainder) * NUL + return payload + + @classmethod + def _create_gnu_long_header(cls, name, type, encoding, errors): + """Return a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence + for name. + """ + name = name.encode(encoding, errors) + NUL + + info = {} + info["name"] = "././@LongLink" + info["type"] = type + info["size"] = len(name) + info["magic"] = GNU_MAGIC + + # create extended header + name blocks. + return cls._create_header(info, USTAR_FORMAT, encoding, errors) + \ + cls._create_payload(name) + + @classmethod + def _create_pax_generic_header(cls, pax_headers, type, encoding): + """Return a POSIX.1-2008 extended or global header sequence + that contains a list of keyword, value pairs. The values + must be strings. + """ + # Check if one of the fields contains surrogate characters and thereby + # forces hdrcharset=BINARY, see _proc_pax() for more information. + binary = False + for keyword, value in pax_headers.items(): + try: + value.encode("utf8", "strict") + except UnicodeEncodeError: + binary = True + break + + records = b"" + if binary: + # Put the hdrcharset field at the beginning of the header. + records += b"21 hdrcharset=BINARY\n" + + for keyword, value in pax_headers.items(): + keyword = keyword.encode("utf8") + if binary: + # Try to restore the original byte representation of `value'. + # Needless to say, that the encoding must match the string. + value = value.encode(encoding, "surrogateescape") + else: + value = value.encode("utf8") + + l = len(keyword) + len(value) + 3 # ' ' + '=' + '\n' + n = p = 0 + while True: + n = l + len(str(p)) + if n == p: + break + p = n + records += bytes(str(p), "ascii") + b" " + keyword + b"=" + value + b"\n" + + # We use a hardcoded "././@PaxHeader" name like star does + # instead of the one that POSIX recommends. + info = {} + info["name"] = "././@PaxHeader" + info["type"] = type + info["size"] = len(records) + info["magic"] = POSIX_MAGIC + + # Create pax header + record blocks. + return cls._create_header(info, USTAR_FORMAT, "ascii", "replace") + \ + cls._create_payload(records) + + @classmethod + def frombuf(cls, buf, encoding, errors): + """Construct a TarInfo object from a 512 byte bytes object. + """ + if len(buf) == 0: + raise EmptyHeaderError("empty header") + if len(buf) != BLOCKSIZE: + raise TruncatedHeaderError("truncated header") + if buf.count(NUL) == BLOCKSIZE: + raise EOFHeaderError("end of file header") + + chksum = nti(buf[148:156]) + if chksum not in calc_chksums(buf): + raise InvalidHeaderError("bad checksum") + + obj = cls() + obj.name = nts(buf[0:100], encoding, errors) + obj.mode = nti(buf[100:108]) + obj.uid = nti(buf[108:116]) + obj.gid = nti(buf[116:124]) + obj.size = nti(buf[124:136]) + obj.mtime = nti(buf[136:148]) + obj.chksum = chksum + obj.type = buf[156:157] + obj.linkname = nts(buf[157:257], encoding, errors) + obj.uname = nts(buf[265:297], encoding, errors) + obj.gname = nts(buf[297:329], encoding, errors) + obj.devmajor = nti(buf[329:337]) + obj.devminor = nti(buf[337:345]) + prefix = nts(buf[345:500], encoding, errors) + + # Old V7 tar format represents a directory as a regular + # file with a trailing slash. + if obj.type == AREGTYPE and obj.name.endswith("/"): + obj.type = DIRTYPE + + # The old GNU sparse format occupies some of the unused + # space in the buffer for up to 4 sparse structures. + # Save the them for later processing in _proc_sparse(). + if obj.type == GNUTYPE_SPARSE: + pos = 386 + structs = [] + for i in range(4): + try: + offset = nti(buf[pos:pos + 12]) + numbytes = nti(buf[pos + 12:pos + 24]) + except ValueError: + break + structs.append((offset, numbytes)) + pos += 24 + isextended = bool(buf[482]) + origsize = nti(buf[483:495]) + obj._sparse_structs = (structs, isextended, origsize) + + # Remove redundant slashes from directories. + if obj.isdir(): + obj.name = obj.name.rstrip("/") + + # Reconstruct a ustar longname. + if prefix and obj.type not in GNU_TYPES: + obj.name = prefix + "/" + obj.name + return obj + + @classmethod + def fromtarfile(cls, tarfile): + """Return the next TarInfo object from TarFile object + tarfile. + """ + buf = tarfile.fileobj.read(BLOCKSIZE) + obj = cls.frombuf(buf, tarfile.encoding, tarfile.errors) + obj.offset = tarfile.fileobj.tell() - BLOCKSIZE + return obj._proc_member(tarfile) + + #-------------------------------------------------------------------------- + # The following are methods that are called depending on the type of a + # member. The entry point is _proc_member() which can be overridden in a + # subclass to add custom _proc_*() methods. A _proc_*() method MUST + # implement the following + # operations: + # 1. Set self.offset_data to the position where the data blocks begin, + # if there is data that follows. + # 2. Set tarfile.offset to the position where the next member's header will + # begin. + # 3. Return self or another valid TarInfo object. + def _proc_member(self, tarfile): + """Choose the right processing method depending on + the type and call it. + """ + if self.type in (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK): + return self._proc_gnulong(tarfile) + elif self.type == GNUTYPE_SPARSE: + return self._proc_sparse(tarfile) + elif self.type in (XHDTYPE, XGLTYPE, SOLARIS_XHDTYPE): + return self._proc_pax(tarfile) + else: + return self._proc_builtin(tarfile) + + def _proc_builtin(self, tarfile): + """Process a builtin type or an unknown type which + will be treated as a regular file. + """ + self.offset_data = tarfile.fileobj.tell() + offset = self.offset_data + if self.isreg() or self.type not in SUPPORTED_TYPES: + # Skip the following data blocks. + offset += self._block(self.size) + tarfile.offset = offset + + # Patch the TarInfo object with saved global + # header information. + self._apply_pax_info(tarfile.pax_headers, tarfile.encoding, tarfile.errors) + + return self + + def _proc_gnulong(self, tarfile): + """Process the blocks that hold a GNU longname + or longlink member. + """ + buf = tarfile.fileobj.read(self._block(self.size)) + + # Fetch the next header and process it. + try: + next = self.fromtarfile(tarfile) + except HeaderError: + raise SubsequentHeaderError("missing or bad subsequent header") + + # Patch the TarInfo object from the next header with + # the longname information. + next.offset = self.offset + if self.type == GNUTYPE_LONGNAME: + next.name = nts(buf, tarfile.encoding, tarfile.errors) + elif self.type == GNUTYPE_LONGLINK: + next.linkname = nts(buf, tarfile.encoding, tarfile.errors) + + return next + + def _proc_sparse(self, tarfile): + """Process a GNU sparse header plus extra headers. + """ + # We already collected some sparse structures in frombuf(). + structs, isextended, origsize = self._sparse_structs + del self._sparse_structs + + # Collect sparse structures from extended header blocks. + while isextended: + buf = tarfile.fileobj.read(BLOCKSIZE) + pos = 0 + for i in range(21): + try: + offset = nti(buf[pos:pos + 12]) + numbytes = nti(buf[pos + 12:pos + 24]) + except ValueError: + break + if offset and numbytes: + structs.append((offset, numbytes)) + pos += 24 + isextended = bool(buf[504]) + self.sparse = structs + + self.offset_data = tarfile.fileobj.tell() + tarfile.offset = self.offset_data + self._block(self.size) + self.size = origsize + return self + + def _proc_pax(self, tarfile): + """Process an extended or global header as described in + POSIX.1-2008. + """ + # Read the header information. + buf = tarfile.fileobj.read(self._block(self.size)) + + # A pax header stores supplemental information for either + # the following file (extended) or all following files + # (global). + if self.type == XGLTYPE: + pax_headers = tarfile.pax_headers + else: + pax_headers = tarfile.pax_headers.copy() + + # Check if the pax header contains a hdrcharset field. This tells us + # the encoding of the path, linkpath, uname and gname fields. Normally, + # these fields are UTF-8 encoded but since POSIX.1-2008 tar + # implementations are allowed to store them as raw binary strings if + # the translation to UTF-8 fails. + match = re.search(br"\d+ hdrcharset=([^\n]+)\n", buf) + if match is not None: + pax_headers["hdrcharset"] = match.group(1).decode("utf8") + + # For the time being, we don't care about anything other than "BINARY". + # The only other value that is currently allowed by the standard is + # "ISO-IR 10646 2000 UTF-8" in other words UTF-8. + hdrcharset = pax_headers.get("hdrcharset") + if hdrcharset == "BINARY": + encoding = tarfile.encoding + else: + encoding = "utf8" + + # Parse pax header information. A record looks like that: + # "%d %s=%s\n" % (length, keyword, value). length is the size + # of the complete record including the length field itself and + # the newline. keyword and value are both UTF-8 encoded strings. + regex = re.compile(br"(\d+) ([^=]+)=") + pos = 0 + while True: + match = regex.match(buf, pos) + if not match: + break + + length, keyword = match.groups() + length = int(length) + value = buf[match.end(2) + 1:match.start(1) + length - 1] + + # Normally, we could just use "utf8" as the encoding and "strict" + # as the error handler, but we better not take the risk. For + # example, GNU tar <= 1.23 is known to store filenames it cannot + # translate to UTF-8 as raw strings (unfortunately without a + # hdrcharset=BINARY header). + # We first try the strict standard encoding, and if that fails we + # fall back on the user's encoding and error handler. + keyword = self._decode_pax_field(keyword, "utf8", "utf8", + tarfile.errors) + if keyword in PAX_NAME_FIELDS: + value = self._decode_pax_field(value, encoding, tarfile.encoding, + tarfile.errors) + else: + value = self._decode_pax_field(value, "utf8", "utf8", + tarfile.errors) + + pax_headers[keyword] = value + pos += length + + # Fetch the next header. + try: + next = self.fromtarfile(tarfile) + except HeaderError: + raise SubsequentHeaderError("missing or bad subsequent header") + + # Process GNU sparse information. + if "GNU.sparse.map" in pax_headers: + # GNU extended sparse format version 0.1. + self._proc_gnusparse_01(next, pax_headers) + + elif "GNU.sparse.size" in pax_headers: + # GNU extended sparse format version 0.0. + self._proc_gnusparse_00(next, pax_headers, buf) + + elif pax_headers.get("GNU.sparse.major") == "1" and pax_headers.get("GNU.sparse.minor") == "0": + # GNU extended sparse format version 1.0. + self._proc_gnusparse_10(next, pax_headers, tarfile) + + if self.type in (XHDTYPE, SOLARIS_XHDTYPE): + # Patch the TarInfo object with the extended header info. + next._apply_pax_info(pax_headers, tarfile.encoding, tarfile.errors) + next.offset = self.offset + + if "size" in pax_headers: + # If the extended header replaces the size field, + # we need to recalculate the offset where the next + # header starts. + offset = next.offset_data + if next.isreg() or next.type not in SUPPORTED_TYPES: + offset += next._block(next.size) + tarfile.offset = offset + + return next + + def _proc_gnusparse_00(self, next, pax_headers, buf): + """Process a GNU tar extended sparse header, version 0.0. + """ + offsets = [] + for match in re.finditer(br"\d+ GNU.sparse.offset=(\d+)\n", buf): + offsets.append(int(match.group(1))) + numbytes = [] + for match in re.finditer(br"\d+ GNU.sparse.numbytes=(\d+)\n", buf): + numbytes.append(int(match.group(1))) + next.sparse = list(zip(offsets, numbytes)) + + def _proc_gnusparse_01(self, next, pax_headers): + """Process a GNU tar extended sparse header, version 0.1. + """ + sparse = [int(x) for x in pax_headers["GNU.sparse.map"].split(",")] + next.sparse = list(zip(sparse[::2], sparse[1::2])) + + def _proc_gnusparse_10(self, next, pax_headers, tarfile): + """Process a GNU tar extended sparse header, version 1.0. + """ + fields = None + sparse = [] + buf = tarfile.fileobj.read(BLOCKSIZE) + fields, buf = buf.split(b"\n", 1) + fields = int(fields) + while len(sparse) < fields * 2: + if b"\n" not in buf: + buf += tarfile.fileobj.read(BLOCKSIZE) + number, buf = buf.split(b"\n", 1) + sparse.append(int(number)) + next.offset_data = tarfile.fileobj.tell() + next.sparse = list(zip(sparse[::2], sparse[1::2])) + + def _apply_pax_info(self, pax_headers, encoding, errors): + """Replace fields with supplemental information from a previous + pax extended or global header. + """ + for keyword, value in pax_headers.items(): + if keyword == "GNU.sparse.name": + setattr(self, "path", value) + elif keyword == "GNU.sparse.size": + setattr(self, "size", int(value)) + elif keyword == "GNU.sparse.realsize": + setattr(self, "size", int(value)) + elif keyword in PAX_FIELDS: + if keyword in PAX_NUMBER_FIELDS: + try: + value = PAX_NUMBER_FIELDS[keyword](value) + except ValueError: + value = 0 + if keyword == "path": + value = value.rstrip("/") + setattr(self, keyword, value) + + self.pax_headers = pax_headers.copy() + + def _decode_pax_field(self, value, encoding, fallback_encoding, fallback_errors): + """Decode a single field from a pax record. + """ + try: + return value.decode(encoding, "strict") + except UnicodeDecodeError: + return value.decode(fallback_encoding, fallback_errors) + + def _block(self, count): + """Round up a byte count by BLOCKSIZE and return it, + e.g. _block(834) => 1024. + """ + blocks, remainder = divmod(count, BLOCKSIZE) + if remainder: + blocks += 1 + return blocks * BLOCKSIZE + + def isreg(self): + return self.type in REGULAR_TYPES + def isfile(self): + return self.isreg() + def isdir(self): + return self.type == DIRTYPE + def issym(self): + return self.type == SYMTYPE + def islnk(self): + return self.type == LNKTYPE + def ischr(self): + return self.type == CHRTYPE + def isblk(self): + return self.type == BLKTYPE + def isfifo(self): + return self.type == FIFOTYPE + def issparse(self): + return self.sparse is not None + def isdev(self): + return self.type in (CHRTYPE, BLKTYPE, FIFOTYPE) +# class TarInfo + +class TarFile(object): + """The TarFile Class provides an interface to tar archives. + """ + + debug = 0 # May be set from 0 (no msgs) to 3 (all msgs) + + dereference = False # If true, add content of linked file to the + # tar file, else the link. + + ignore_zeros = False # If true, skips empty or invalid blocks and + # continues processing. + + errorlevel = 1 # If 0, fatal errors only appear in debug + # messages (if debug >= 0). If > 0, errors + # are passed to the caller as exceptions. + + format = DEFAULT_FORMAT # The format to use when creating an archive. + + encoding = ENCODING # Encoding for 8-bit character strings. + + errors = None # Error handler for unicode conversion. + + tarinfo = TarInfo # The default TarInfo class to use. + + fileobject = ExFileObject # The default ExFileObject class to use. + + def __init__(self, name=None, mode="r", fileobj=None, format=None, + tarinfo=None, dereference=None, ignore_zeros=None, encoding=None, + errors="surrogateescape", pax_headers=None, debug=None, errorlevel=None): + """Open an (uncompressed) tar archive `name'. `mode' is either 'r' to + read from an existing archive, 'a' to append data to an existing + file or 'w' to create a new file overwriting an existing one. `mode' + defaults to 'r'. + If `fileobj' is given, it is used for reading or writing data. If it + can be determined, `mode' is overridden by `fileobj's mode. + `fileobj' is not closed, when TarFile is closed. + """ + if len(mode) > 1 or mode not in "raw": + raise ValueError("mode must be 'r', 'a' or 'w'") + self.mode = mode + self._mode = {"r": "rb", "a": "r+b", "w": "wb"}[mode] + + if not fileobj: + if self.mode == "a" and not os.path.exists(name): + # Create nonexistent files in append mode. + self.mode = "w" + self._mode = "wb" + fileobj = bltn_open(name, self._mode) + self._extfileobj = False + else: + if name is None and hasattr(fileobj, "name"): + name = fileobj.name + if hasattr(fileobj, "mode"): + self._mode = fileobj.mode + self._extfileobj = True + self.name = os.path.abspath(name) if name else None + self.fileobj = fileobj + + # Init attributes. + if format is not None: + self.format = format + if tarinfo is not None: + self.tarinfo = tarinfo + if dereference is not None: + self.dereference = dereference + if ignore_zeros is not None: + self.ignore_zeros = ignore_zeros + if encoding is not None: + self.encoding = encoding + self.errors = errors + + if pax_headers is not None and self.format == PAX_FORMAT: + self.pax_headers = pax_headers + else: + self.pax_headers = {} + + if debug is not None: + self.debug = debug + if errorlevel is not None: + self.errorlevel = errorlevel + + # Init datastructures. + self.closed = False + self.members = [] # list of members as TarInfo objects + self._loaded = False # flag if all members have been read + self.offset = self.fileobj.tell() + # current position in the archive file + self.inodes = {} # dictionary caching the inodes of + # archive members already added + + try: + if self.mode == "r": + self.firstmember = None + self.firstmember = self.next() + + if self.mode == "a": + # Move to the end of the archive, + # before the first empty block. + while True: + self.fileobj.seek(self.offset) + try: + tarinfo = self.tarinfo.fromtarfile(self) + self.members.append(tarinfo) + except EOFHeaderError: + self.fileobj.seek(self.offset) + break + except HeaderError as e: + raise ReadError(str(e)) + + if self.mode in "aw": + self._loaded = True + + if self.pax_headers: + buf = self.tarinfo.create_pax_global_header(self.pax_headers.copy()) + self.fileobj.write(buf) + self.offset += len(buf) + except: + if not self._extfileobj: + self.fileobj.close() + self.closed = True + raise + + #-------------------------------------------------------------------------- + # Below are the classmethods which act as alternate constructors to the + # TarFile class. The open() method is the only one that is needed for + # public use; it is the "super"-constructor and is able to select an + # adequate "sub"-constructor for a particular compression using the mapping + # from OPEN_METH. + # + # This concept allows one to subclass TarFile without losing the comfort of + # the super-constructor. A sub-constructor is registered and made available + # by adding it to the mapping in OPEN_METH. + + @classmethod + def open(cls, name=None, mode="r", fileobj=None, bufsize=RECORDSIZE, **kwargs): + """Open a tar archive for reading, writing or appending. Return + an appropriate TarFile class. + + mode: + 'r' or 'r:*' open for reading with transparent compression + 'r:' open for reading exclusively uncompressed + 'r:gz' open for reading with gzip compression + 'r:bz2' open for reading with bzip2 compression + 'a' or 'a:' open for appending, creating the file if necessary + 'w' or 'w:' open for writing without compression + 'w:gz' open for writing with gzip compression + 'w:bz2' open for writing with bzip2 compression + + 'r|*' open a stream of tar blocks with transparent compression + 'r|' open an uncompressed stream of tar blocks for reading + 'r|gz' open a gzip compressed stream of tar blocks + 'r|bz2' open a bzip2 compressed stream of tar blocks + 'w|' open an uncompressed stream for writing + 'w|gz' open a gzip compressed stream for writing + 'w|bz2' open a bzip2 compressed stream for writing + """ + + if not name and not fileobj: + raise ValueError("nothing to open") + + if mode in ("r", "r:*"): + # Find out which *open() is appropriate for opening the file. + for comptype in cls.OPEN_METH: + func = getattr(cls, cls.OPEN_METH[comptype]) + if fileobj is not None: + saved_pos = fileobj.tell() + try: + return func(name, "r", fileobj, **kwargs) + except (ReadError, CompressionError) as e: + if fileobj is not None: + fileobj.seek(saved_pos) + continue + raise ReadError("file could not be opened successfully") + + elif ":" in mode: + filemode, comptype = mode.split(":", 1) + filemode = filemode or "r" + comptype = comptype or "tar" + + # Select the *open() function according to + # given compression. + if comptype in cls.OPEN_METH: + func = getattr(cls, cls.OPEN_METH[comptype]) + else: + raise CompressionError("unknown compression type %r" % comptype) + return func(name, filemode, fileobj, **kwargs) + + elif "|" in mode: + filemode, comptype = mode.split("|", 1) + filemode = filemode or "r" + comptype = comptype or "tar" + + if filemode not in "rw": + raise ValueError("mode must be 'r' or 'w'") + + stream = _Stream(name, filemode, comptype, fileobj, bufsize) + try: + t = cls(name, filemode, stream, **kwargs) + except: + stream.close() + raise + t._extfileobj = False + return t + + elif mode in "aw": + return cls.taropen(name, mode, fileobj, **kwargs) + + raise ValueError("undiscernible mode") + + @classmethod + def taropen(cls, name, mode="r", fileobj=None, **kwargs): + """Open uncompressed tar archive name for reading or writing. + """ + if len(mode) > 1 or mode not in "raw": + raise ValueError("mode must be 'r', 'a' or 'w'") + return cls(name, mode, fileobj, **kwargs) + + @classmethod + def gzopen(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): + """Open gzip compressed tar archive name for reading or writing. + Appending is not allowed. + """ + if len(mode) > 1 or mode not in "rw": + raise ValueError("mode must be 'r' or 'w'") + + try: + import gzip + gzip.GzipFile + except (ImportError, AttributeError): + raise CompressionError("gzip module is not available") + + extfileobj = fileobj is not None + try: + fileobj = gzip.GzipFile(name, mode + "b", compresslevel, fileobj) + t = cls.taropen(name, mode, fileobj, **kwargs) + except IOError: + if not extfileobj and fileobj is not None: + fileobj.close() + if fileobj is None: + raise + raise ReadError("not a gzip file") + except: + if not extfileobj and fileobj is not None: + fileobj.close() + raise + t._extfileobj = extfileobj + return t + + @classmethod + def bz2open(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): + """Open bzip2 compressed tar archive name for reading or writing. + Appending is not allowed. + """ + if len(mode) > 1 or mode not in "rw": + raise ValueError("mode must be 'r' or 'w'.") + + try: + import bz2 + except ImportError: + raise CompressionError("bz2 module is not available") + + if fileobj is not None: + fileobj = _BZ2Proxy(fileobj, mode) + else: + fileobj = bz2.BZ2File(name, mode, compresslevel=compresslevel) + + try: + t = cls.taropen(name, mode, fileobj, **kwargs) + except (IOError, EOFError): + fileobj.close() + raise ReadError("not a bzip2 file") + t._extfileobj = False + return t + + # All *open() methods are registered here. + OPEN_METH = { + "tar": "taropen", # uncompressed tar + "gz": "gzopen", # gzip compressed tar + "bz2": "bz2open" # bzip2 compressed tar + } + + #-------------------------------------------------------------------------- + # The public methods which TarFile provides: + + def close(self): + """Close the TarFile. In write-mode, two finishing zero blocks are + appended to the archive. + """ + if self.closed: + return + + if self.mode in "aw": + self.fileobj.write(NUL * (BLOCKSIZE * 2)) + self.offset += (BLOCKSIZE * 2) + # fill up the end with zero-blocks + # (like option -b20 for tar does) + blocks, remainder = divmod(self.offset, RECORDSIZE) + if remainder > 0: + self.fileobj.write(NUL * (RECORDSIZE - remainder)) + + if not self._extfileobj: + self.fileobj.close() + self.closed = True + + def getmember(self, name): + """Return a TarInfo object for member `name'. If `name' can not be + found in the archive, KeyError is raised. If a member occurs more + than once in the archive, its last occurrence is assumed to be the + most up-to-date version. + """ + tarinfo = self._getmember(name) + if tarinfo is None: + raise KeyError("filename %r not found" % name) + return tarinfo + + def getmembers(self): + """Return the members of the archive as a list of TarInfo objects. The + list has the same order as the members in the archive. + """ + self._check() + if not self._loaded: # if we want to obtain a list of + self._load() # all members, we first have to + # scan the whole archive. + return self.members + + def getnames(self): + """Return the members of the archive as a list of their names. It has + the same order as the list returned by getmembers(). + """ + return [tarinfo.name for tarinfo in self.getmembers()] + + def gettarinfo(self, name=None, arcname=None, fileobj=None): + """Create a TarInfo object for either the file `name' or the file + object `fileobj' (using os.fstat on its file descriptor). You can + modify some of the TarInfo's attributes before you add it using + addfile(). If given, `arcname' specifies an alternative name for the + file in the archive. + """ + self._check("aw") + + # When fileobj is given, replace name by + # fileobj's real name. + if fileobj is not None: + name = fileobj.name + + # Building the name of the member in the archive. + # Backward slashes are converted to forward slashes, + # Absolute paths are turned to relative paths. + if arcname is None: + arcname = name + drv, arcname = os.path.splitdrive(arcname) + arcname = arcname.replace(os.sep, "/") + arcname = arcname.lstrip("/") + + # Now, fill the TarInfo object with + # information specific for the file. + tarinfo = self.tarinfo() + tarinfo.tarfile = self + + # Use os.stat or os.lstat, depending on platform + # and if symlinks shall be resolved. + if fileobj is None: + if hasattr(os, "lstat") and not self.dereference: + statres = os.lstat(name) + else: + statres = os.stat(name) + else: + statres = os.fstat(fileobj.fileno()) + linkname = "" + + stmd = statres.st_mode + if stat.S_ISREG(stmd): + inode = (statres.st_ino, statres.st_dev) + if not self.dereference and statres.st_nlink > 1 and \ + inode in self.inodes and arcname != self.inodes[inode]: + # Is it a hardlink to an already + # archived file? + type = LNKTYPE + linkname = self.inodes[inode] + else: + # The inode is added only if its valid. + # For win32 it is always 0. + type = REGTYPE + if inode[0]: + self.inodes[inode] = arcname + elif stat.S_ISDIR(stmd): + type = DIRTYPE + elif stat.S_ISFIFO(stmd): + type = FIFOTYPE + elif stat.S_ISLNK(stmd): + type = SYMTYPE + linkname = os.readlink(name) + elif stat.S_ISCHR(stmd): + type = CHRTYPE + elif stat.S_ISBLK(stmd): + type = BLKTYPE + else: + return None + + # Fill the TarInfo object with all + # information we can get. + tarinfo.name = arcname + tarinfo.mode = stmd + tarinfo.uid = statres.st_uid + tarinfo.gid = statres.st_gid + if type == REGTYPE: + tarinfo.size = statres.st_size + else: + tarinfo.size = 0 + tarinfo.mtime = statres.st_mtime + tarinfo.type = type + tarinfo.linkname = linkname + if pwd: + try: + tarinfo.uname = pwd.getpwuid(tarinfo.uid)[0] + except KeyError: + pass + if grp: + try: + tarinfo.gname = grp.getgrgid(tarinfo.gid)[0] + except KeyError: + pass + + if type in (CHRTYPE, BLKTYPE): + if hasattr(os, "major") and hasattr(os, "minor"): + tarinfo.devmajor = os.major(statres.st_rdev) + tarinfo.devminor = os.minor(statres.st_rdev) + return tarinfo + + def list(self, verbose=True): + """Print a table of contents to sys.stdout. If `verbose' is False, only + the names of the members are printed. If it is True, an `ls -l'-like + output is produced. + """ + self._check() + + for tarinfo in self: + if verbose: + print(filemode(tarinfo.mode), end=' ') + print("%s/%s" % (tarinfo.uname or tarinfo.uid, + tarinfo.gname or tarinfo.gid), end=' ') + if tarinfo.ischr() or tarinfo.isblk(): + print("%10s" % ("%d,%d" \ + % (tarinfo.devmajor, tarinfo.devminor)), end=' ') + else: + print("%10d" % tarinfo.size, end=' ') + print("%d-%02d-%02d %02d:%02d:%02d" \ + % time.localtime(tarinfo.mtime)[:6], end=' ') + + print(tarinfo.name + ("/" if tarinfo.isdir() else ""), end=' ') + + if verbose: + if tarinfo.issym(): + print("->", tarinfo.linkname, end=' ') + if tarinfo.islnk(): + print("link to", tarinfo.linkname, end=' ') + print() + + def add(self, name, arcname=None, recursive=True, exclude=None, filter=None): + """Add the file `name' to the archive. `name' may be any type of file + (directory, fifo, symbolic link, etc.). If given, `arcname' + specifies an alternative name for the file in the archive. + Directories are added recursively by default. This can be avoided by + setting `recursive' to False. `exclude' is a function that should + return True for each filename to be excluded. `filter' is a function + that expects a TarInfo object argument and returns the changed + TarInfo object, if it returns None the TarInfo object will be + excluded from the archive. + """ + self._check("aw") + + if arcname is None: + arcname = name + + # Exclude pathnames. + if exclude is not None: + import warnings + warnings.warn("use the filter argument instead", + DeprecationWarning, 2) + if exclude(name): + self._dbg(2, "tarfile: Excluded %r" % name) + return + + # Skip if somebody tries to archive the archive... + if self.name is not None and os.path.abspath(name) == self.name: + self._dbg(2, "tarfile: Skipped %r" % name) + return + + self._dbg(1, name) + + # Create a TarInfo object from the file. + tarinfo = self.gettarinfo(name, arcname) + + if tarinfo is None: + self._dbg(1, "tarfile: Unsupported type %r" % name) + return + + # Change or exclude the TarInfo object. + if filter is not None: + tarinfo = filter(tarinfo) + if tarinfo is None: + self._dbg(2, "tarfile: Excluded %r" % name) + return + + # Append the tar header and data to the archive. + if tarinfo.isreg(): + f = bltn_open(name, "rb") + self.addfile(tarinfo, f) + f.close() + + elif tarinfo.isdir(): + self.addfile(tarinfo) + if recursive: + for f in os.listdir(name): + self.add(os.path.join(name, f), os.path.join(arcname, f), + recursive, exclude, filter=filter) + + else: + self.addfile(tarinfo) + + def addfile(self, tarinfo, fileobj=None): + """Add the TarInfo object `tarinfo' to the archive. If `fileobj' is + given, tarinfo.size bytes are read from it and added to the archive. + You can create TarInfo objects using gettarinfo(). + On Windows platforms, `fileobj' should always be opened with mode + 'rb' to avoid irritation about the file size. + """ + self._check("aw") + + tarinfo = copy.copy(tarinfo) + + buf = tarinfo.tobuf(self.format, self.encoding, self.errors) + self.fileobj.write(buf) + self.offset += len(buf) + + # If there's data to follow, append it. + if fileobj is not None: + copyfileobj(fileobj, self.fileobj, tarinfo.size) + blocks, remainder = divmod(tarinfo.size, BLOCKSIZE) + if remainder > 0: + self.fileobj.write(NUL * (BLOCKSIZE - remainder)) + blocks += 1 + self.offset += blocks * BLOCKSIZE + + self.members.append(tarinfo) + + def extractall(self, path=".", members=None): + """Extract all members from the archive to the current working + directory and set owner, modification time and permissions on + directories afterwards. `path' specifies a different directory + to extract to. `members' is optional and must be a subset of the + list returned by getmembers(). + """ + directories = [] + + if members is None: + members = self + + for tarinfo in members: + if tarinfo.isdir(): + # Extract directories with a safe mode. + directories.append(tarinfo) + tarinfo = copy.copy(tarinfo) + tarinfo.mode = 0o700 + # Do not set_attrs directories, as we will do that further down + self.extract(tarinfo, path, set_attrs=not tarinfo.isdir()) + + # Reverse sort directories. + directories.sort(key=lambda a: a.name) + directories.reverse() + + # Set correct owner, mtime and filemode on directories. + for tarinfo in directories: + dirpath = os.path.join(path, tarinfo.name) + try: + self.chown(tarinfo, dirpath) + self.utime(tarinfo, dirpath) + self.chmod(tarinfo, dirpath) + except ExtractError as e: + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + def extract(self, member, path="", set_attrs=True): + """Extract a member from the archive to the current working directory, + using its full name. Its file information is extracted as accurately + as possible. `member' may be a filename or a TarInfo object. You can + specify a different directory using `path'. File attributes (owner, + mtime, mode) are set unless `set_attrs' is False. + """ + self._check("r") + + if isinstance(member, str): + tarinfo = self.getmember(member) + else: + tarinfo = member + + # Prepare the link target for makelink(). + if tarinfo.islnk(): + tarinfo._link_target = os.path.join(path, tarinfo.linkname) + + try: + self._extract_member(tarinfo, os.path.join(path, tarinfo.name), + set_attrs=set_attrs) + except EnvironmentError as e: + if self.errorlevel > 0: + raise + else: + if e.filename is None: + self._dbg(1, "tarfile: %s" % e.strerror) + else: + self._dbg(1, "tarfile: %s %r" % (e.strerror, e.filename)) + except ExtractError as e: + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + def extractfile(self, member): + """Extract a member from the archive as a file object. `member' may be + a filename or a TarInfo object. If `member' is a regular file, a + file-like object is returned. If `member' is a link, a file-like + object is constructed from the link's target. If `member' is none of + the above, None is returned. + The file-like object is read-only and provides the following + methods: read(), readline(), readlines(), seek() and tell() + """ + self._check("r") + + if isinstance(member, str): + tarinfo = self.getmember(member) + else: + tarinfo = member + + if tarinfo.isreg(): + return self.fileobject(self, tarinfo) + + elif tarinfo.type not in SUPPORTED_TYPES: + # If a member's type is unknown, it is treated as a + # regular file. + return self.fileobject(self, tarinfo) + + elif tarinfo.islnk() or tarinfo.issym(): + if isinstance(self.fileobj, _Stream): + # A small but ugly workaround for the case that someone tries + # to extract a (sym)link as a file-object from a non-seekable + # stream of tar blocks. + raise StreamError("cannot extract (sym)link as file object") + else: + # A (sym)link's file object is its target's file object. + return self.extractfile(self._find_link_target(tarinfo)) + else: + # If there's no data associated with the member (directory, chrdev, + # blkdev, etc.), return None instead of a file object. + return None + + def _extract_member(self, tarinfo, targetpath, set_attrs=True): + """Extract the TarInfo object tarinfo to a physical + file called targetpath. + """ + # Fetch the TarInfo object for the given name + # and build the destination pathname, replacing + # forward slashes to platform specific separators. + targetpath = targetpath.rstrip("/") + targetpath = targetpath.replace("/", os.sep) + + # Create all upper directories. + upperdirs = os.path.dirname(targetpath) + if upperdirs and not os.path.exists(upperdirs): + # Create directories that are not part of the archive with + # default permissions. + os.makedirs(upperdirs) + + if tarinfo.islnk() or tarinfo.issym(): + self._dbg(1, "%s -> %s" % (tarinfo.name, tarinfo.linkname)) + else: + self._dbg(1, tarinfo.name) + + if tarinfo.isreg(): + self.makefile(tarinfo, targetpath) + elif tarinfo.isdir(): + self.makedir(tarinfo, targetpath) + elif tarinfo.isfifo(): + self.makefifo(tarinfo, targetpath) + elif tarinfo.ischr() or tarinfo.isblk(): + self.makedev(tarinfo, targetpath) + elif tarinfo.islnk() or tarinfo.issym(): + self.makelink(tarinfo, targetpath) + elif tarinfo.type not in SUPPORTED_TYPES: + self.makeunknown(tarinfo, targetpath) + else: + self.makefile(tarinfo, targetpath) + + if set_attrs: + self.chown(tarinfo, targetpath) + if not tarinfo.issym(): + self.chmod(tarinfo, targetpath) + self.utime(tarinfo, targetpath) + + #-------------------------------------------------------------------------- + # Below are the different file methods. They are called via + # _extract_member() when extract() is called. They can be replaced in a + # subclass to implement other functionality. + + def makedir(self, tarinfo, targetpath): + """Make a directory called targetpath. + """ + try: + # Use a safe mode for the directory, the real mode is set + # later in _extract_member(). + os.mkdir(targetpath, 0o700) + except EnvironmentError as e: + if e.errno != errno.EEXIST: + raise + + def makefile(self, tarinfo, targetpath): + """Make a file called targetpath. + """ + source = self.fileobj + source.seek(tarinfo.offset_data) + target = bltn_open(targetpath, "wb") + if tarinfo.sparse is not None: + for offset, size in tarinfo.sparse: + target.seek(offset) + copyfileobj(source, target, size) + else: + copyfileobj(source, target, tarinfo.size) + target.seek(tarinfo.size) + target.truncate() + target.close() + + def makeunknown(self, tarinfo, targetpath): + """Make a file from a TarInfo object with an unknown type + at targetpath. + """ + self.makefile(tarinfo, targetpath) + self._dbg(1, "tarfile: Unknown file type %r, " \ + "extracted as regular file." % tarinfo.type) + + def makefifo(self, tarinfo, targetpath): + """Make a fifo called targetpath. + """ + if hasattr(os, "mkfifo"): + os.mkfifo(targetpath) + else: + raise ExtractError("fifo not supported by system") + + def makedev(self, tarinfo, targetpath): + """Make a character or block device called targetpath. + """ + if not hasattr(os, "mknod") or not hasattr(os, "makedev"): + raise ExtractError("special devices not supported by system") + + mode = tarinfo.mode + if tarinfo.isblk(): + mode |= stat.S_IFBLK + else: + mode |= stat.S_IFCHR + + os.mknod(targetpath, mode, + os.makedev(tarinfo.devmajor, tarinfo.devminor)) + + def makelink(self, tarinfo, targetpath): + """Make a (symbolic) link called targetpath. If it cannot be created + (platform limitation), we try to make a copy of the referenced file + instead of a link. + """ + try: + # For systems that support symbolic and hard links. + if tarinfo.issym(): + os.symlink(tarinfo.linkname, targetpath) + else: + # See extract(). + if os.path.exists(tarinfo._link_target): + os.link(tarinfo._link_target, targetpath) + else: + self._extract_member(self._find_link_target(tarinfo), + targetpath) + except symlink_exception: + if tarinfo.issym(): + linkpath = os.path.join(os.path.dirname(tarinfo.name), + tarinfo.linkname) + else: + linkpath = tarinfo.linkname + else: + try: + self._extract_member(self._find_link_target(tarinfo), + targetpath) + except KeyError: + raise ExtractError("unable to resolve link inside archive") + + def chown(self, tarinfo, targetpath): + """Set owner of targetpath according to tarinfo. + """ + if pwd and hasattr(os, "geteuid") and os.geteuid() == 0: + # We have to be root to do so. + try: + g = grp.getgrnam(tarinfo.gname)[2] + except KeyError: + g = tarinfo.gid + try: + u = pwd.getpwnam(tarinfo.uname)[2] + except KeyError: + u = tarinfo.uid + try: + if tarinfo.issym() and hasattr(os, "lchown"): + os.lchown(targetpath, u, g) + else: + if sys.platform != "os2emx": + os.chown(targetpath, u, g) + except EnvironmentError as e: + raise ExtractError("could not change owner") + + def chmod(self, tarinfo, targetpath): + """Set file permissions of targetpath according to tarinfo. + """ + if hasattr(os, 'chmod'): + try: + os.chmod(targetpath, tarinfo.mode) + except EnvironmentError as e: + raise ExtractError("could not change mode") + + def utime(self, tarinfo, targetpath): + """Set modification time of targetpath according to tarinfo. + """ + if not hasattr(os, 'utime'): + return + try: + os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime)) + except EnvironmentError as e: + raise ExtractError("could not change modification time") + + #-------------------------------------------------------------------------- + def next(self): + """Return the next member of the archive as a TarInfo object, when + TarFile is opened for reading. Return None if there is no more + available. + """ + self._check("ra") + if self.firstmember is not None: + m = self.firstmember + self.firstmember = None + return m + + # Read the next block. + self.fileobj.seek(self.offset) + tarinfo = None + while True: + try: + tarinfo = self.tarinfo.fromtarfile(self) + except EOFHeaderError as e: + if self.ignore_zeros: + self._dbg(2, "0x%X: %s" % (self.offset, e)) + self.offset += BLOCKSIZE + continue + except InvalidHeaderError as e: + if self.ignore_zeros: + self._dbg(2, "0x%X: %s" % (self.offset, e)) + self.offset += BLOCKSIZE + continue + elif self.offset == 0: + raise ReadError(str(e)) + except EmptyHeaderError: + if self.offset == 0: + raise ReadError("empty file") + except TruncatedHeaderError as e: + if self.offset == 0: + raise ReadError(str(e)) + except SubsequentHeaderError as e: + raise ReadError(str(e)) + break + + if tarinfo is not None: + self.members.append(tarinfo) + else: + self._loaded = True + + return tarinfo + + #-------------------------------------------------------------------------- + # Little helper methods: + + def _getmember(self, name, tarinfo=None, normalize=False): + """Find an archive member by name from bottom to top. + If tarinfo is given, it is used as the starting point. + """ + # Ensure that all members have been loaded. + members = self.getmembers() + + # Limit the member search list up to tarinfo. + if tarinfo is not None: + members = members[:members.index(tarinfo)] + + if normalize: + name = os.path.normpath(name) + + for member in reversed(members): + if normalize: + member_name = os.path.normpath(member.name) + else: + member_name = member.name + + if name == member_name: + return member + + def _load(self): + """Read through the entire archive file and look for readable + members. + """ + while True: + tarinfo = self.next() + if tarinfo is None: + break + self._loaded = True + + def _check(self, mode=None): + """Check if TarFile is still open, and if the operation's mode + corresponds to TarFile's mode. + """ + if self.closed: + raise IOError("%s is closed" % self.__class__.__name__) + if mode is not None and self.mode not in mode: + raise IOError("bad operation for mode %r" % self.mode) + + def _find_link_target(self, tarinfo): + """Find the target member of a symlink or hardlink member in the + archive. + """ + if tarinfo.issym(): + # Always search the entire archive. + linkname = os.path.dirname(tarinfo.name) + "/" + tarinfo.linkname + limit = None + else: + # Search the archive before the link, because a hard link is + # just a reference to an already archived file. + linkname = tarinfo.linkname + limit = tarinfo + + member = self._getmember(linkname, tarinfo=limit, normalize=True) + if member is None: + raise KeyError("linkname %r not found" % linkname) + return member + + def __iter__(self): + """Provide an iterator object. + """ + if self._loaded: + return iter(self.members) + else: + return TarIter(self) + + def _dbg(self, level, msg): + """Write debugging output to sys.stderr. + """ + if level <= self.debug: + print(msg, file=sys.stderr) + + def __enter__(self): + self._check() + return self + + def __exit__(self, type, value, traceback): + if type is None: + self.close() + else: + # An exception occurred. We must not call close() because + # it would try to write end-of-archive blocks and padding. + if not self._extfileobj: + self.fileobj.close() + self.closed = True +# class TarFile + +class TarIter(object): + """Iterator Class. + + for tarinfo in TarFile(...): + suite... + """ + + def __init__(self, tarfile): + """Construct a TarIter object. + """ + self.tarfile = tarfile + self.index = 0 + def __iter__(self): + """Return iterator object. + """ + return self + + def __next__(self): + """Return the next item using TarFile's next() method. + When all members have been read, set TarFile as _loaded. + """ + # Fix for SF #1100429: Under rare circumstances it can + # happen that getmembers() is called during iteration, + # which will cause TarIter to stop prematurely. + if not self.tarfile._loaded: + tarinfo = self.tarfile.next() + if not tarinfo: + self.tarfile._loaded = True + raise StopIteration + else: + try: + tarinfo = self.tarfile.members[self.index] + except IndexError: + raise StopIteration + self.index += 1 + return tarinfo + + next = __next__ # for Python 2.x + +#-------------------- +# exported functions +#-------------------- +def is_tarfile(name): + """Return True if name points to a tar archive that we + are able to handle, else return False. + """ + try: + t = open(name) + t.close() + return True + except TarError: + return False + +bltn_open = open +open = TarFile.open diff --git a/Lib/site-packages/pip/_vendor/distlib/compat.py b/Lib/site-packages/pip/_vendor/distlib/compat.py new file mode 100644 index 0000000..ff328c8 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/compat.py @@ -0,0 +1,1120 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2017 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import absolute_import + +import os +import re +import sys + +try: + import ssl +except ImportError: # pragma: no cover + ssl = None + +if sys.version_info[0] < 3: # pragma: no cover + from StringIO import StringIO + string_types = basestring, + text_type = unicode + from types import FileType as file_type + import __builtin__ as builtins + import ConfigParser as configparser + from ._backport import shutil + from urlparse import urlparse, urlunparse, urljoin, urlsplit, urlunsplit + from urllib import (urlretrieve, quote as _quote, unquote, url2pathname, + pathname2url, ContentTooShortError, splittype) + + def quote(s): + if isinstance(s, unicode): + s = s.encode('utf-8') + return _quote(s) + + import urllib2 + from urllib2 import (Request, urlopen, URLError, HTTPError, + HTTPBasicAuthHandler, HTTPPasswordMgr, + HTTPHandler, HTTPRedirectHandler, + build_opener) + if ssl: + from urllib2 import HTTPSHandler + import httplib + import xmlrpclib + import Queue as queue + from HTMLParser import HTMLParser + import htmlentitydefs + raw_input = raw_input + from itertools import ifilter as filter + from itertools import ifilterfalse as filterfalse + + _userprog = None + def splituser(host): + """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.""" + global _userprog + if _userprog is None: + import re + _userprog = re.compile('^(.*)@(.*)$') + + match = _userprog.match(host) + if match: return match.group(1, 2) + return None, host + +else: # pragma: no cover + from io import StringIO + string_types = str, + text_type = str + from io import TextIOWrapper as file_type + import builtins + import configparser + import shutil + from urllib.parse import (urlparse, urlunparse, urljoin, splituser, quote, + unquote, urlsplit, urlunsplit, splittype) + from urllib.request import (urlopen, urlretrieve, Request, url2pathname, + pathname2url, + HTTPBasicAuthHandler, HTTPPasswordMgr, + HTTPHandler, HTTPRedirectHandler, + build_opener) + if ssl: + from urllib.request import HTTPSHandler + from urllib.error import HTTPError, URLError, ContentTooShortError + import http.client as httplib + import urllib.request as urllib2 + import xmlrpc.client as xmlrpclib + import queue + from html.parser import HTMLParser + import html.entities as htmlentitydefs + raw_input = input + from itertools import filterfalse + filter = filter + +try: + from ssl import match_hostname, CertificateError +except ImportError: # pragma: no cover + class CertificateError(ValueError): + pass + + + def _dnsname_match(dn, hostname, max_wildcards=1): + """Matching according to RFC 6125, section 6.4.3 + + http://tools.ietf.org/html/rfc6125#section-6.4.3 + """ + pats = [] + if not dn: + return False + + parts = dn.split('.') + leftmost, remainder = parts[0], parts[1:] + + wildcards = leftmost.count('*') + if wildcards > max_wildcards: + # Issue #17980: avoid denials of service by refusing more + # than one wildcard per fragment. A survey of established + # policy among SSL implementations showed it to be a + # reasonable choice. + raise CertificateError( + "too many wildcards in certificate DNS name: " + repr(dn)) + + # speed up common case w/o wildcards + if not wildcards: + return dn.lower() == hostname.lower() + + # RFC 6125, section 6.4.3, subitem 1. + # The client SHOULD NOT attempt to match a presented identifier in which + # the wildcard character comprises a label other than the left-most label. + if leftmost == '*': + # When '*' is a fragment by itself, it matches a non-empty dotless + # fragment. + pats.append('[^.]+') + elif leftmost.startswith('xn--') or hostname.startswith('xn--'): + # RFC 6125, section 6.4.3, subitem 3. + # The client SHOULD NOT attempt to match a presented identifier + # where the wildcard character is embedded within an A-label or + # U-label of an internationalized domain name. + pats.append(re.escape(leftmost)) + else: + # Otherwise, '*' matches any dotless string, e.g. www* + pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) + + # add the remaining fragments, ignore any wildcards + for frag in remainder: + pats.append(re.escape(frag)) + + pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) + return pat.match(hostname) + + + def match_hostname(cert, hostname): + """Verify that *cert* (in decoded format as returned by + SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 + rules are followed, but IP addresses are not accepted for *hostname*. + + CertificateError is raised on failure. On success, the function + returns nothing. + """ + if not cert: + raise ValueError("empty or no certificate, match_hostname needs a " + "SSL socket or SSL context with either " + "CERT_OPTIONAL or CERT_REQUIRED") + dnsnames = [] + san = cert.get('subjectAltName', ()) + for key, value in san: + if key == 'DNS': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if not dnsnames: + # The subject is only checked when there is no dNSName entry + # in subjectAltName + for sub in cert.get('subject', ()): + for key, value in sub: + # XXX according to RFC 2818, the most specific Common Name + # must be used. + if key == 'commonName': + if _dnsname_match(value, hostname): + return + dnsnames.append(value) + if len(dnsnames) > 1: + raise CertificateError("hostname %r " + "doesn't match either of %s" + % (hostname, ', '.join(map(repr, dnsnames)))) + elif len(dnsnames) == 1: + raise CertificateError("hostname %r " + "doesn't match %r" + % (hostname, dnsnames[0])) + else: + raise CertificateError("no appropriate commonName or " + "subjectAltName fields were found") + + +try: + from types import SimpleNamespace as Container +except ImportError: # pragma: no cover + class Container(object): + """ + A generic container for when multiple values need to be returned + """ + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + +try: + from shutil import which +except ImportError: # pragma: no cover + # Implementation from Python 3.3 + def which(cmd, mode=os.F_OK | os.X_OK, path=None): + """Given a command, mode, and a PATH string, return the path which + conforms to the given mode on the PATH, or None if there is no such + file. + + `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result + of os.environ.get("PATH"), or can be overridden with a custom search + path. + + """ + # Check that a given file can be accessed with the correct mode. + # Additionally check that `file` is not a directory, as on Windows + # directories pass the os.access check. + def _access_check(fn, mode): + return (os.path.exists(fn) and os.access(fn, mode) + and not os.path.isdir(fn)) + + # If we're given a path with a directory part, look it up directly rather + # than referring to PATH directories. This includes checking relative to the + # current directory, e.g. ./script + if os.path.dirname(cmd): + if _access_check(cmd, mode): + return cmd + return None + + if path is None: + path = os.environ.get("PATH", os.defpath) + if not path: + return None + path = path.split(os.pathsep) + + if sys.platform == "win32": + # The current directory takes precedence on Windows. + if not os.curdir in path: + path.insert(0, os.curdir) + + # PATHEXT is necessary to check on Windows. + pathext = os.environ.get("PATHEXT", "").split(os.pathsep) + # See if the given file matches any of the expected path extensions. + # This will allow us to short circuit when given "python.exe". + # If it does match, only test that one, otherwise we have to try + # others. + if any(cmd.lower().endswith(ext.lower()) for ext in pathext): + files = [cmd] + else: + files = [cmd + ext for ext in pathext] + else: + # On other platforms you don't have things like PATHEXT to tell you + # what file suffixes are executable, so just pass on cmd as-is. + files = [cmd] + + seen = set() + for dir in path: + normdir = os.path.normcase(dir) + if not normdir in seen: + seen.add(normdir) + for thefile in files: + name = os.path.join(dir, thefile) + if _access_check(name, mode): + return name + return None + + +# ZipFile is a context manager in 2.7, but not in 2.6 + +from zipfile import ZipFile as BaseZipFile + +if hasattr(BaseZipFile, '__enter__'): # pragma: no cover + ZipFile = BaseZipFile +else: # pragma: no cover + from zipfile import ZipExtFile as BaseZipExtFile + + class ZipExtFile(BaseZipExtFile): + def __init__(self, base): + self.__dict__.update(base.__dict__) + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + class ZipFile(BaseZipFile): + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.close() + # return None, so if an exception occurred, it will propagate + + def open(self, *args, **kwargs): + base = BaseZipFile.open(self, *args, **kwargs) + return ZipExtFile(base) + +try: + from platform import python_implementation +except ImportError: # pragma: no cover + def python_implementation(): + """Return a string identifying the Python implementation.""" + if 'PyPy' in sys.version: + return 'PyPy' + if os.name == 'java': + return 'Jython' + if sys.version.startswith('IronPython'): + return 'IronPython' + return 'CPython' + +try: + import sysconfig +except ImportError: # pragma: no cover + from ._backport import sysconfig + +try: + callable = callable +except NameError: # pragma: no cover + from collections import Callable + + def callable(obj): + return isinstance(obj, Callable) + + +try: + fsencode = os.fsencode + fsdecode = os.fsdecode +except AttributeError: # pragma: no cover + # Issue #99: on some systems (e.g. containerised), + # sys.getfilesystemencoding() returns None, and we need a real value, + # so fall back to utf-8. From the CPython 2.7 docs relating to Unix and + # sys.getfilesystemencoding(): the return value is "the user’s preference + # according to the result of nl_langinfo(CODESET), or None if the + # nl_langinfo(CODESET) failed." + _fsencoding = sys.getfilesystemencoding() or 'utf-8' + if _fsencoding == 'mbcs': + _fserrors = 'strict' + else: + _fserrors = 'surrogateescape' + + def fsencode(filename): + if isinstance(filename, bytes): + return filename + elif isinstance(filename, text_type): + return filename.encode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + + def fsdecode(filename): + if isinstance(filename, text_type): + return filename + elif isinstance(filename, bytes): + return filename.decode(_fsencoding, _fserrors) + else: + raise TypeError("expect bytes or str, not %s" % + type(filename).__name__) + +try: + from tokenize import detect_encoding +except ImportError: # pragma: no cover + from codecs import BOM_UTF8, lookup + import re + + cookie_re = re.compile(r"coding[:=]\s*([-\w.]+)") + + def _get_normal_name(orig_enc): + """Imitates get_normal_name in tokenizer.c.""" + # Only care about the first 12 characters. + enc = orig_enc[:12].lower().replace("_", "-") + if enc == "utf-8" or enc.startswith("utf-8-"): + return "utf-8" + if enc in ("latin-1", "iso-8859-1", "iso-latin-1") or \ + enc.startswith(("latin-1-", "iso-8859-1-", "iso-latin-1-")): + return "iso-8859-1" + return orig_enc + + def detect_encoding(readline): + """ + The detect_encoding() function is used to detect the encoding that should + be used to decode a Python source file. It requires one argument, readline, + in the same way as the tokenize() generator. + + It will call readline a maximum of twice, and return the encoding used + (as a string) and a list of any lines (left as bytes) it has read in. + + It detects the encoding from the presence of a utf-8 bom or an encoding + cookie as specified in pep-0263. If both a bom and a cookie are present, + but disagree, a SyntaxError will be raised. If the encoding cookie is an + invalid charset, raise a SyntaxError. Note that if a utf-8 bom is found, + 'utf-8-sig' is returned. + + If no encoding is specified, then the default of 'utf-8' will be returned. + """ + try: + filename = readline.__self__.name + except AttributeError: + filename = None + bom_found = False + encoding = None + default = 'utf-8' + def read_or_stop(): + try: + return readline() + except StopIteration: + return b'' + + def find_cookie(line): + try: + # Decode as UTF-8. Either the line is an encoding declaration, + # in which case it should be pure ASCII, or it must be UTF-8 + # per default encoding. + line_string = line.decode('utf-8') + except UnicodeDecodeError: + msg = "invalid or missing encoding declaration" + if filename is not None: + msg = '{} for {!r}'.format(msg, filename) + raise SyntaxError(msg) + + matches = cookie_re.findall(line_string) + if not matches: + return None + encoding = _get_normal_name(matches[0]) + try: + codec = lookup(encoding) + except LookupError: + # This behaviour mimics the Python interpreter + if filename is None: + msg = "unknown encoding: " + encoding + else: + msg = "unknown encoding for {!r}: {}".format(filename, + encoding) + raise SyntaxError(msg) + + if bom_found: + if codec.name != 'utf-8': + # This behaviour mimics the Python interpreter + if filename is None: + msg = 'encoding problem: utf-8' + else: + msg = 'encoding problem for {!r}: utf-8'.format(filename) + raise SyntaxError(msg) + encoding += '-sig' + return encoding + + first = read_or_stop() + if first.startswith(BOM_UTF8): + bom_found = True + first = first[3:] + default = 'utf-8-sig' + if not first: + return default, [] + + encoding = find_cookie(first) + if encoding: + return encoding, [first] + + second = read_or_stop() + if not second: + return default, [first] + + encoding = find_cookie(second) + if encoding: + return encoding, [first, second] + + return default, [first, second] + +# For converting & <-> & etc. +try: + from html import escape +except ImportError: + from cgi import escape +if sys.version_info[:2] < (3, 4): + unescape = HTMLParser().unescape +else: + from html import unescape + +try: + from collections import ChainMap +except ImportError: # pragma: no cover + from collections import MutableMapping + + try: + from reprlib import recursive_repr as _recursive_repr + except ImportError: + def _recursive_repr(fillvalue='...'): + ''' + Decorator to make a repr function return fillvalue for a recursive + call + ''' + + def decorating_function(user_function): + repr_running = set() + + def wrapper(self): + key = id(self), get_ident() + if key in repr_running: + return fillvalue + repr_running.add(key) + try: + result = user_function(self) + finally: + repr_running.discard(key) + return result + + # Can't use functools.wraps() here because of bootstrap issues + wrapper.__module__ = getattr(user_function, '__module__') + wrapper.__doc__ = getattr(user_function, '__doc__') + wrapper.__name__ = getattr(user_function, '__name__') + wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) + return wrapper + + return decorating_function + + class ChainMap(MutableMapping): + ''' A ChainMap groups multiple dicts (or other mappings) together + to create a single, updateable view. + + The underlying mappings are stored in a list. That list is public and can + accessed or updated using the *maps* attribute. There is no other state. + + Lookups search the underlying mappings successively until a key is found. + In contrast, writes, updates, and deletions only operate on the first + mapping. + + ''' + + def __init__(self, *maps): + '''Initialize a ChainMap by setting *maps* to the given mappings. + If no mappings are provided, a single empty dictionary is used. + + ''' + self.maps = list(maps) or [{}] # always at least one map + + def __missing__(self, key): + raise KeyError(key) + + def __getitem__(self, key): + for mapping in self.maps: + try: + return mapping[key] # can't use 'key in mapping' with defaultdict + except KeyError: + pass + return self.__missing__(key) # support subclasses that define __missing__ + + def get(self, key, default=None): + return self[key] if key in self else default + + def __len__(self): + return len(set().union(*self.maps)) # reuses stored hash values if possible + + def __iter__(self): + return iter(set().union(*self.maps)) + + def __contains__(self, key): + return any(key in m for m in self.maps) + + def __bool__(self): + return any(self.maps) + + @_recursive_repr() + def __repr__(self): + return '{0.__class__.__name__}({1})'.format( + self, ', '.join(map(repr, self.maps))) + + @classmethod + def fromkeys(cls, iterable, *args): + 'Create a ChainMap with a single dict created from the iterable.' + return cls(dict.fromkeys(iterable, *args)) + + def copy(self): + 'New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]' + return self.__class__(self.maps[0].copy(), *self.maps[1:]) + + __copy__ = copy + + def new_child(self): # like Django's Context.push() + 'New ChainMap with a new dict followed by all previous maps.' + return self.__class__({}, *self.maps) + + @property + def parents(self): # like Django's Context.pop() + 'New ChainMap from maps[1:].' + return self.__class__(*self.maps[1:]) + + def __setitem__(self, key, value): + self.maps[0][key] = value + + def __delitem__(self, key): + try: + del self.maps[0][key] + except KeyError: + raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + + def popitem(self): + 'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.' + try: + return self.maps[0].popitem() + except KeyError: + raise KeyError('No keys found in the first mapping.') + + def pop(self, key, *args): + 'Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].' + try: + return self.maps[0].pop(key, *args) + except KeyError: + raise KeyError('Key not found in the first mapping: {!r}'.format(key)) + + def clear(self): + 'Clear maps[0], leaving maps[1:] intact.' + self.maps[0].clear() + +try: + from importlib.util import cache_from_source # Python >= 3.4 +except ImportError: # pragma: no cover + try: + from imp import cache_from_source + except ImportError: # pragma: no cover + def cache_from_source(path, debug_override=None): + assert path.endswith('.py') + if debug_override is None: + debug_override = __debug__ + if debug_override: + suffix = 'c' + else: + suffix = 'o' + return path + suffix + +try: + from collections import OrderedDict +except ImportError: # pragma: no cover +## {{{ http://code.activestate.com/recipes/576693/ (r9) +# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy. +# Passes Python2.7's test suite and incorporates all the latest updates. + try: + from thread import get_ident as _get_ident + except ImportError: + from dummy_thread import get_ident as _get_ident + + try: + from _abcoll import KeysView, ValuesView, ItemsView + except ImportError: + pass + + + class OrderedDict(dict): + 'Dictionary that remembers insertion order' + # An inherited dict maps keys to values. + # The inherited dict provides __getitem__, __len__, __contains__, and get. + # The remaining methods are order-aware. + # Big-O running times for all methods are the same as for regular dictionaries. + + # The internal self.__map dictionary maps keys to links in a doubly linked list. + # The circular doubly linked list starts and ends with a sentinel element. + # The sentinel element never gets deleted (this simplifies the algorithm). + # Each link is stored as a list of length three: [PREV, NEXT, KEY]. + + def __init__(self, *args, **kwds): + '''Initialize an ordered dictionary. Signature is the same as for + regular dictionaries, but keyword arguments are not recommended + because their insertion order is arbitrary. + + ''' + if len(args) > 1: + raise TypeError('expected at most 1 arguments, got %d' % len(args)) + try: + self.__root + except AttributeError: + self.__root = root = [] # sentinel node + root[:] = [root, root, None] + self.__map = {} + self.__update(*args, **kwds) + + def __setitem__(self, key, value, dict_setitem=dict.__setitem__): + 'od.__setitem__(i, y) <==> od[i]=y' + # Setting a new item creates a new link which goes at the end of the linked + # list, and the inherited dictionary is updated with the new key/value pair. + if key not in self: + root = self.__root + last = root[0] + last[1] = root[0] = self.__map[key] = [last, root, key] + dict_setitem(self, key, value) + + def __delitem__(self, key, dict_delitem=dict.__delitem__): + 'od.__delitem__(y) <==> del od[y]' + # Deleting an existing item uses self.__map to find the link which is + # then removed by updating the links in the predecessor and successor nodes. + dict_delitem(self, key) + link_prev, link_next, key = self.__map.pop(key) + link_prev[1] = link_next + link_next[0] = link_prev + + def __iter__(self): + 'od.__iter__() <==> iter(od)' + root = self.__root + curr = root[1] + while curr is not root: + yield curr[2] + curr = curr[1] + + def __reversed__(self): + 'od.__reversed__() <==> reversed(od)' + root = self.__root + curr = root[0] + while curr is not root: + yield curr[2] + curr = curr[0] + + def clear(self): + 'od.clear() -> None. Remove all items from od.' + try: + for node in self.__map.itervalues(): + del node[:] + root = self.__root + root[:] = [root, root, None] + self.__map.clear() + except AttributeError: + pass + dict.clear(self) + + def popitem(self, last=True): + '''od.popitem() -> (k, v), return and remove a (key, value) pair. + Pairs are returned in LIFO order if last is true or FIFO order if false. + + ''' + if not self: + raise KeyError('dictionary is empty') + root = self.__root + if last: + link = root[0] + link_prev = link[0] + link_prev[1] = root + root[0] = link_prev + else: + link = root[1] + link_next = link[1] + root[1] = link_next + link_next[0] = root + key = link[2] + del self.__map[key] + value = dict.pop(self, key) + return key, value + + # -- the following methods do not depend on the internal structure -- + + def keys(self): + 'od.keys() -> list of keys in od' + return list(self) + + def values(self): + 'od.values() -> list of values in od' + return [self[key] for key in self] + + def items(self): + 'od.items() -> list of (key, value) pairs in od' + return [(key, self[key]) for key in self] + + def iterkeys(self): + 'od.iterkeys() -> an iterator over the keys in od' + return iter(self) + + def itervalues(self): + 'od.itervalues -> an iterator over the values in od' + for k in self: + yield self[k] + + def iteritems(self): + 'od.iteritems -> an iterator over the (key, value) items in od' + for k in self: + yield (k, self[k]) + + def update(*args, **kwds): + '''od.update(E, **F) -> None. Update od from dict/iterable E and F. + + If E is a dict instance, does: for k in E: od[k] = E[k] + If E has a .keys() method, does: for k in E.keys(): od[k] = E[k] + Or if E is an iterable of items, does: for k, v in E: od[k] = v + In either case, this is followed by: for k, v in F.items(): od[k] = v + + ''' + if len(args) > 2: + raise TypeError('update() takes at most 2 positional ' + 'arguments (%d given)' % (len(args),)) + elif not args: + raise TypeError('update() takes at least 1 argument (0 given)') + self = args[0] + # Make progressively weaker assumptions about "other" + other = () + if len(args) == 2: + other = args[1] + if isinstance(other, dict): + for key in other: + self[key] = other[key] + elif hasattr(other, 'keys'): + for key in other.keys(): + self[key] = other[key] + else: + for key, value in other: + self[key] = value + for key, value in kwds.items(): + self[key] = value + + __update = update # let subclasses override update without breaking __init__ + + __marker = object() + + def pop(self, key, default=__marker): + '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. + If key is not found, d is returned if given, otherwise KeyError is raised. + + ''' + if key in self: + result = self[key] + del self[key] + return result + if default is self.__marker: + raise KeyError(key) + return default + + def setdefault(self, key, default=None): + 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' + if key in self: + return self[key] + self[key] = default + return default + + def __repr__(self, _repr_running=None): + 'od.__repr__() <==> repr(od)' + if not _repr_running: _repr_running = {} + call_key = id(self), _get_ident() + if call_key in _repr_running: + return '...' + _repr_running[call_key] = 1 + try: + if not self: + return '%s()' % (self.__class__.__name__,) + return '%s(%r)' % (self.__class__.__name__, self.items()) + finally: + del _repr_running[call_key] + + def __reduce__(self): + 'Return state information for pickling' + items = [[k, self[k]] for k in self] + inst_dict = vars(self).copy() + for k in vars(OrderedDict()): + inst_dict.pop(k, None) + if inst_dict: + return (self.__class__, (items,), inst_dict) + return self.__class__, (items,) + + def copy(self): + 'od.copy() -> a shallow copy of od' + return self.__class__(self) + + @classmethod + def fromkeys(cls, iterable, value=None): + '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S + and values equal to v (which defaults to None). + + ''' + d = cls() + for key in iterable: + d[key] = value + return d + + def __eq__(self, other): + '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive + while comparison to a regular mapping is order-insensitive. + + ''' + if isinstance(other, OrderedDict): + return len(self)==len(other) and self.items() == other.items() + return dict.__eq__(self, other) + + def __ne__(self, other): + return not self == other + + # -- the following methods are only used in Python 2.7 -- + + def viewkeys(self): + "od.viewkeys() -> a set-like object providing a view on od's keys" + return KeysView(self) + + def viewvalues(self): + "od.viewvalues() -> an object providing a view on od's values" + return ValuesView(self) + + def viewitems(self): + "od.viewitems() -> a set-like object providing a view on od's items" + return ItemsView(self) + +try: + from logging.config import BaseConfigurator, valid_ident +except ImportError: # pragma: no cover + IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I) + + + def valid_ident(s): + m = IDENTIFIER.match(s) + if not m: + raise ValueError('Not a valid Python identifier: %r' % s) + return True + + + # The ConvertingXXX classes are wrappers around standard Python containers, + # and they serve to convert any suitable values in the container. The + # conversion converts base dicts, lists and tuples to their wrapped + # equivalents, whereas strings which match a conversion format are converted + # appropriately. + # + # Each wrapper should have a configurator attribute holding the actual + # configurator to use for conversion. + + class ConvertingDict(dict): + """A converting dictionary wrapper.""" + + def __getitem__(self, key): + value = dict.__getitem__(self, key) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def get(self, key, default=None): + value = dict.get(self, key, default) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def pop(self, key, default=None): + value = dict.pop(self, key, default) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + class ConvertingList(list): + """A converting list wrapper.""" + def __getitem__(self, key): + value = list.__getitem__(self, key) + result = self.configurator.convert(value) + #If the converted value is different, save for next time + if value is not result: + self[key] = result + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + def pop(self, idx=-1): + value = list.pop(self, idx) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + return result + + class ConvertingTuple(tuple): + """A converting tuple wrapper.""" + def __getitem__(self, key): + value = tuple.__getitem__(self, key) + result = self.configurator.convert(value) + if value is not result: + if type(result) in (ConvertingDict, ConvertingList, + ConvertingTuple): + result.parent = self + result.key = key + return result + + class BaseConfigurator(object): + """ + The configurator base class which defines some useful defaults. + """ + + CONVERT_PATTERN = re.compile(r'^(?P[a-z]+)://(?P.*)$') + + WORD_PATTERN = re.compile(r'^\s*(\w+)\s*') + DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*') + INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*') + DIGIT_PATTERN = re.compile(r'^\d+$') + + value_converters = { + 'ext' : 'ext_convert', + 'cfg' : 'cfg_convert', + } + + # We might want to use a different one, e.g. importlib + importer = staticmethod(__import__) + + def __init__(self, config): + self.config = ConvertingDict(config) + self.config.configurator = self + + def resolve(self, s): + """ + Resolve strings to objects using standard import and attribute + syntax. + """ + name = s.split('.') + used = name.pop(0) + try: + found = self.importer(used) + for frag in name: + used += '.' + frag + try: + found = getattr(found, frag) + except AttributeError: + self.importer(used) + found = getattr(found, frag) + return found + except ImportError: + e, tb = sys.exc_info()[1:] + v = ValueError('Cannot resolve %r: %s' % (s, e)) + v.__cause__, v.__traceback__ = e, tb + raise v + + def ext_convert(self, value): + """Default converter for the ext:// protocol.""" + return self.resolve(value) + + def cfg_convert(self, value): + """Default converter for the cfg:// protocol.""" + rest = value + m = self.WORD_PATTERN.match(rest) + if m is None: + raise ValueError("Unable to convert %r" % value) + else: + rest = rest[m.end():] + d = self.config[m.groups()[0]] + #print d, rest + while rest: + m = self.DOT_PATTERN.match(rest) + if m: + d = d[m.groups()[0]] + else: + m = self.INDEX_PATTERN.match(rest) + if m: + idx = m.groups()[0] + if not self.DIGIT_PATTERN.match(idx): + d = d[idx] + else: + try: + n = int(idx) # try as number first (most likely) + d = d[n] + except TypeError: + d = d[idx] + if m: + rest = rest[m.end():] + else: + raise ValueError('Unable to convert ' + '%r at %r' % (value, rest)) + #rest should be empty + return d + + def convert(self, value): + """ + Convert values to an appropriate type. dicts, lists and tuples are + replaced by their converting alternatives. Strings are checked to + see if they have a conversion format and are converted if they do. + """ + if not isinstance(value, ConvertingDict) and isinstance(value, dict): + value = ConvertingDict(value) + value.configurator = self + elif not isinstance(value, ConvertingList) and isinstance(value, list): + value = ConvertingList(value) + value.configurator = self + elif not isinstance(value, ConvertingTuple) and\ + isinstance(value, tuple): + value = ConvertingTuple(value) + value.configurator = self + elif isinstance(value, string_types): + m = self.CONVERT_PATTERN.match(value) + if m: + d = m.groupdict() + prefix = d['prefix'] + converter = self.value_converters.get(prefix, None) + if converter: + suffix = d['suffix'] + converter = getattr(self, converter) + value = converter(suffix) + return value + + def configure_custom(self, config): + """Configure an object with a user-supplied factory.""" + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + kwargs = dict([(k, config[k]) for k in config if valid_ident(k)]) + result = c(**kwargs) + if props: + for name, value in props.items(): + setattr(result, name, value) + return result + + def as_tuple(self, value): + """Utility function which converts lists to tuples.""" + if isinstance(value, list): + value = tuple(value) + return value diff --git a/Lib/site-packages/pip/_vendor/distlib/database.py b/Lib/site-packages/pip/_vendor/distlib/database.py new file mode 100644 index 0000000..c16c0c8 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/database.py @@ -0,0 +1,1339 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2017 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""PEP 376 implementation.""" + +from __future__ import unicode_literals + +import base64 +import codecs +import contextlib +import hashlib +import logging +import os +import posixpath +import sys +import zipimport + +from . import DistlibException, resources +from .compat import StringIO +from .version import get_scheme, UnsupportedVersionError +from .metadata import (Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME) +from .util import (parse_requirement, cached_property, parse_name_and_version, + read_exports, write_exports, CSVReader, CSVWriter) + + +__all__ = ['Distribution', 'BaseInstalledDistribution', + 'InstalledDistribution', 'EggInfoDistribution', + 'DistributionPath'] + + +logger = logging.getLogger(__name__) + +EXPORTS_FILENAME = 'pydist-exports.json' +COMMANDS_FILENAME = 'pydist-commands.json' + +DIST_FILES = ('INSTALLER', METADATA_FILENAME, 'RECORD', 'REQUESTED', + 'RESOURCES', EXPORTS_FILENAME, 'SHARED') + +DISTINFO_EXT = '.dist-info' + + +class _Cache(object): + """ + A simple cache mapping names and .dist-info paths to distributions + """ + def __init__(self): + """ + Initialise an instance. There is normally one for each DistributionPath. + """ + self.name = {} + self.path = {} + self.generated = False + + def clear(self): + """ + Clear the cache, setting it to its initial state. + """ + self.name.clear() + self.path.clear() + self.generated = False + + def add(self, dist): + """ + Add a distribution to the cache. + :param dist: The distribution to add. + """ + if dist.path not in self.path: + self.path[dist.path] = dist + self.name.setdefault(dist.key, []).append(dist) + + +class DistributionPath(object): + """ + Represents a set of distributions installed on a path (typically sys.path). + """ + def __init__(self, path=None, include_egg=False): + """ + Create an instance from a path, optionally including legacy (distutils/ + setuptools/distribute) distributions. + :param path: The path to use, as a list of directories. If not specified, + sys.path is used. + :param include_egg: If True, this instance will look for and return legacy + distributions as well as those based on PEP 376. + """ + if path is None: + path = sys.path + self.path = path + self._include_dist = True + self._include_egg = include_egg + + self._cache = _Cache() + self._cache_egg = _Cache() + self._cache_enabled = True + self._scheme = get_scheme('default') + + def _get_cache_enabled(self): + return self._cache_enabled + + def _set_cache_enabled(self, value): + self._cache_enabled = value + + cache_enabled = property(_get_cache_enabled, _set_cache_enabled) + + def clear_cache(self): + """ + Clears the internal cache. + """ + self._cache.clear() + self._cache_egg.clear() + + + def _yield_distributions(self): + """ + Yield .dist-info and/or .egg(-info) distributions. + """ + # We need to check if we've seen some resources already, because on + # some Linux systems (e.g. some Debian/Ubuntu variants) there are + # symlinks which alias other files in the environment. + seen = set() + for path in self.path: + finder = resources.finder_for_path(path) + if finder is None: + continue + r = finder.find('') + if not r or not r.is_container: + continue + rset = sorted(r.resources) + for entry in rset: + r = finder.find(entry) + if not r or r.path in seen: + continue + if self._include_dist and entry.endswith(DISTINFO_EXT): + possible_filenames = [METADATA_FILENAME, + WHEEL_METADATA_FILENAME, + LEGACY_METADATA_FILENAME] + for metadata_filename in possible_filenames: + metadata_path = posixpath.join(entry, metadata_filename) + pydist = finder.find(metadata_path) + if pydist: + break + else: + continue + + with contextlib.closing(pydist.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + logger.debug('Found %s', r.path) + seen.add(r.path) + yield new_dist_class(r.path, metadata=metadata, + env=self) + elif self._include_egg and entry.endswith(('.egg-info', + '.egg')): + logger.debug('Found %s', r.path) + seen.add(r.path) + yield old_dist_class(r.path, self) + + def _generate_cache(self): + """ + Scan the path for distributions and populate the cache with + those that are found. + """ + gen_dist = not self._cache.generated + gen_egg = self._include_egg and not self._cache_egg.generated + if gen_dist or gen_egg: + for dist in self._yield_distributions(): + if isinstance(dist, InstalledDistribution): + self._cache.add(dist) + else: + self._cache_egg.add(dist) + + if gen_dist: + self._cache.generated = True + if gen_egg: + self._cache_egg.generated = True + + @classmethod + def distinfo_dirname(cls, name, version): + """ + The *name* and *version* parameters are converted into their + filename-escaped form, i.e. any ``'-'`` characters are replaced + with ``'_'`` other than the one in ``'dist-info'`` and the one + separating the name from the version number. + + :parameter name: is converted to a standard distribution name by replacing + any runs of non- alphanumeric characters with a single + ``'-'``. + :type name: string + :parameter version: is converted to a standard version string. Spaces + become dots, and all other non-alphanumeric characters + (except dots) become dashes, with runs of multiple + dashes condensed to a single dash. + :type version: string + :returns: directory name + :rtype: string""" + name = name.replace('-', '_') + return '-'.join([name, version]) + DISTINFO_EXT + + def get_distributions(self): + """ + Provides an iterator that looks for distributions and returns + :class:`InstalledDistribution` or + :class:`EggInfoDistribution` instances for each one of them. + + :rtype: iterator of :class:`InstalledDistribution` and + :class:`EggInfoDistribution` instances + """ + if not self._cache_enabled: + for dist in self._yield_distributions(): + yield dist + else: + self._generate_cache() + + for dist in self._cache.path.values(): + yield dist + + if self._include_egg: + for dist in self._cache_egg.path.values(): + yield dist + + def get_distribution(self, name): + """ + Looks for a named distribution on the path. + + This function only returns the first result found, as no more than one + value is expected. If nothing is found, ``None`` is returned. + + :rtype: :class:`InstalledDistribution`, :class:`EggInfoDistribution` + or ``None`` + """ + result = None + name = name.lower() + if not self._cache_enabled: + for dist in self._yield_distributions(): + if dist.key == name: + result = dist + break + else: + self._generate_cache() + + if name in self._cache.name: + result = self._cache.name[name][0] + elif self._include_egg and name in self._cache_egg.name: + result = self._cache_egg.name[name][0] + return result + + def provides_distribution(self, name, version=None): + """ + Iterates over all distributions to find which distributions provide *name*. + If a *version* is provided, it will be used to filter the results. + + This function only returns the first result found, since no more than + one values are expected. If the directory is not found, returns ``None``. + + :parameter version: a version specifier that indicates the version + required, conforming to the format in ``PEP-345`` + + :type name: string + :type version: string + """ + matcher = None + if version is not None: + try: + matcher = self._scheme.matcher('%s (%s)' % (name, version)) + except ValueError: + raise DistlibException('invalid name or version: %r, %r' % + (name, version)) + + for dist in self.get_distributions(): + # We hit a problem on Travis where enum34 was installed and doesn't + # have a provides attribute ... + if not hasattr(dist, 'provides'): + logger.debug('No "provides": %s', dist) + else: + provided = dist.provides + + for p in provided: + p_name, p_ver = parse_name_and_version(p) + if matcher is None: + if p_name == name: + yield dist + break + else: + if p_name == name and matcher.match(p_ver): + yield dist + break + + def get_file_path(self, name, relative_path): + """ + Return the path to a resource file. + """ + dist = self.get_distribution(name) + if dist is None: + raise LookupError('no distribution named %r found' % name) + return dist.get_resource_path(relative_path) + + def get_exported_entries(self, category, name=None): + """ + Return all of the exported entries in a particular category. + + :param category: The category to search for entries. + :param name: If specified, only entries with that name are returned. + """ + for dist in self.get_distributions(): + r = dist.exports + if category in r: + d = r[category] + if name is not None: + if name in d: + yield d[name] + else: + for v in d.values(): + yield v + + +class Distribution(object): + """ + A base class for distributions, whether installed or from indexes. + Either way, it must have some metadata, so that's all that's needed + for construction. + """ + + build_time_dependency = False + """ + Set to True if it's known to be only a build-time dependency (i.e. + not needed after installation). + """ + + requested = False + """A boolean that indicates whether the ``REQUESTED`` metadata file is + present (in other words, whether the package was installed by user + request or it was installed as a dependency).""" + + def __init__(self, metadata): + """ + Initialise an instance. + :param metadata: The instance of :class:`Metadata` describing this + distribution. + """ + self.metadata = metadata + self.name = metadata.name + self.key = self.name.lower() # for case-insensitive comparisons + self.version = metadata.version + self.locator = None + self.digest = None + self.extras = None # additional features requested + self.context = None # environment marker overrides + self.download_urls = set() + self.digests = {} + + @property + def source_url(self): + """ + The source archive download URL for this distribution. + """ + return self.metadata.source_url + + download_url = source_url # Backward compatibility + + @property + def name_and_version(self): + """ + A utility property which displays the name and version in parentheses. + """ + return '%s (%s)' % (self.name, self.version) + + @property + def provides(self): + """ + A set of distribution names and versions provided by this distribution. + :return: A set of "name (version)" strings. + """ + plist = self.metadata.provides + s = '%s (%s)' % (self.name, self.version) + if s not in plist: + plist.append(s) + return plist + + def _get_requirements(self, req_attr): + md = self.metadata + logger.debug('Getting requirements from metadata %r', md.todict()) + reqts = getattr(md, req_attr) + return set(md.get_requirements(reqts, extras=self.extras, + env=self.context)) + + @property + def run_requires(self): + return self._get_requirements('run_requires') + + @property + def meta_requires(self): + return self._get_requirements('meta_requires') + + @property + def build_requires(self): + return self._get_requirements('build_requires') + + @property + def test_requires(self): + return self._get_requirements('test_requires') + + @property + def dev_requires(self): + return self._get_requirements('dev_requires') + + def matches_requirement(self, req): + """ + Say if this instance matches (fulfills) a requirement. + :param req: The requirement to match. + :rtype req: str + :return: True if it matches, else False. + """ + # Requirement may contain extras - parse to lose those + # from what's passed to the matcher + r = parse_requirement(req) + scheme = get_scheme(self.metadata.scheme) + try: + matcher = scheme.matcher(r.requirement) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + result = False + for p in self.provides: + p_name, p_ver = parse_name_and_version(p) + if p_name != name: + continue + try: + result = matcher.match(p_ver) + break + except UnsupportedVersionError: + pass + return result + + def __repr__(self): + """ + Return a textual representation of this instance, + """ + if self.source_url: + suffix = ' [%s]' % self.source_url + else: + suffix = '' + return '' % (self.name, self.version, suffix) + + def __eq__(self, other): + """ + See if this distribution is the same as another. + :param other: The distribution to compare with. To be equal to one + another. distributions must have the same type, name, + version and source_url. + :return: True if it is the same, else False. + """ + if type(other) is not type(self): + result = False + else: + result = (self.name == other.name and + self.version == other.version and + self.source_url == other.source_url) + return result + + def __hash__(self): + """ + Compute hash in a way which matches the equality test. + """ + return hash(self.name) + hash(self.version) + hash(self.source_url) + + +class BaseInstalledDistribution(Distribution): + """ + This is the base class for installed distributions (whether PEP 376 or + legacy). + """ + + hasher = None + + def __init__(self, metadata, path, env=None): + """ + Initialise an instance. + :param metadata: An instance of :class:`Metadata` which describes the + distribution. This will normally have been initialised + from a metadata file in the ``path``. + :param path: The path of the ``.dist-info`` or ``.egg-info`` + directory for the distribution. + :param env: This is normally the :class:`DistributionPath` + instance where this distribution was found. + """ + super(BaseInstalledDistribution, self).__init__(metadata) + self.path = path + self.dist_path = env + + def get_hash(self, data, hasher=None): + """ + Get the hash of some data, using a particular hash algorithm, if + specified. + + :param data: The data to be hashed. + :type data: bytes + :param hasher: The name of a hash implementation, supported by hashlib, + or ``None``. Examples of valid values are ``'sha1'``, + ``'sha224'``, ``'sha384'``, '``sha256'``, ``'md5'`` and + ``'sha512'``. If no hasher is specified, the ``hasher`` + attribute of the :class:`InstalledDistribution` instance + is used. If the hasher is determined to be ``None``, MD5 + is used as the hashing algorithm. + :returns: The hash of the data. If a hasher was explicitly specified, + the returned hash will be prefixed with the specified hasher + followed by '='. + :rtype: str + """ + if hasher is None: + hasher = self.hasher + if hasher is None: + hasher = hashlib.md5 + prefix = '' + else: + hasher = getattr(hashlib, hasher) + prefix = '%s=' % self.hasher + digest = hasher(data).digest() + digest = base64.urlsafe_b64encode(digest).rstrip(b'=').decode('ascii') + return '%s%s' % (prefix, digest) + + +class InstalledDistribution(BaseInstalledDistribution): + """ + Created with the *path* of the ``.dist-info`` directory provided to the + constructor. It reads the metadata contained in ``pydist.json`` when it is + instantiated., or uses a passed in Metadata instance (useful for when + dry-run mode is being used). + """ + + hasher = 'sha256' + + def __init__(self, path, metadata=None, env=None): + self.modules = [] + self.finder = finder = resources.finder_for_path(path) + if finder is None: + raise ValueError('finder unavailable for %s' % path) + if env and env._cache_enabled and path in env._cache.path: + metadata = env._cache.path[path].metadata + elif metadata is None: + r = finder.find(METADATA_FILENAME) + # Temporary - for Wheel 0.23 support + if r is None: + r = finder.find(WHEEL_METADATA_FILENAME) + # Temporary - for legacy support + if r is None: + r = finder.find('METADATA') + if r is None: + raise ValueError('no %s found in %s' % (METADATA_FILENAME, + path)) + with contextlib.closing(r.as_stream()) as stream: + metadata = Metadata(fileobj=stream, scheme='legacy') + + super(InstalledDistribution, self).__init__(metadata, path, env) + + if env and env._cache_enabled: + env._cache.add(self) + + r = finder.find('REQUESTED') + self.requested = r is not None + p = os.path.join(path, 'top_level.txt') + if os.path.exists(p): + with open(p, 'rb') as f: + data = f.read().decode('utf-8') + self.modules = data.splitlines() + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def _get_records(self): + """ + Get the list of installed files for the distribution + :return: A list of tuples of path, hash and size. Note that hash and + size might be ``None`` for some entries. The path is exactly + as stored in the file (which is as in PEP 376). + """ + results = [] + r = self.get_distinfo_resource('RECORD') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as record_reader: + # Base location is parent dir of .dist-info dir + #base_location = os.path.dirname(self.path) + #base_location = os.path.abspath(base_location) + for row in record_reader: + missing = [None for i in range(len(row), 3)] + path, checksum, size = row + missing + #if not os.path.isabs(path): + # path = path.replace('/', os.sep) + # path = os.path.join(base_location, path) + results.append((path, checksum, size)) + return results + + @cached_property + def exports(self): + """ + Return the information exported by this distribution. + :return: A dictionary of exports, mapping an export category to a dict + of :class:`ExportEntry` instances describing the individual + export entries, and keyed by name. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + result = self.read_exports() + return result + + def read_exports(self): + """ + Read exports data from a file in .ini format. + + :return: A dictionary of exports, mapping an export category to a list + of :class:`ExportEntry` instances describing the individual + export entries. + """ + result = {} + r = self.get_distinfo_resource(EXPORTS_FILENAME) + if r: + with contextlib.closing(r.as_stream()) as stream: + result = read_exports(stream) + return result + + def write_exports(self, exports): + """ + Write a dictionary of exports to a file in .ini format. + :param exports: A dictionary of exports, mapping an export category to + a list of :class:`ExportEntry` instances describing the + individual export entries. + """ + rf = self.get_distinfo_file(EXPORTS_FILENAME) + with open(rf, 'w') as f: + write_exports(exports, f) + + def get_resource_path(self, relative_path): + """ + NOTE: This API may change in the future. + + Return the absolute path to a resource file with the given relative + path. + + :param relative_path: The path, relative to .dist-info, of the resource + of interest. + :return: The absolute path where the resource is to be found. + """ + r = self.get_distinfo_resource('RESOURCES') + with contextlib.closing(r.as_stream()) as stream: + with CSVReader(stream=stream) as resources_reader: + for relative, destination in resources_reader: + if relative == relative_path: + return destination + raise KeyError('no resource file with relative path %r ' + 'is installed' % relative_path) + + def list_installed_files(self): + """ + Iterates over the ``RECORD`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: iterator of (path, hash, size) + """ + for result in self._get_records(): + yield result + + def write_installed_files(self, paths, prefix, dry_run=False): + """ + Writes the ``RECORD`` file, using the ``paths`` iterable passed in. Any + existing ``RECORD`` file is silently overwritten. + + prefix is used to determine when to write absolute paths. + """ + prefix = os.path.join(prefix, '') + base = os.path.dirname(self.path) + base_under_prefix = base.startswith(prefix) + base = os.path.join(base, '') + record_path = self.get_distinfo_file('RECORD') + logger.info('creating %s', record_path) + if dry_run: + return None + with CSVWriter(record_path) as writer: + for path in paths: + if os.path.isdir(path) or path.endswith(('.pyc', '.pyo')): + # do not put size and hash, as in PEP-376 + hash_value = size = '' + else: + size = '%d' % os.path.getsize(path) + with open(path, 'rb') as fp: + hash_value = self.get_hash(fp.read()) + if path.startswith(base) or (base_under_prefix and + path.startswith(prefix)): + path = os.path.relpath(path, base) + writer.writerow((path, hash_value, size)) + + # add the RECORD file itself + if record_path.startswith(base): + record_path = os.path.relpath(record_path, base) + writer.writerow((record_path, '', '')) + return record_path + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + base = os.path.dirname(self.path) + record_path = self.get_distinfo_file('RECORD') + for path, hash_value, size in self.list_installed_files(): + if not os.path.isabs(path): + path = os.path.join(base, path) + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + elif os.path.isfile(path): + actual_size = str(os.path.getsize(path)) + if size and actual_size != size: + mismatches.append((path, 'size', size, actual_size)) + elif hash_value: + if '=' in hash_value: + hasher = hash_value.split('=', 1)[0] + else: + hasher = None + + with open(path, 'rb') as f: + actual_hash = self.get_hash(f.read(), hasher) + if actual_hash != hash_value: + mismatches.append((path, 'hash', hash_value, actual_hash)) + return mismatches + + @cached_property + def shared_locations(self): + """ + A dictionary of shared locations whose keys are in the set 'prefix', + 'purelib', 'platlib', 'scripts', 'headers', 'data' and 'namespace'. + The corresponding value is the absolute path of that category for + this distribution, and takes into account any paths selected by the + user at installation time (e.g. via command-line arguments). In the + case of the 'namespace' key, this would be a list of absolute paths + for the roots of namespace packages in this distribution. + + The first time this property is accessed, the relevant information is + read from the SHARED file in the .dist-info directory. + """ + result = {} + shared_path = os.path.join(self.path, 'SHARED') + if os.path.isfile(shared_path): + with codecs.open(shared_path, 'r', encoding='utf-8') as f: + lines = f.read().splitlines() + for line in lines: + key, value = line.split('=', 1) + if key == 'namespace': + result.setdefault(key, []).append(value) + else: + result[key] = value + return result + + def write_shared_locations(self, paths, dry_run=False): + """ + Write shared location information to the SHARED file in .dist-info. + :param paths: A dictionary as described in the documentation for + :meth:`shared_locations`. + :param dry_run: If True, the action is logged but no file is actually + written. + :return: The path of the file written to. + """ + shared_path = os.path.join(self.path, 'SHARED') + logger.info('creating %s', shared_path) + if dry_run: + return None + lines = [] + for key in ('prefix', 'lib', 'headers', 'scripts', 'data'): + path = paths[key] + if os.path.isdir(paths[key]): + lines.append('%s=%s' % (key, path)) + for ns in paths.get('namespace', ()): + lines.append('namespace=%s' % ns) + + with codecs.open(shared_path, 'w', encoding='utf-8') as f: + f.write('\n'.join(lines)) + return shared_path + + def get_distinfo_resource(self, path): + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + finder = resources.finder_for_path(self.path) + if finder is None: + raise DistlibException('Unable to get a finder for %s' % self.path) + return finder.find(path) + + def get_distinfo_file(self, path): + """ + Returns a path located under the ``.dist-info`` directory. Returns a + string representing the path. + + :parameter path: a ``'/'``-separated path relative to the + ``.dist-info`` directory or an absolute path; + If *path* is an absolute path and doesn't start + with the ``.dist-info`` directory path, + a :class:`DistlibException` is raised + :type path: str + :rtype: str + """ + # Check if it is an absolute path # XXX use relpath, add tests + if path.find(os.sep) >= 0: + # it's an absolute path? + distinfo_dirname, path = path.split(os.sep)[-2:] + if distinfo_dirname != self.path.split(os.sep)[-1]: + raise DistlibException( + 'dist-info file %r does not belong to the %r %s ' + 'distribution' % (path, self.name, self.version)) + + # The file must be relative + if path not in DIST_FILES: + raise DistlibException('invalid path for a dist-info file: ' + '%r at %r' % (path, self.path)) + + return os.path.join(self.path, path) + + def list_distinfo_files(self): + """ + Iterates over the ``RECORD`` entries and returns paths for each line if + the path is pointing to a file located in the ``.dist-info`` directory + or one of its subdirectories. + + :returns: iterator of paths + """ + base = os.path.dirname(self.path) + for path, checksum, size in self._get_records(): + # XXX add separator or use real relpath algo + if not os.path.isabs(path): + path = os.path.join(base, path) + if path.startswith(self.path): + yield path + + def __eq__(self, other): + return (isinstance(other, InstalledDistribution) and + self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + + +class EggInfoDistribution(BaseInstalledDistribution): + """Created with the *path* of the ``.egg-info`` directory or file provided + to the constructor. It reads the metadata contained in the file itself, or + if the given path happens to be a directory, the metadata is read from the + file ``PKG-INFO`` under that directory.""" + + requested = True # as we have no way of knowing, assume it was + shared_locations = {} + + def __init__(self, path, env=None): + def set_name_and_version(s, n, v): + s.name = n + s.key = n.lower() # for case-insensitive comparisons + s.version = v + + self.path = path + self.dist_path = env + if env and env._cache_enabled and path in env._cache_egg.path: + metadata = env._cache_egg.path[path].metadata + set_name_and_version(self, metadata.name, metadata.version) + else: + metadata = self._get_metadata(path) + + # Need to be set before caching + set_name_and_version(self, metadata.name, metadata.version) + + if env and env._cache_enabled: + env._cache_egg.add(self) + super(EggInfoDistribution, self).__init__(metadata, path, env) + + def _get_metadata(self, path): + requires = None + + def parse_requires_data(data): + """Create a list of dependencies from a requires.txt file. + + *data*: the contents of a setuptools-produced requires.txt file. + """ + reqs = [] + lines = data.splitlines() + for line in lines: + line = line.strip() + if line.startswith('['): + logger.warning('Unexpected line: quitting requirement scan: %r', + line) + break + r = parse_requirement(line) + if not r: + logger.warning('Not recognised as a requirement: %r', line) + continue + if r.extras: + logger.warning('extra requirements in requires.txt are ' + 'not supported') + if not r.constraints: + reqs.append(r.name) + else: + cons = ', '.join('%s%s' % c for c in r.constraints) + reqs.append('%s (%s)' % (r.name, cons)) + return reqs + + def parse_requires_path(req_path): + """Create a list of dependencies from a requires.txt file. + + *req_path*: the path to a setuptools-produced requires.txt file. + """ + + reqs = [] + try: + with codecs.open(req_path, 'r', 'utf-8') as fp: + reqs = parse_requires_data(fp.read()) + except IOError: + pass + return reqs + + tl_path = tl_data = None + if path.endswith('.egg'): + if os.path.isdir(path): + p = os.path.join(path, 'EGG-INFO') + meta_path = os.path.join(p, 'PKG-INFO') + metadata = Metadata(path=meta_path, scheme='legacy') + req_path = os.path.join(p, 'requires.txt') + tl_path = os.path.join(p, 'top_level.txt') + requires = parse_requires_path(req_path) + else: + # FIXME handle the case where zipfile is not available + zipf = zipimport.zipimporter(path) + fileobj = StringIO( + zipf.get_data('EGG-INFO/PKG-INFO').decode('utf8')) + metadata = Metadata(fileobj=fileobj, scheme='legacy') + try: + data = zipf.get_data('EGG-INFO/requires.txt') + tl_data = zipf.get_data('EGG-INFO/top_level.txt').decode('utf-8') + requires = parse_requires_data(data.decode('utf-8')) + except IOError: + requires = None + elif path.endswith('.egg-info'): + if os.path.isdir(path): + req_path = os.path.join(path, 'requires.txt') + requires = parse_requires_path(req_path) + path = os.path.join(path, 'PKG-INFO') + tl_path = os.path.join(path, 'top_level.txt') + metadata = Metadata(path=path, scheme='legacy') + else: + raise DistlibException('path must end with .egg-info or .egg, ' + 'got %r' % path) + + if requires: + metadata.add_requirements(requires) + # look for top-level modules in top_level.txt, if present + if tl_data is None: + if tl_path is not None and os.path.exists(tl_path): + with open(tl_path, 'rb') as f: + tl_data = f.read().decode('utf-8') + if not tl_data: + tl_data = [] + else: + tl_data = tl_data.splitlines() + self.modules = tl_data + return metadata + + def __repr__(self): + return '' % ( + self.name, self.version, self.path) + + def __str__(self): + return "%s %s" % (self.name, self.version) + + def check_installed_files(self): + """ + Checks that the hashes and sizes of the files in ``RECORD`` are + matched by the files themselves. Returns a (possibly empty) list of + mismatches. Each entry in the mismatch list will be a tuple consisting + of the path, 'exists', 'size' or 'hash' according to what didn't match + (existence is checked first, then size, then hash), the expected + value and the actual value. + """ + mismatches = [] + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + for path, _, _ in self.list_installed_files(): + if path == record_path: + continue + if not os.path.exists(path): + mismatches.append((path, 'exists', True, False)) + return mismatches + + def list_installed_files(self): + """ + Iterates over the ``installed-files.txt`` entries and returns a tuple + ``(path, hash, size)`` for each line. + + :returns: a list of (path, hash, size) + """ + + def _md5(path): + f = open(path, 'rb') + try: + content = f.read() + finally: + f.close() + return hashlib.md5(content).hexdigest() + + def _size(path): + return os.stat(path).st_size + + record_path = os.path.join(self.path, 'installed-files.txt') + result = [] + if os.path.exists(record_path): + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + p = os.path.normpath(os.path.join(self.path, line)) + # "./" is present as a marker between installed files + # and installation metadata files + if not os.path.exists(p): + logger.warning('Non-existent file: %s', p) + if p.endswith(('.pyc', '.pyo')): + continue + #otherwise fall through and fail + if not os.path.isdir(p): + result.append((p, _md5(p), _size(p))) + result.append((record_path, None, None)) + return result + + def list_distinfo_files(self, absolute=False): + """ + Iterates over the ``installed-files.txt`` entries and returns paths for + each line if the path is pointing to a file located in the + ``.egg-info`` directory or one of its subdirectories. + + :parameter absolute: If *absolute* is ``True``, each returned path is + transformed into a local absolute path. Otherwise the + raw value from ``installed-files.txt`` is returned. + :type absolute: boolean + :returns: iterator of paths + """ + record_path = os.path.join(self.path, 'installed-files.txt') + if os.path.exists(record_path): + skip = True + with codecs.open(record_path, 'r', encoding='utf-8') as f: + for line in f: + line = line.strip() + if line == './': + skip = False + continue + if not skip: + p = os.path.normpath(os.path.join(self.path, line)) + if p.startswith(self.path): + if absolute: + yield p + else: + yield line + + def __eq__(self, other): + return (isinstance(other, EggInfoDistribution) and + self.path == other.path) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + __hash__ = object.__hash__ + +new_dist_class = InstalledDistribution +old_dist_class = EggInfoDistribution + + +class DependencyGraph(object): + """ + Represents a dependency graph between distributions. + + The dependency relationships are stored in an ``adjacency_list`` that maps + distributions to a list of ``(other, label)`` tuples where ``other`` + is a distribution and the edge is labeled with ``label`` (i.e. the version + specifier, if such was provided). Also, for more efficient traversal, for + every distribution ``x``, a list of predecessors is kept in + ``reverse_list[x]``. An edge from distribution ``a`` to + distribution ``b`` means that ``a`` depends on ``b``. If any missing + dependencies are found, they are stored in ``missing``, which is a + dictionary that maps distributions to a list of requirements that were not + provided by any other distributions. + """ + + def __init__(self): + self.adjacency_list = {} + self.reverse_list = {} + self.missing = {} + + def add_distribution(self, distribution): + """Add the *distribution* to the graph. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + """ + self.adjacency_list[distribution] = [] + self.reverse_list[distribution] = [] + #self.missing[distribution] = [] + + def add_edge(self, x, y, label=None): + """Add an edge from distribution *x* to distribution *y* with the given + *label*. + + :type x: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type y: :class:`distutils2.database.InstalledDistribution` or + :class:`distutils2.database.EggInfoDistribution` + :type label: ``str`` or ``None`` + """ + self.adjacency_list[x].append((y, label)) + # multiple edges are allowed, so be careful + if x not in self.reverse_list[y]: + self.reverse_list[y].append(x) + + def add_missing(self, distribution, requirement): + """ + Add a missing *requirement* for the given *distribution*. + + :type distribution: :class:`distutils2.database.InstalledDistribution` + or :class:`distutils2.database.EggInfoDistribution` + :type requirement: ``str`` + """ + logger.debug('%s missing %r', distribution, requirement) + self.missing.setdefault(distribution, []).append(requirement) + + def _repr_dist(self, dist): + return '%s %s' % (dist.name, dist.version) + + def repr_node(self, dist, level=1): + """Prints only a subgraph""" + output = [self._repr_dist(dist)] + for other, label in self.adjacency_list[dist]: + dist = self._repr_dist(other) + if label is not None: + dist = '%s [%s]' % (dist, label) + output.append(' ' * level + str(dist)) + suboutput = self.repr_node(other, level + 1) + subs = suboutput.split('\n') + output.extend(subs[1:]) + return '\n'.join(output) + + def to_dot(self, f, skip_disconnected=True): + """Writes a DOT output for the graph to the provided file *f*. + + If *skip_disconnected* is set to ``True``, then all distributions + that are not dependent on any other distribution are skipped. + + :type f: has to support ``file``-like operations + :type skip_disconnected: ``bool`` + """ + disconnected = [] + + f.write("digraph dependencies {\n") + for dist, adjs in self.adjacency_list.items(): + if len(adjs) == 0 and not skip_disconnected: + disconnected.append(dist) + for other, label in adjs: + if not label is None: + f.write('"%s" -> "%s" [label="%s"]\n' % + (dist.name, other.name, label)) + else: + f.write('"%s" -> "%s"\n' % (dist.name, other.name)) + if not skip_disconnected and len(disconnected) > 0: + f.write('subgraph disconnected {\n') + f.write('label = "Disconnected"\n') + f.write('bgcolor = red\n') + + for dist in disconnected: + f.write('"%s"' % dist.name) + f.write('\n') + f.write('}\n') + f.write('}\n') + + def topological_sort(self): + """ + Perform a topological sort of the graph. + :return: A tuple, the first element of which is a topologically sorted + list of distributions, and the second element of which is a + list of distributions that cannot be sorted because they have + circular dependencies and so form a cycle. + """ + result = [] + # Make a shallow copy of the adjacency list + alist = {} + for k, v in self.adjacency_list.items(): + alist[k] = v[:] + while True: + # See what we can remove in this run + to_remove = [] + for k, v in list(alist.items())[:]: + if not v: + to_remove.append(k) + del alist[k] + if not to_remove: + # What's left in alist (if anything) is a cycle. + break + # Remove from the adjacency list of others + for k, v in alist.items(): + alist[k] = [(d, r) for d, r in v if d not in to_remove] + logger.debug('Moving to result: %s', + ['%s (%s)' % (d.name, d.version) for d in to_remove]) + result.extend(to_remove) + return result, list(alist.keys()) + + def __repr__(self): + """Representation of the graph""" + output = [] + for dist, adjs in self.adjacency_list.items(): + output.append(self.repr_node(dist)) + return '\n'.join(output) + + +def make_graph(dists, scheme='default'): + """Makes a dependency graph from the given distributions. + + :parameter dists: a list of distributions + :type dists: list of :class:`distutils2.database.InstalledDistribution` and + :class:`distutils2.database.EggInfoDistribution` instances + :rtype: a :class:`DependencyGraph` instance + """ + scheme = get_scheme(scheme) + graph = DependencyGraph() + provided = {} # maps names to lists of (version, dist) tuples + + # first, build the graph and find out what's provided + for dist in dists: + graph.add_distribution(dist) + + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + provided.setdefault(name, []).append((version, dist)) + + # now make the edges + for dist in dists: + requires = (dist.run_requires | dist.meta_requires | + dist.build_requires | dist.dev_requires) + for req in requires: + try: + matcher = scheme.matcher(req) + except UnsupportedVersionError: + # XXX compat-mode if cannot read the version + logger.warning('could not read version %r - using name only', + req) + name = req.split()[0] + matcher = scheme.matcher(name) + + name = matcher.key # case-insensitive + + matched = False + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + graph.add_edge(dist, provider, req) + matched = True + break + if not matched: + graph.add_missing(dist, req) + return graph + + +def get_dependent_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + dependent on *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + dep = [dist] # dependent distributions + todo = graph.reverse_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop() + dep.append(d) + for succ in graph.reverse_list[d]: + if succ not in dep: + todo.append(succ) + + dep.pop(0) # remove dist from dep, was there to prevent infinite loops + return dep + + +def get_required_dists(dists, dist): + """Recursively generate a list of distributions from *dists* that are + required by *dist*. + + :param dists: a list of distributions + :param dist: a distribution, member of *dists* for which we are interested + """ + if dist not in dists: + raise DistlibException('given distribution %r is not a member ' + 'of the list' % dist.name) + graph = make_graph(dists) + + req = [] # required distributions + todo = graph.adjacency_list[dist] # list of nodes we should inspect + + while todo: + d = todo.pop()[0] + req.append(d) + for pred in graph.adjacency_list[d]: + if pred not in req: + todo.append(pred) + + return req + + +def make_dist(name, version, **kwargs): + """ + A convenience method for making a dist given just a name and version. + """ + summary = kwargs.pop('summary', 'Placeholder for summary') + md = Metadata(**kwargs) + md.name = name + md.version = version + md.summary = summary or 'Placeholder for summary' + return Distribution(md) diff --git a/Lib/site-packages/pip/_vendor/distlib/index.py b/Lib/site-packages/pip/_vendor/distlib/index.py new file mode 100644 index 0000000..7a87cdc --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/index.py @@ -0,0 +1,516 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +import hashlib +import logging +import os +import shutil +import subprocess +import tempfile +try: + from threading import Thread +except ImportError: + from dummy_threading import Thread + +from . import DistlibException +from .compat import (HTTPBasicAuthHandler, Request, HTTPPasswordMgr, + urlparse, build_opener, string_types) +from .util import cached_property, zip_dir, ServerProxy + +logger = logging.getLogger(__name__) + +DEFAULT_INDEX = 'https://pypi.org/pypi' +DEFAULT_REALM = 'pypi' + +class PackageIndex(object): + """ + This class represents a package index compatible with PyPI, the Python + Package Index. + """ + + boundary = b'----------ThIs_Is_tHe_distlib_index_bouNdaRY_$' + + def __init__(self, url=None): + """ + Initialise an instance. + + :param url: The URL of the index. If not specified, the URL for PyPI is + used. + """ + self.url = url or DEFAULT_INDEX + self.read_configuration() + scheme, netloc, path, params, query, frag = urlparse(self.url) + if params or query or frag or scheme not in ('http', 'https'): + raise DistlibException('invalid repository: %s' % self.url) + self.password_handler = None + self.ssl_verifier = None + self.gpg = None + self.gpg_home = None + with open(os.devnull, 'w') as sink: + # Use gpg by default rather than gpg2, as gpg2 insists on + # prompting for passwords + for s in ('gpg', 'gpg2'): + try: + rc = subprocess.check_call([s, '--version'], stdout=sink, + stderr=sink) + if rc == 0: + self.gpg = s + break + except OSError: + pass + + def _get_pypirc_command(self): + """ + Get the distutils command for interacting with PyPI configurations. + :return: the command. + """ + from distutils.core import Distribution + from distutils.config import PyPIRCCommand + d = Distribution() + return PyPIRCCommand(d) + + def read_configuration(self): + """ + Read the PyPI access configuration as supported by distutils, getting + PyPI to do the actual work. This populates ``username``, ``password``, + ``realm`` and ``url`` attributes from the configuration. + """ + # get distutils to do the work + c = self._get_pypirc_command() + c.repository = self.url + cfg = c._read_pypirc() + self.username = cfg.get('username') + self.password = cfg.get('password') + self.realm = cfg.get('realm', 'pypi') + self.url = cfg.get('repository', self.url) + + def save_configuration(self): + """ + Save the PyPI access configuration. You must have set ``username`` and + ``password`` attributes before calling this method. + + Again, distutils is used to do the actual work. + """ + self.check_credentials() + # get distutils to do the work + c = self._get_pypirc_command() + c._store_pypirc(self.username, self.password) + + def check_credentials(self): + """ + Check that ``username`` and ``password`` have been set, and raise an + exception if not. + """ + if self.username is None or self.password is None: + raise DistlibException('username and password must be set') + pm = HTTPPasswordMgr() + _, netloc, _, _, _, _ = urlparse(self.url) + pm.add_password(self.realm, netloc, self.username, self.password) + self.password_handler = HTTPBasicAuthHandler(pm) + + def register(self, metadata): + """ + Register a distribution on PyPI, using the provided metadata. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the distribution to be + registered. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + metadata.validate() + d = metadata.todict() + d[':action'] = 'verify' + request = self.encode_request(d.items(), []) + response = self.send_request(request) + d[':action'] = 'submit' + request = self.encode_request(d.items(), []) + return self.send_request(request) + + def _reader(self, name, stream, outbuf): + """ + Thread runner for reading lines of from a subprocess into a buffer. + + :param name: The logical name of the stream (used for logging only). + :param stream: The stream to read from. This will typically a pipe + connected to the output stream of a subprocess. + :param outbuf: The list to append the read lines to. + """ + while True: + s = stream.readline() + if not s: + break + s = s.decode('utf-8').rstrip() + outbuf.append(s) + logger.debug('%s: %s' % (name, s)) + stream.close() + + def get_sign_command(self, filename, signer, sign_password, + keystore=None): + """ + Return a suitable command for signing a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The signing command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + if sign_password is not None: + cmd.extend(['--batch', '--passphrase-fd', '0']) + td = tempfile.mkdtemp() + sf = os.path.join(td, os.path.basename(filename) + '.asc') + cmd.extend(['--detach-sign', '--armor', '--local-user', + signer, '--output', sf, filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd, sf + + def run_command(self, cmd, input_data=None): + """ + Run a command in a child process , passing it any input data specified. + + :param cmd: The command to run. + :param input_data: If specified, this must be a byte string containing + data to be sent to the child process. + :return: A tuple consisting of the subprocess' exit code, a list of + lines read from the subprocess' ``stdout``, and a list of + lines read from the subprocess' ``stderr``. + """ + kwargs = { + 'stdout': subprocess.PIPE, + 'stderr': subprocess.PIPE, + } + if input_data is not None: + kwargs['stdin'] = subprocess.PIPE + stdout = [] + stderr = [] + p = subprocess.Popen(cmd, **kwargs) + # We don't use communicate() here because we may need to + # get clever with interacting with the command + t1 = Thread(target=self._reader, args=('stdout', p.stdout, stdout)) + t1.start() + t2 = Thread(target=self._reader, args=('stderr', p.stderr, stderr)) + t2.start() + if input_data is not None: + p.stdin.write(input_data) + p.stdin.close() + + p.wait() + t1.join() + t2.join() + return p.returncode, stdout, stderr + + def sign_file(self, filename, signer, sign_password, keystore=None): + """ + Sign a file. + + :param filename: The pathname to the file to be signed. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The absolute pathname of the file where the signature is + stored. + """ + cmd, sig_file = self.get_sign_command(filename, signer, sign_password, + keystore) + rc, stdout, stderr = self.run_command(cmd, + sign_password.encode('utf-8')) + if rc != 0: + raise DistlibException('sign command failed with error ' + 'code %s' % rc) + return sig_file + + def upload_file(self, metadata, filename, signer=None, sign_password=None, + filetype='sdist', pyversion='source', keystore=None): + """ + Upload a release file to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the file to be uploaded. + :param filename: The pathname of the file to be uploaded. + :param signer: The identifier of the signer of the file. + :param sign_password: The passphrase for the signer's + private key used for signing. + :param filetype: The type of the file being uploaded. This is the + distutils command which produced that file, e.g. + ``sdist`` or ``bdist_wheel``. + :param pyversion: The version of Python which the release relates + to. For code compatible with any Python, this would + be ``source``, otherwise it would be e.g. ``3.2``. + :param keystore: The path to a directory which contains the keys + used in signing. If not specified, the instance's + ``gpg_home`` attribute is used instead. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.exists(filename): + raise DistlibException('not found: %s' % filename) + metadata.validate() + d = metadata.todict() + sig_file = None + if signer: + if not self.gpg: + logger.warning('no signing program available - not signed') + else: + sig_file = self.sign_file(filename, signer, sign_password, + keystore) + with open(filename, 'rb') as f: + file_data = f.read() + md5_digest = hashlib.md5(file_data).hexdigest() + sha256_digest = hashlib.sha256(file_data).hexdigest() + d.update({ + ':action': 'file_upload', + 'protocol_version': '1', + 'filetype': filetype, + 'pyversion': pyversion, + 'md5_digest': md5_digest, + 'sha256_digest': sha256_digest, + }) + files = [('content', os.path.basename(filename), file_data)] + if sig_file: + with open(sig_file, 'rb') as f: + sig_data = f.read() + files.append(('gpg_signature', os.path.basename(sig_file), + sig_data)) + shutil.rmtree(os.path.dirname(sig_file)) + request = self.encode_request(d.items(), files) + return self.send_request(request) + + def upload_documentation(self, metadata, doc_dir): + """ + Upload documentation to the index. + + :param metadata: A :class:`Metadata` instance defining at least a name + and version number for the documentation to be + uploaded. + :param doc_dir: The pathname of the directory which contains the + documentation. This should be the directory that + contains the ``index.html`` for the documentation. + :return: The HTTP response received from PyPI upon submission of the + request. + """ + self.check_credentials() + if not os.path.isdir(doc_dir): + raise DistlibException('not a directory: %r' % doc_dir) + fn = os.path.join(doc_dir, 'index.html') + if not os.path.exists(fn): + raise DistlibException('not found: %r' % fn) + metadata.validate() + name, version = metadata.name, metadata.version + zip_data = zip_dir(doc_dir).getvalue() + fields = [(':action', 'doc_upload'), + ('name', name), ('version', version)] + files = [('content', name, zip_data)] + request = self.encode_request(fields, files) + return self.send_request(request) + + def get_verify_command(self, signature_filename, data_filename, + keystore=None): + """ + Return a suitable command for verifying a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: The verifying command as a list suitable to be + passed to :class:`subprocess.Popen`. + """ + cmd = [self.gpg, '--status-fd', '2', '--no-tty'] + if keystore is None: + keystore = self.gpg_home + if keystore: + cmd.extend(['--homedir', keystore]) + cmd.extend(['--verify', signature_filename, data_filename]) + logger.debug('invoking: %s', ' '.join(cmd)) + return cmd + + def verify_signature(self, signature_filename, data_filename, + keystore=None): + """ + Verify a signature for a file. + + :param signature_filename: The pathname to the file containing the + signature. + :param data_filename: The pathname to the file containing the + signed data. + :param keystore: The path to a directory which contains the keys + used in verification. If not specified, the + instance's ``gpg_home`` attribute is used instead. + :return: True if the signature was verified, else False. + """ + if not self.gpg: + raise DistlibException('verification unavailable because gpg ' + 'unavailable') + cmd = self.get_verify_command(signature_filename, data_filename, + keystore) + rc, stdout, stderr = self.run_command(cmd) + if rc not in (0, 1): + raise DistlibException('verify command failed with error ' + 'code %s' % rc) + return rc == 0 + + def download_file(self, url, destfile, digest=None, reporthook=None): + """ + This is a convenience method for downloading a file from an URL. + Normally, this will be a file from the index, though currently + no check is made for this (i.e. a file can be downloaded from + anywhere). + + The method is just like the :func:`urlretrieve` function in the + standard library, except that it allows digest computation to be + done during download and checking that the downloaded data + matched any expected value. + + :param url: The URL of the file to be downloaded (assumed to be + available via an HTTP GET request). + :param destfile: The pathname where the downloaded file is to be + saved. + :param digest: If specified, this must be a (hasher, value) + tuple, where hasher is the algorithm used (e.g. + ``'md5'``) and ``value`` is the expected value. + :param reporthook: The same as for :func:`urlretrieve` in the + standard library. + """ + if digest is None: + digester = None + logger.debug('No digest specified') + else: + if isinstance(digest, (list, tuple)): + hasher, digest = digest + else: + hasher = 'md5' + digester = getattr(hashlib, hasher)() + logger.debug('Digest specified: %s' % digest) + # The following code is equivalent to urlretrieve. + # We need to do it this way so that we can compute the + # digest of the file as we go. + with open(destfile, 'wb') as dfp: + # addinfourl is not a context manager on 2.x + # so we have to use try/finally + sfp = self.send_request(Request(url)) + try: + headers = sfp.info() + blocksize = 8192 + size = -1 + read = 0 + blocknum = 0 + if "content-length" in headers: + size = int(headers["Content-Length"]) + if reporthook: + reporthook(blocknum, blocksize, size) + while True: + block = sfp.read(blocksize) + if not block: + break + read += len(block) + dfp.write(block) + if digester: + digester.update(block) + blocknum += 1 + if reporthook: + reporthook(blocknum, blocksize, size) + finally: + sfp.close() + + # check that we got the whole file, if we can + if size >= 0 and read < size: + raise DistlibException( + 'retrieval incomplete: got only %d out of %d bytes' + % (read, size)) + # if we have a digest, it must match. + if digester: + actual = digester.hexdigest() + if digest != actual: + raise DistlibException('%s digest mismatch for %s: expected ' + '%s, got %s' % (hasher, destfile, + digest, actual)) + logger.debug('Digest verified: %s', digest) + + def send_request(self, req): + """ + Send a standard library :class:`Request` to PyPI and return its + response. + + :param req: The request to send. + :return: The HTTP response from PyPI (a standard library HTTPResponse). + """ + handlers = [] + if self.password_handler: + handlers.append(self.password_handler) + if self.ssl_verifier: + handlers.append(self.ssl_verifier) + opener = build_opener(*handlers) + return opener.open(req) + + def encode_request(self, fields, files): + """ + Encode fields and files for posting to an HTTP server. + + :param fields: The fields to send as a list of (fieldname, value) + tuples. + :param files: The files to send as a list of (fieldname, filename, + file_bytes) tuple. + """ + # Adapted from packaging, which in turn was adapted from + # http://code.activestate.com/recipes/146306 + + parts = [] + boundary = self.boundary + for k, values in fields: + if not isinstance(values, (list, tuple)): + values = [values] + + for v in values: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"' % + k).encode('utf-8'), + b'', + v.encode('utf-8'))) + for key, filename, value in files: + parts.extend(( + b'--' + boundary, + ('Content-Disposition: form-data; name="%s"; filename="%s"' % + (key, filename)).encode('utf-8'), + b'', + value)) + + parts.extend((b'--' + boundary + b'--', b'')) + + body = b'\r\n'.join(parts) + ct = b'multipart/form-data; boundary=' + boundary + headers = { + 'Content-type': ct, + 'Content-length': str(len(body)) + } + return Request(self.url, body, headers) + + def search(self, terms, operator=None): + if isinstance(terms, string_types): + terms = {'name': terms} + rpc_proxy = ServerProxy(self.url, timeout=3.0) + try: + return rpc_proxy.search(terms, operator or 'and') + finally: + rpc_proxy('close')() diff --git a/Lib/site-packages/pip/_vendor/distlib/locators.py b/Lib/site-packages/pip/_vendor/distlib/locators.py new file mode 100644 index 0000000..12a1d06 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/locators.py @@ -0,0 +1,1302 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2015 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# + +import gzip +from io import BytesIO +import json +import logging +import os +import posixpath +import re +try: + import threading +except ImportError: # pragma: no cover + import dummy_threading as threading +import zlib + +from . import DistlibException +from .compat import (urljoin, urlparse, urlunparse, url2pathname, pathname2url, + queue, quote, unescape, string_types, build_opener, + HTTPRedirectHandler as BaseRedirectHandler, text_type, + Request, HTTPError, URLError) +from .database import Distribution, DistributionPath, make_dist +from .metadata import Metadata, MetadataInvalidError +from .util import (cached_property, parse_credentials, ensure_slash, + split_filename, get_project_data, parse_requirement, + parse_name_and_version, ServerProxy, normalize_name) +from .version import get_scheme, UnsupportedVersionError +from .wheel import Wheel, is_compatible + +logger = logging.getLogger(__name__) + +HASHER_HASH = re.compile(r'^(\w+)=([a-f0-9]+)') +CHARSET = re.compile(r';\s*charset\s*=\s*(.*)\s*$', re.I) +HTML_CONTENT_TYPE = re.compile('text/html|application/x(ht)?ml') +DEFAULT_INDEX = 'https://pypi.org/pypi' + +def get_all_distribution_names(url=None): + """ + Return all distribution names known by an index. + :param url: The URL of the index. + :return: A list of all known distribution names. + """ + if url is None: + url = DEFAULT_INDEX + client = ServerProxy(url, timeout=3.0) + try: + return client.list_packages() + finally: + client('close')() + +class RedirectHandler(BaseRedirectHandler): + """ + A class to work around a bug in some Python 3.2.x releases. + """ + # There's a bug in the base version for some 3.2.x + # (e.g. 3.2.2 on Ubuntu Oneiric). If a Location header + # returns e.g. /abc, it bails because it says the scheme '' + # is bogus, when actually it should use the request's + # URL for the scheme. See Python issue #13696. + def http_error_302(self, req, fp, code, msg, headers): + # Some servers (incorrectly) return multiple Location headers + # (so probably same goes for URI). Use first header. + newurl = None + for key in ('location', 'uri'): + if key in headers: + newurl = headers[key] + break + if newurl is None: # pragma: no cover + return + urlparts = urlparse(newurl) + if urlparts.scheme == '': + newurl = urljoin(req.get_full_url(), newurl) + if hasattr(headers, 'replace_header'): + headers.replace_header(key, newurl) + else: + headers[key] = newurl + return BaseRedirectHandler.http_error_302(self, req, fp, code, msg, + headers) + + http_error_301 = http_error_303 = http_error_307 = http_error_302 + +class Locator(object): + """ + A base class for locators - things that locate distributions. + """ + source_extensions = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz') + binary_extensions = ('.egg', '.exe', '.whl') + excluded_extensions = ('.pdf',) + + # A list of tags indicating which wheels you want to match. The default + # value of None matches against the tags compatible with the running + # Python. If you want to match other values, set wheel_tags on a locator + # instance to a list of tuples (pyver, abi, arch) which you want to match. + wheel_tags = None + + downloadable_extensions = source_extensions + ('.whl',) + + def __init__(self, scheme='default'): + """ + Initialise an instance. + :param scheme: Because locators look for most recent versions, they + need to know the version scheme to use. This specifies + the current PEP-recommended scheme - use ``'legacy'`` + if you need to support existing distributions on PyPI. + """ + self._cache = {} + self.scheme = scheme + # Because of bugs in some of the handlers on some of the platforms, + # we use our own opener rather than just using urlopen. + self.opener = build_opener(RedirectHandler()) + # If get_project() is called from locate(), the matcher instance + # is set from the requirement passed to locate(). See issue #18 for + # why this can be useful to know. + self.matcher = None + self.errors = queue.Queue() + + def get_errors(self): + """ + Return any errors which have occurred. + """ + result = [] + while not self.errors.empty(): # pragma: no cover + try: + e = self.errors.get(False) + result.append(e) + except self.errors.Empty: + continue + self.errors.task_done() + return result + + def clear_errors(self): + """ + Clear any errors which may have been logged. + """ + # Just get the errors and throw them away + self.get_errors() + + def clear_cache(self): + self._cache.clear() + + def _get_scheme(self): + return self._scheme + + def _set_scheme(self, value): + self._scheme = value + + scheme = property(_get_scheme, _set_scheme) + + def _get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This should be implemented in subclasses. + + If called from a locate() request, self.matcher will be set to a + matcher for the requirement to satisfy, otherwise it will be None. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Please implement in the subclass') + + def get_project(self, name): + """ + For a given project, get a dictionary mapping available versions to Distribution + instances. + + This calls _get_project to do all the work, and just implements a caching layer on top. + """ + if self._cache is None: # pragma: no cover + result = self._get_project(name) + elif name in self._cache: + result = self._cache[name] + else: + self.clear_errors() + result = self._get_project(name) + self._cache[name] = result + return result + + def score_url(self, url): + """ + Give an url a score which can be used to choose preferred URLs + for a given project release. + """ + t = urlparse(url) + basename = posixpath.basename(t.path) + compatible = True + is_wheel = basename.endswith('.whl') + is_downloadable = basename.endswith(self.downloadable_extensions) + if is_wheel: + compatible = is_compatible(Wheel(basename), self.wheel_tags) + return (t.scheme == 'https', 'pypi.org' in t.netloc, + is_downloadable, is_wheel, compatible, basename) + + def prefer_url(self, url1, url2): + """ + Choose one of two URLs where both are candidates for distribution + archives for the same version of a distribution (for example, + .tar.gz vs. zip). + + The current implementation favours https:// URLs over http://, archives + from PyPI over those from other locations, wheel compatibility (if a + wheel) and then the archive name. + """ + result = url2 + if url1: + s1 = self.score_url(url1) + s2 = self.score_url(url2) + if s1 > s2: + result = url1 + if result != url2: + logger.debug('Not replacing %r with %r', url1, url2) + else: + logger.debug('Replacing %r with %r', url1, url2) + return result + + def split_filename(self, filename, project_name): + """ + Attempt to split a filename in project name, version and Python version. + """ + return split_filename(filename, project_name) + + def convert_url_to_download_info(self, url, project_name): + """ + See if a URL is a candidate for a download URL for a project (the URL + has typically been scraped from an HTML page). + + If it is, a dictionary is returned with keys "name", "version", + "filename" and "url"; otherwise, None is returned. + """ + def same_project(name1, name2): + return normalize_name(name1) == normalize_name(name2) + + result = None + scheme, netloc, path, params, query, frag = urlparse(url) + if frag.lower().startswith('egg='): # pragma: no cover + logger.debug('%s: version hint in fragment: %r', + project_name, frag) + m = HASHER_HASH.match(frag) + if m: + algo, digest = m.groups() + else: + algo, digest = None, None + origpath = path + if path and path[-1] == '/': # pragma: no cover + path = path[:-1] + if path.endswith('.whl'): + try: + wheel = Wheel(path) + if not is_compatible(wheel, self.wheel_tags): + logger.debug('Wheel not compatible: %s', path) + else: + if project_name is None: + include = True + else: + include = same_project(wheel.name, project_name) + if include: + result = { + 'name': wheel.name, + 'version': wheel.version, + 'filename': wheel.filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + 'python-version': ', '.join( + ['.'.join(list(v[2:])) for v in wheel.pyver]), + } + except Exception as e: # pragma: no cover + logger.warning('invalid path for wheel: %s', path) + elif not path.endswith(self.downloadable_extensions): # pragma: no cover + logger.debug('Not downloadable: %s', path) + else: # downloadable extension + path = filename = posixpath.basename(path) + for ext in self.downloadable_extensions: + if path.endswith(ext): + path = path[:-len(ext)] + t = self.split_filename(path, project_name) + if not t: # pragma: no cover + logger.debug('No match for project/version: %s', path) + else: + name, version, pyver = t + if not project_name or same_project(project_name, name): + result = { + 'name': name, + 'version': version, + 'filename': filename, + 'url': urlunparse((scheme, netloc, origpath, + params, query, '')), + #'packagetype': 'sdist', + } + if pyver: # pragma: no cover + result['python-version'] = pyver + break + if result and algo: + result['%s_digest' % algo] = digest + return result + + def _get_digest(self, info): + """ + Get a digest from a dictionary by looking at a "digests" dictionary + or keys of the form 'algo_digest'. + + Returns a 2-tuple (algo, digest) if found, else None. Currently + looks only for SHA256, then MD5. + """ + result = None + if 'digests' in info: + digests = info['digests'] + for algo in ('sha256', 'md5'): + if algo in digests: + result = (algo, digests[algo]) + break + if not result: + for algo in ('sha256', 'md5'): + key = '%s_digest' % algo + if key in info: + result = (algo, info[key]) + break + return result + + def _update_version_data(self, result, info): + """ + Update a result dictionary (the final result from _get_project) with a + dictionary for a specific version, which typically holds information + gleaned from a filename or URL for an archive for the distribution. + """ + name = info.pop('name') + version = info.pop('version') + if version in result: + dist = result[version] + md = dist.metadata + else: + dist = make_dist(name, version, scheme=self.scheme) + md = dist.metadata + dist.digest = digest = self._get_digest(info) + url = info['url'] + result['digests'][url] = digest + if md.source_url != info['url']: + md.source_url = self.prefer_url(md.source_url, url) + result['urls'].setdefault(version, set()).add(url) + dist.locator = self + result[version] = dist + + def locate(self, requirement, prereleases=False): + """ + Find the most recent distribution which matches the given + requirement. + + :param requirement: A requirement of the form 'foo (1.0)' or perhaps + 'foo (>= 1.0, < 2.0, != 1.3)' + :param prereleases: If ``True``, allow pre-release versions + to be located. Otherwise, pre-release versions + are not returned. + :return: A :class:`Distribution` instance, or ``None`` if no such + distribution could be located. + """ + result = None + r = parse_requirement(requirement) + if r is None: # pragma: no cover + raise DistlibException('Not a valid requirement: %r' % requirement) + scheme = get_scheme(self.scheme) + self.matcher = matcher = scheme.matcher(r.requirement) + logger.debug('matcher: %s (%s)', matcher, type(matcher).__name__) + versions = self.get_project(r.name) + if len(versions) > 2: # urls and digests keys are present + # sometimes, versions are invalid + slist = [] + vcls = matcher.version_class + for k in versions: + if k in ('urls', 'digests'): + continue + try: + if not matcher.match(k): + logger.debug('%s did not match %r', matcher, k) + else: + if prereleases or not vcls(k).is_prerelease: + slist.append(k) + else: + logger.debug('skipping pre-release ' + 'version %s of %s', k, matcher.name) + except Exception: # pragma: no cover + logger.warning('error matching %s with %r', matcher, k) + pass # slist.append(k) + if len(slist) > 1: + slist = sorted(slist, key=scheme.key) + if slist: + logger.debug('sorted list: %s', slist) + version = slist[-1] + result = versions[version] + if result: + if r.extras: + result.extras = r.extras + result.download_urls = versions.get('urls', {}).get(version, set()) + d = {} + sd = versions.get('digests', {}) + for url in result.download_urls: + if url in sd: # pragma: no cover + d[url] = sd[url] + result.digests = d + self.matcher = None + return result + + +class PyPIRPCLocator(Locator): + """ + This locator uses XML-RPC to locate distributions. It therefore + cannot be used with simple mirrors (that only mirror file content). + """ + def __init__(self, url, **kwargs): + """ + Initialise an instance. + + :param url: The URL to use for XML-RPC. + :param kwargs: Passed to the superclass constructor. + """ + super(PyPIRPCLocator, self).__init__(**kwargs) + self.base_url = url + self.client = ServerProxy(url, timeout=3.0) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + return set(self.client.list_packages()) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + versions = self.client.package_releases(name, True) + for v in versions: + urls = self.client.release_urls(name, v) + data = self.client.release_data(name, v) + metadata = Metadata(scheme=self.scheme) + metadata.name = data['name'] + metadata.version = data['version'] + metadata.license = data.get('license') + metadata.keywords = data.get('keywords', []) + metadata.summary = data.get('summary') + dist = Distribution(metadata) + if urls: + info = urls[0] + metadata.source_url = info['url'] + dist.digest = self._get_digest(info) + dist.locator = self + result[v] = dist + for info in urls: + url = info['url'] + digest = self._get_digest(info) + result['urls'].setdefault(v, set()).add(url) + result['digests'][url] = digest + return result + +class PyPIJSONLocator(Locator): + """ + This locator uses PyPI's JSON interface. It's very limited in functionality + and probably not worth using. + """ + def __init__(self, url, **kwargs): + super(PyPIJSONLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + url = urljoin(self.base_url, '%s/json' % quote(name)) + try: + resp = self.opener.open(url) + data = resp.read().decode() # for now + d = json.loads(data) + md = Metadata(scheme=self.scheme) + data = d['info'] + md.name = data['name'] + md.version = data['version'] + md.license = data.get('license') + md.keywords = data.get('keywords', []) + md.summary = data.get('summary') + dist = Distribution(md) + dist.locator = self + urls = d['urls'] + result[md.version] = dist + for info in d['urls']: + url = info['url'] + dist.download_urls.add(url) + dist.digests[url] = self._get_digest(info) + result['urls'].setdefault(md.version, set()).add(url) + result['digests'][url] = self._get_digest(info) + # Now get other releases + for version, infos in d['releases'].items(): + if version == md.version: + continue # already done + omd = Metadata(scheme=self.scheme) + omd.name = md.name + omd.version = version + odist = Distribution(omd) + odist.locator = self + result[version] = odist + for info in infos: + url = info['url'] + odist.download_urls.add(url) + odist.digests[url] = self._get_digest(info) + result['urls'].setdefault(version, set()).add(url) + result['digests'][url] = self._get_digest(info) +# for info in urls: +# md.source_url = info['url'] +# dist.digest = self._get_digest(info) +# dist.locator = self +# for info in urls: +# url = info['url'] +# result['urls'].setdefault(md.version, set()).add(url) +# result['digests'][url] = self._get_digest(info) + except Exception as e: + self.errors.put(text_type(e)) + logger.exception('JSON fetch failed: %s', e) + return result + + +class Page(object): + """ + This class represents a scraped HTML page. + """ + # The following slightly hairy-looking regex just looks for the contents of + # an anchor link, which has an attribute "href" either immediately preceded + # or immediately followed by a "rel" attribute. The attribute values can be + # declared with double quotes, single quotes or no quotes - which leads to + # the length of the expression. + _href = re.compile(""" +(rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*))\\s+)? +href\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)) +(\\s+rel\\s*=\\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\\s\n]*)))? +""", re.I | re.S | re.X) + _base = re.compile(r"""]+)""", re.I | re.S) + + def __init__(self, data, url): + """ + Initialise an instance with the Unicode page contents and the URL they + came from. + """ + self.data = data + self.base_url = self.url = url + m = self._base.search(self.data) + if m: + self.base_url = m.group(1) + + _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I) + + @cached_property + def links(self): + """ + Return the URLs of all the links on a page together with information + about their "rel" attribute, for determining which ones to treat as + downloads and which ones to queue for further scraping. + """ + def clean(url): + "Tidy up an URL." + scheme, netloc, path, params, query, frag = urlparse(url) + return urlunparse((scheme, netloc, quote(path), + params, query, frag)) + + result = set() + for match in self._href.finditer(self.data): + d = match.groupdict('') + rel = (d['rel1'] or d['rel2'] or d['rel3'] or + d['rel4'] or d['rel5'] or d['rel6']) + url = d['url1'] or d['url2'] or d['url3'] + url = urljoin(self.base_url, url) + url = unescape(url) + url = self._clean_re.sub(lambda m: '%%%2x' % ord(m.group(0)), url) + result.add((url, rel)) + # We sort the result, hoping to bring the most recent versions + # to the front + result = sorted(result, key=lambda t: t[0], reverse=True) + return result + + +class SimpleScrapingLocator(Locator): + """ + A locator which scrapes HTML pages to locate downloads for a distribution. + This runs multiple threads to do the I/O; performance is at least as good + as pip's PackageFinder, which works in an analogous fashion. + """ + + # These are used to deal with various Content-Encoding schemes. + decoders = { + 'deflate': zlib.decompress, + 'gzip': lambda b: gzip.GzipFile(fileobj=BytesIO(d)).read(), + 'none': lambda b: b, + } + + def __init__(self, url, timeout=None, num_workers=10, **kwargs): + """ + Initialise an instance. + :param url: The root URL to use for scraping. + :param timeout: The timeout, in seconds, to be applied to requests. + This defaults to ``None`` (no timeout specified). + :param num_workers: The number of worker threads you want to do I/O, + This defaults to 10. + :param kwargs: Passed to the superclass. + """ + super(SimpleScrapingLocator, self).__init__(**kwargs) + self.base_url = ensure_slash(url) + self.timeout = timeout + self._page_cache = {} + self._seen = set() + self._to_fetch = queue.Queue() + self._bad_hosts = set() + self.skip_externals = False + self.num_workers = num_workers + self._lock = threading.RLock() + # See issue #45: we need to be resilient when the locator is used + # in a thread, e.g. with concurrent.futures. We can't use self._lock + # as it is for coordinating our internal threads - the ones created + # in _prepare_threads. + self._gplock = threading.RLock() + self.platform_check = False # See issue #112 + + def _prepare_threads(self): + """ + Threads are created only when get_project is called, and terminate + before it returns. They are there primarily to parallelise I/O (i.e. + fetching web pages). + """ + self._threads = [] + for i in range(self.num_workers): + t = threading.Thread(target=self._fetch) + t.setDaemon(True) + t.start() + self._threads.append(t) + + def _wait_threads(self): + """ + Tell all the threads to terminate (by sending a sentinel value) and + wait for them to do so. + """ + # Note that you need two loops, since you can't say which + # thread will get each sentinel + for t in self._threads: + self._to_fetch.put(None) # sentinel + for t in self._threads: + t.join() + self._threads = [] + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + with self._gplock: + self.result = result + self.project_name = name + url = urljoin(self.base_url, '%s/' % quote(name)) + self._seen.clear() + self._page_cache.clear() + self._prepare_threads() + try: + logger.debug('Queueing %s', url) + self._to_fetch.put(url) + self._to_fetch.join() + finally: + self._wait_threads() + del self.result + return result + + platform_dependent = re.compile(r'\b(linux_(i\d86|x86_64|arm\w+)|' + r'win(32|_amd64)|macosx_?\d+)\b', re.I) + + def _is_platform_dependent(self, url): + """ + Does an URL refer to a platform-specific download? + """ + return self.platform_dependent.search(url) + + def _process_download(self, url): + """ + See if an URL is a suitable download for a project. + + If it is, register information in the result dictionary (for + _get_project) about the specific version it's for. + + Note that the return value isn't actually used other than as a boolean + value. + """ + if self.platform_check and self._is_platform_dependent(url): + info = None + else: + info = self.convert_url_to_download_info(url, self.project_name) + logger.debug('process_download: %s -> %s', url, info) + if info: + with self._lock: # needed because self.result is shared + self._update_version_data(self.result, info) + return info + + def _should_queue(self, link, referrer, rel): + """ + Determine whether a link URL from a referring page and with a + particular "rel" attribute should be queued for scraping. + """ + scheme, netloc, path, _, _, _ = urlparse(link) + if path.endswith(self.source_extensions + self.binary_extensions + + self.excluded_extensions): + result = False + elif self.skip_externals and not link.startswith(self.base_url): + result = False + elif not referrer.startswith(self.base_url): + result = False + elif rel not in ('homepage', 'download'): + result = False + elif scheme not in ('http', 'https', 'ftp'): + result = False + elif self._is_platform_dependent(link): + result = False + else: + host = netloc.split(':', 1)[0] + if host.lower() == 'localhost': + result = False + else: + result = True + logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, + referrer, result) + return result + + def _fetch(self): + """ + Get a URL to fetch from the work queue, get the HTML page, examine its + links for download candidates and candidates for further scraping. + + This is a handy method to run in a thread. + """ + while True: + url = self._to_fetch.get() + try: + if url: + page = self.get_page(url) + if page is None: # e.g. after an error + continue + for link, rel in page.links: + if link not in self._seen: + try: + self._seen.add(link) + if (not self._process_download(link) and + self._should_queue(link, url, rel)): + logger.debug('Queueing %s from %s', link, url) + self._to_fetch.put(link) + except MetadataInvalidError: # e.g. invalid versions + pass + except Exception as e: # pragma: no cover + self.errors.put(text_type(e)) + finally: + # always do this, to avoid hangs :-) + self._to_fetch.task_done() + if not url: + #logger.debug('Sentinel seen, quitting.') + break + + def get_page(self, url): + """ + Get the HTML for an URL, possibly from an in-memory cache. + + XXX TODO Note: this cache is never actually cleared. It's assumed that + the data won't get stale over the lifetime of a locator instance (not + necessarily true for the default_locator). + """ + # http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api + scheme, netloc, path, _, _, _ = urlparse(url) + if scheme == 'file' and os.path.isdir(url2pathname(path)): + url = urljoin(ensure_slash(url), 'index.html') + + if url in self._page_cache: + result = self._page_cache[url] + logger.debug('Returning %s from cache: %s', url, result) + else: + host = netloc.split(':', 1)[0] + result = None + if host in self._bad_hosts: + logger.debug('Skipping %s due to bad host %s', url, host) + else: + req = Request(url, headers={'Accept-encoding': 'identity'}) + try: + logger.debug('Fetching %s', url) + resp = self.opener.open(req, timeout=self.timeout) + logger.debug('Fetched %s', url) + headers = resp.info() + content_type = headers.get('Content-Type', '') + if HTML_CONTENT_TYPE.match(content_type): + final_url = resp.geturl() + data = resp.read() + encoding = headers.get('Content-Encoding') + if encoding: + decoder = self.decoders[encoding] # fail if not found + data = decoder(data) + encoding = 'utf-8' + m = CHARSET.search(content_type) + if m: + encoding = m.group(1) + try: + data = data.decode(encoding) + except UnicodeError: # pragma: no cover + data = data.decode('latin-1') # fallback + result = Page(data, final_url) + self._page_cache[final_url] = result + except HTTPError as e: + if e.code != 404: + logger.exception('Fetch failed: %s: %s', url, e) + except URLError as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + with self._lock: + self._bad_hosts.add(host) + except Exception as e: # pragma: no cover + logger.exception('Fetch failed: %s: %s', url, e) + finally: + self._page_cache[url] = result # even if None (failure) + return result + + _distname_re = re.compile(']*>([^<]+)<') + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + page = self.get_page(self.base_url) + if not page: + raise DistlibException('Unable to get %s' % self.base_url) + for match in self._distname_re.finditer(page.data): + result.add(match.group(1)) + return result + +class DirectoryLocator(Locator): + """ + This class locates distributions in a directory tree. + """ + + def __init__(self, path, **kwargs): + """ + Initialise an instance. + :param path: The root of the directory tree to search. + :param kwargs: Passed to the superclass constructor, + except for: + * recursive - if True (the default), subdirectories are + recursed into. If False, only the top-level directory + is searched, + """ + self.recursive = kwargs.pop('recursive', True) + super(DirectoryLocator, self).__init__(**kwargs) + path = os.path.abspath(path) + if not os.path.isdir(path): # pragma: no cover + raise DistlibException('Not a directory: %r' % path) + self.base_dir = path + + def should_include(self, filename, parent): + """ + Should a filename be considered as a candidate for a distribution + archive? As well as the filename, the directory which contains it + is provided, though not used by the current implementation. + """ + return filename.endswith(self.downloadable_extensions) + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, name) + if info: + self._update_version_data(result, info) + if not self.recursive: + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for root, dirs, files in os.walk(self.base_dir): + for fn in files: + if self.should_include(fn, root): + fn = os.path.join(root, fn) + url = urlunparse(('file', '', + pathname2url(os.path.abspath(fn)), + '', '', '')) + info = self.convert_url_to_download_info(url, None) + if info: + result.add(info['name']) + if not self.recursive: + break + return result + +class JSONLocator(Locator): + """ + This locator uses special extended metadata (not available on PyPI) and is + the basis of performant dependency resolution in distlib. Other locators + require archive downloads before dependencies can be determined! As you + might imagine, that can be slow. + """ + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + raise NotImplementedError('Not available from this locator') + + def _get_project(self, name): + result = {'urls': {}, 'digests': {}} + data = get_project_data(name) + if data: + for info in data.get('files', []): + if info['ptype'] != 'sdist' or info['pyversion'] != 'source': + continue + # We don't store summary in project metadata as it makes + # the data bigger for no benefit during dependency + # resolution + dist = make_dist(data['name'], info['version'], + summary=data.get('summary', + 'Placeholder for summary'), + scheme=self.scheme) + md = dist.metadata + md.source_url = info['url'] + # TODO SHA256 digest + if 'digest' in info and info['digest']: + dist.digest = ('md5', info['digest']) + md.dependencies = info.get('requirements', {}) + dist.exports = info.get('exports', {}) + result[dist.version] = dist + result['urls'].setdefault(dist.version, set()).add(info['url']) + return result + +class DistPathLocator(Locator): + """ + This locator finds installed distributions in a path. It can be useful for + adding to an :class:`AggregatingLocator`. + """ + def __init__(self, distpath, **kwargs): + """ + Initialise an instance. + + :param distpath: A :class:`DistributionPath` instance to search. + """ + super(DistPathLocator, self).__init__(**kwargs) + assert isinstance(distpath, DistributionPath) + self.distpath = distpath + + def _get_project(self, name): + dist = self.distpath.get_distribution(name) + if dist is None: + result = {'urls': {}, 'digests': {}} + else: + result = { + dist.version: dist, + 'urls': {dist.version: set([dist.source_url])}, + 'digests': {dist.version: set([None])} + } + return result + + +class AggregatingLocator(Locator): + """ + This class allows you to chain and/or merge a list of locators. + """ + def __init__(self, *locators, **kwargs): + """ + Initialise an instance. + + :param locators: The list of locators to search. + :param kwargs: Passed to the superclass constructor, + except for: + * merge - if False (the default), the first successful + search from any of the locators is returned. If True, + the results from all locators are merged (this can be + slow). + """ + self.merge = kwargs.pop('merge', False) + self.locators = locators + super(AggregatingLocator, self).__init__(**kwargs) + + def clear_cache(self): + super(AggregatingLocator, self).clear_cache() + for locator in self.locators: + locator.clear_cache() + + def _set_scheme(self, value): + self._scheme = value + for locator in self.locators: + locator.scheme = value + + scheme = property(Locator.scheme.fget, _set_scheme) + + def _get_project(self, name): + result = {} + for locator in self.locators: + d = locator.get_project(name) + if d: + if self.merge: + files = result.get('urls', {}) + digests = result.get('digests', {}) + # next line could overwrite result['urls'], result['digests'] + result.update(d) + df = result.get('urls') + if files and df: + for k, v in files.items(): + if k in df: + df[k] |= v + else: + df[k] = v + dd = result.get('digests') + if digests and dd: + dd.update(digests) + else: + # See issue #18. If any dists are found and we're looking + # for specific constraints, we only return something if + # a match is found. For example, if a DirectoryLocator + # returns just foo (1.0) while we're looking for + # foo (>= 2.0), we'll pretend there was nothing there so + # that subsequent locators can be queried. Otherwise we + # would just return foo (1.0) which would then lead to a + # failure to find foo (>= 2.0), because other locators + # weren't searched. Note that this only matters when + # merge=False. + if self.matcher is None: + found = True + else: + found = False + for k in d: + if self.matcher.match(k): + found = True + break + if found: + result = d + break + return result + + def get_distribution_names(self): + """ + Return all the distribution names known to this locator. + """ + result = set() + for locator in self.locators: + try: + result |= locator.get_distribution_names() + except NotImplementedError: + pass + return result + + +# We use a legacy scheme simply because most of the dists on PyPI use legacy +# versions which don't conform to PEP 426 / PEP 440. +default_locator = AggregatingLocator( + JSONLocator(), + SimpleScrapingLocator('https://pypi.org/simple/', + timeout=3.0), + scheme='legacy') + +locate = default_locator.locate + +NAME_VERSION_RE = re.compile(r'(?P[\w-]+)\s*' + r'\(\s*(==\s*)?(?P[^)]+)\)$') + +class DependencyFinder(object): + """ + Locate dependencies for distributions. + """ + + def __init__(self, locator=None): + """ + Initialise an instance, using the specified locator + to locate distributions. + """ + self.locator = locator or default_locator + self.scheme = get_scheme(self.locator.scheme) + + def add_distribution(self, dist): + """ + Add a distribution to the finder. This will update internal information + about who provides what. + :param dist: The distribution to add. + """ + logger.debug('adding distribution %s', dist) + name = dist.key + self.dists_by_name[name] = dist + self.dists[(name, dist.version)] = dist + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Add to provided: %s, %s, %s', name, version, dist) + self.provided.setdefault(name, set()).add((version, dist)) + + def remove_distribution(self, dist): + """ + Remove a distribution from the finder. This will update internal + information about who provides what. + :param dist: The distribution to remove. + """ + logger.debug('removing distribution %s', dist) + name = dist.key + del self.dists_by_name[name] + del self.dists[(name, dist.version)] + for p in dist.provides: + name, version = parse_name_and_version(p) + logger.debug('Remove from provided: %s, %s, %s', name, version, dist) + s = self.provided[name] + s.remove((version, dist)) + if not s: + del self.provided[name] + + def get_matcher(self, reqt): + """ + Get a version matcher for a requirement. + :param reqt: The requirement + :type reqt: str + :return: A version matcher (an instance of + :class:`distlib.version.Matcher`). + """ + try: + matcher = self.scheme.matcher(reqt) + except UnsupportedVersionError: # pragma: no cover + # XXX compat-mode if cannot read the version + name = reqt.split()[0] + matcher = self.scheme.matcher(name) + return matcher + + def find_providers(self, reqt): + """ + Find the distributions which can fulfill a requirement. + + :param reqt: The requirement. + :type reqt: str + :return: A set of distribution which can fulfill the requirement. + """ + matcher = self.get_matcher(reqt) + name = matcher.key # case-insensitive + result = set() + provided = self.provided + if name in provided: + for version, provider in provided[name]: + try: + match = matcher.match(version) + except UnsupportedVersionError: + match = False + + if match: + result.add(provider) + break + return result + + def try_to_replace(self, provider, other, problems): + """ + Attempt to replace one provider with another. This is typically used + when resolving dependencies from multiple sources, e.g. A requires + (B >= 1.0) while C requires (B >= 1.1). + + For successful replacement, ``provider`` must meet all the requirements + which ``other`` fulfills. + + :param provider: The provider we are trying to replace with. + :param other: The provider we're trying to replace. + :param problems: If False is returned, this will contain what + problems prevented replacement. This is currently + a tuple of the literal string 'cantreplace', + ``provider``, ``other`` and the set of requirements + that ``provider`` couldn't fulfill. + :return: True if we can replace ``other`` with ``provider``, else + False. + """ + rlist = self.reqts[other] + unmatched = set() + for s in rlist: + matcher = self.get_matcher(s) + if not matcher.match(provider.version): + unmatched.add(s) + if unmatched: + # can't replace other with provider + problems.add(('cantreplace', provider, other, + frozenset(unmatched))) + result = False + else: + # can replace other with provider + self.remove_distribution(other) + del self.reqts[other] + for s in rlist: + self.reqts.setdefault(provider, set()).add(s) + self.add_distribution(provider) + result = True + return result + + def find(self, requirement, meta_extras=None, prereleases=False): + """ + Find a distribution and all distributions it depends on. + + :param requirement: The requirement specifying the distribution to + find, or a Distribution instance. + :param meta_extras: A list of meta extras such as :test:, :build: and + so on. + :param prereleases: If ``True``, allow pre-release versions to be + returned - otherwise, don't return prereleases + unless they're all that's available. + + Return a set of :class:`Distribution` instances and a set of + problems. + + The distributions returned should be such that they have the + :attr:`required` attribute set to ``True`` if they were + from the ``requirement`` passed to ``find()``, and they have the + :attr:`build_time_dependency` attribute set to ``True`` unless they + are post-installation dependencies of the ``requirement``. + + The problems should be a tuple consisting of the string + ``'unsatisfied'`` and the requirement which couldn't be satisfied + by any distribution known to the locator. + """ + + self.provided = {} + self.dists = {} + self.dists_by_name = {} + self.reqts = {} + + meta_extras = set(meta_extras or []) + if ':*:' in meta_extras: + meta_extras.remove(':*:') + # :meta: and :run: are implicitly included + meta_extras |= set([':test:', ':build:', ':dev:']) + + if isinstance(requirement, Distribution): + dist = odist = requirement + logger.debug('passed %s as requirement', odist) + else: + dist = odist = self.locator.locate(requirement, + prereleases=prereleases) + if dist is None: + raise DistlibException('Unable to locate %r' % requirement) + logger.debug('located %s', odist) + dist.requested = True + problems = set() + todo = set([dist]) + install_dists = set([odist]) + while todo: + dist = todo.pop() + name = dist.key # case-insensitive + if name not in self.dists_by_name: + self.add_distribution(dist) + else: + #import pdb; pdb.set_trace() + other = self.dists_by_name[name] + if other != dist: + self.try_to_replace(dist, other, problems) + + ireqts = dist.run_requires | dist.meta_requires + sreqts = dist.build_requires + ereqts = set() + if meta_extras and dist in install_dists: + for key in ('test', 'build', 'dev'): + e = ':%s:' % key + if e in meta_extras: + ereqts |= getattr(dist, '%s_requires' % key) + all_reqts = ireqts | sreqts | ereqts + for r in all_reqts: + providers = self.find_providers(r) + if not providers: + logger.debug('No providers found for %r', r) + provider = self.locator.locate(r, prereleases=prereleases) + # If no provider is found and we didn't consider + # prereleases, consider them now. + if provider is None and not prereleases: + provider = self.locator.locate(r, prereleases=True) + if provider is None: + logger.debug('Cannot satisfy %r', r) + problems.add(('unsatisfied', r)) + else: + n, v = provider.key, provider.version + if (n, v) not in self.dists: + todo.add(provider) + providers.add(provider) + if r in ireqts and dist in install_dists: + install_dists.add(provider) + logger.debug('Adding %s to install_dists', + provider.name_and_version) + for p in providers: + name = p.key + if name not in self.dists_by_name: + self.reqts.setdefault(p, set()).add(r) + else: + other = self.dists_by_name[name] + if other != p: + # see if other can be replaced by p + self.try_to_replace(p, other, problems) + + dists = set(self.dists.values()) + for dist in dists: + dist.build_time_dependency = dist not in install_dists + if dist.build_time_dependency: + logger.debug('%s is a build-time dependency only.', + dist.name_and_version) + logger.debug('find done for %s', odist) + return dists, problems diff --git a/Lib/site-packages/pip/_vendor/distlib/manifest.py b/Lib/site-packages/pip/_vendor/distlib/manifest.py new file mode 100644 index 0000000..ca0fe44 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/manifest.py @@ -0,0 +1,393 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2013 Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Class representing the list of files in a distribution. + +Equivalent to distutils.filelist, but fixes some problems. +""" +import fnmatch +import logging +import os +import re +import sys + +from . import DistlibException +from .compat import fsdecode +from .util import convert_path + + +__all__ = ['Manifest'] + +logger = logging.getLogger(__name__) + +# a \ followed by some spaces + EOL +_COLLAPSE_PATTERN = re.compile('\\\\w*\n', re.M) +_COMMENTED_LINE = re.compile('#.*?(?=\n)|\n(?=$)', re.M | re.S) + +# +# Due to the different results returned by fnmatch.translate, we need +# to do slightly different processing for Python 2.7 and 3.2 ... this needed +# to be brought in for Python 3.6 onwards. +# +_PYTHON_VERSION = sys.version_info[:2] + +class Manifest(object): + """A list of files built by on exploring the filesystem and filtered by + applying various patterns to what we find there. + """ + + def __init__(self, base=None): + """ + Initialise an instance. + + :param base: The base directory to explore under. + """ + self.base = os.path.abspath(os.path.normpath(base or os.getcwd())) + self.prefix = self.base + os.sep + self.allfiles = None + self.files = set() + + # + # Public API + # + + def findall(self): + """Find all files under the base and set ``allfiles`` to the absolute + pathnames of files found. + """ + from stat import S_ISREG, S_ISDIR, S_ISLNK + + self.allfiles = allfiles = [] + root = self.base + stack = [root] + pop = stack.pop + push = stack.append + + while stack: + root = pop() + names = os.listdir(root) + + for name in names: + fullname = os.path.join(root, name) + + # Avoid excess stat calls -- just one will do, thank you! + stat = os.stat(fullname) + mode = stat.st_mode + if S_ISREG(mode): + allfiles.append(fsdecode(fullname)) + elif S_ISDIR(mode) and not S_ISLNK(mode): + push(fullname) + + def add(self, item): + """ + Add a file to the manifest. + + :param item: The pathname to add. This can be relative to the base. + """ + if not item.startswith(self.prefix): + item = os.path.join(self.base, item) + self.files.add(os.path.normpath(item)) + + def add_many(self, items): + """ + Add a list of files to the manifest. + + :param items: The pathnames to add. These can be relative to the base. + """ + for item in items: + self.add(item) + + def sorted(self, wantdirs=False): + """ + Return sorted files in directory order + """ + + def add_dir(dirs, d): + dirs.add(d) + logger.debug('add_dir added %s', d) + if d != self.base: + parent, _ = os.path.split(d) + assert parent not in ('', '/') + add_dir(dirs, parent) + + result = set(self.files) # make a copy! + if wantdirs: + dirs = set() + for f in result: + add_dir(dirs, os.path.dirname(f)) + result |= dirs + return [os.path.join(*path_tuple) for path_tuple in + sorted(os.path.split(path) for path in result)] + + def clear(self): + """Clear all collected files.""" + self.files = set() + self.allfiles = [] + + def process_directive(self, directive): + """ + Process a directive which either adds some files from ``allfiles`` to + ``files``, or removes some files from ``files``. + + :param directive: The directive to process. This should be in a format + compatible with distutils ``MANIFEST.in`` files: + + http://docs.python.org/distutils/sourcedist.html#commands + """ + # Parse the line: split it up, make sure the right number of words + # is there, and return the relevant words. 'action' is always + # defined: it's the first word of the line. Which of the other + # three are defined depends on the action; it'll be either + # patterns, (dir and patterns), or (dirpattern). + action, patterns, thedir, dirpattern = self._parse_directive(directive) + + # OK, now we know that the action is valid and we have the + # right number of words on the line for that action -- so we + # can proceed with minimal error-checking. + if action == 'include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=True): + logger.warning('no files found matching %r', pattern) + + elif action == 'exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, anchor=True) + #if not found: + # logger.warning('no previously-included files ' + # 'found matching %r', pattern) + + elif action == 'global-include': + for pattern in patterns: + if not self._include_pattern(pattern, anchor=False): + logger.warning('no files found matching %r ' + 'anywhere in distribution', pattern) + + elif action == 'global-exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, anchor=False) + #if not found: + # logger.warning('no previously-included files ' + # 'matching %r found anywhere in ' + # 'distribution', pattern) + + elif action == 'recursive-include': + for pattern in patterns: + if not self._include_pattern(pattern, prefix=thedir): + logger.warning('no files found matching %r ' + 'under directory %r', pattern, thedir) + + elif action == 'recursive-exclude': + for pattern in patterns: + found = self._exclude_pattern(pattern, prefix=thedir) + #if not found: + # logger.warning('no previously-included files ' + # 'matching %r found under directory %r', + # pattern, thedir) + + elif action == 'graft': + if not self._include_pattern(None, prefix=dirpattern): + logger.warning('no directories found matching %r', + dirpattern) + + elif action == 'prune': + if not self._exclude_pattern(None, prefix=dirpattern): + logger.warning('no previously-included directories found ' + 'matching %r', dirpattern) + else: # pragma: no cover + # This should never happen, as it should be caught in + # _parse_template_line + raise DistlibException( + 'invalid action %r' % action) + + # + # Private API + # + + def _parse_directive(self, directive): + """ + Validate a directive. + :param directive: The directive to validate. + :return: A tuple of action, patterns, thedir, dir_patterns + """ + words = directive.split() + if len(words) == 1 and words[0] not in ('include', 'exclude', + 'global-include', + 'global-exclude', + 'recursive-include', + 'recursive-exclude', + 'graft', 'prune'): + # no action given, let's use the default 'include' + words.insert(0, 'include') + + action = words[0] + patterns = thedir = dir_pattern = None + + if action in ('include', 'exclude', + 'global-include', 'global-exclude'): + if len(words) < 2: + raise DistlibException( + '%r expects ...' % action) + + patterns = [convert_path(word) for word in words[1:]] + + elif action in ('recursive-include', 'recursive-exclude'): + if len(words) < 3: + raise DistlibException( + '%r expects ...' % action) + + thedir = convert_path(words[1]) + patterns = [convert_path(word) for word in words[2:]] + + elif action in ('graft', 'prune'): + if len(words) != 2: + raise DistlibException( + '%r expects a single ' % action) + + dir_pattern = convert_path(words[1]) + + else: + raise DistlibException('unknown action %r' % action) + + return action, patterns, thedir, dir_pattern + + def _include_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Select strings (presumably filenames) from 'self.files' that + match 'pattern', a Unix-style wildcard (glob) pattern. + + Patterns are not quite the same as implemented by the 'fnmatch' + module: '*' and '?' match non-special characters, where "special" + is platform-dependent: slash on Unix; colon, slash, and backslash on + DOS/Windows; and colon on Mac OS. + + If 'anchor' is true (the default), then the pattern match is more + stringent: "*.py" will match "foo.py" but not "foo/bar.py". If + 'anchor' is false, both of these will match. + + If 'prefix' is supplied, then only filenames starting with 'prefix' + (itself a pattern) and ending with 'pattern', with anything in between + them, will match. 'anchor' is ignored in this case. + + If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and + 'pattern' is assumed to be either a string containing a regex or a + regex object -- no translation is done, the regex is just compiled + and used as-is. + + Selected strings will be added to self.files. + + Return True if files are found. + """ + # XXX docstring lying about what the special chars are? + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + + # delayed loading of allfiles list + if self.allfiles is None: + self.findall() + + for name in self.allfiles: + if pattern_re.search(name): + self.files.add(name) + found = True + return found + + def _exclude_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Remove strings (presumably filenames) from 'files' that match + 'pattern'. + + Other parameters are the same as for 'include_pattern()', above. + The list 'self.files' is modified in place. Return True if files are + found. + + This API is public to allow e.g. exclusion of SCM subdirs, e.g. when + packaging source distributions + """ + found = False + pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) + for f in list(self.files): + if pattern_re.search(f): + self.files.remove(f) + found = True + return found + + def _translate_pattern(self, pattern, anchor=True, prefix=None, + is_regex=False): + """Translate a shell-like wildcard pattern to a compiled regular + expression. + + Return the compiled regex. If 'is_regex' true, + then 'pattern' is directly compiled to a regex (if it's a string) + or just returned as-is (assumes it's a regex object). + """ + if is_regex: + if isinstance(pattern, str): + return re.compile(pattern) + else: + return pattern + + if _PYTHON_VERSION > (3, 2): + # ditch start and end characters + start, _, end = self._glob_to_re('_').partition('_') + + if pattern: + pattern_re = self._glob_to_re(pattern) + if _PYTHON_VERSION > (3, 2): + assert pattern_re.startswith(start) and pattern_re.endswith(end) + else: + pattern_re = '' + + base = re.escape(os.path.join(self.base, '')) + if prefix is not None: + # ditch end of pattern character + if _PYTHON_VERSION <= (3, 2): + empty_pattern = self._glob_to_re('') + prefix_re = self._glob_to_re(prefix)[:-len(empty_pattern)] + else: + prefix_re = self._glob_to_re(prefix) + assert prefix_re.startswith(start) and prefix_re.endswith(end) + prefix_re = prefix_re[len(start): len(prefix_re) - len(end)] + sep = os.sep + if os.sep == '\\': + sep = r'\\' + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + sep.join((prefix_re, + '.*' + pattern_re)) + else: + pattern_re = pattern_re[len(start): len(pattern_re) - len(end)] + pattern_re = r'%s%s%s%s.*%s%s' % (start, base, prefix_re, sep, + pattern_re, end) + else: # no prefix -- respect anchor flag + if anchor: + if _PYTHON_VERSION <= (3, 2): + pattern_re = '^' + base + pattern_re + else: + pattern_re = r'%s%s%s' % (start, base, pattern_re[len(start):]) + + return re.compile(pattern_re) + + def _glob_to_re(self, pattern): + """Translate a shell-like glob pattern to a regular expression. + + Return a string containing the regex. Differs from + 'fnmatch.translate()' in that '*' does not match "special characters" + (which are platform-specific). + """ + pattern_re = fnmatch.translate(pattern) + + # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which + # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix, + # and by extension they shouldn't match such "special characters" under + # any OS. So change all non-escaped dots in the RE to match any + # character except the special characters (currently: just os.sep). + sep = os.sep + if os.sep == '\\': + # we're using a regex to manipulate a regex, so we need + # to escape the backslash twice + sep = r'\\\\' + escaped = r'\1[^%s]' % sep + pattern_re = re.sub(r'((? y, + '!=': lambda x, y: x != y, + '<': lambda x, y: x < y, + '<=': lambda x, y: x == y or x < y, + '>': lambda x, y: x > y, + '>=': lambda x, y: x == y or x > y, + 'and': lambda x, y: x and y, + 'or': lambda x, y: x or y, + 'in': lambda x, y: x in y, + 'not in': lambda x, y: x not in y, + } + + def evaluate(self, expr, context): + """ + Evaluate a marker expression returned by the :func:`parse_requirement` + function in the specified context. + """ + if isinstance(expr, string_types): + if expr[0] in '\'"': + result = expr[1:-1] + else: + if expr not in context: + raise SyntaxError('unknown variable: %s' % expr) + result = context[expr] + else: + assert isinstance(expr, dict) + op = expr['op'] + if op not in self.operations: + raise NotImplementedError('op not implemented: %s' % op) + elhs = expr['lhs'] + erhs = expr['rhs'] + if _is_literal(expr['lhs']) and _is_literal(expr['rhs']): + raise SyntaxError('invalid comparison: %s %s %s' % (elhs, op, erhs)) + + lhs = self.evaluate(elhs, context) + rhs = self.evaluate(erhs, context) + result = self.operations[op](lhs, rhs) + return result + +def default_context(): + def format_full_version(info): + version = '%s.%s.%s' % (info.major, info.minor, info.micro) + kind = info.releaselevel + if kind != 'final': + version += kind[0] + str(info.serial) + return version + + if hasattr(sys, 'implementation'): + implementation_version = format_full_version(sys.implementation.version) + implementation_name = sys.implementation.name + else: + implementation_version = '0' + implementation_name = '' + + result = { + 'implementation_name': implementation_name, + 'implementation_version': implementation_version, + 'os_name': os.name, + 'platform_machine': platform.machine(), + 'platform_python_implementation': platform.python_implementation(), + 'platform_release': platform.release(), + 'platform_system': platform.system(), + 'platform_version': platform.version(), + 'platform_in_venv': str(in_venv()), + 'python_full_version': platform.python_version(), + 'python_version': platform.python_version()[:3], + 'sys_platform': sys.platform, + } + return result + +DEFAULT_CONTEXT = default_context() +del default_context + +evaluator = Evaluator() + +def interpret(marker, execution_context=None): + """ + Interpret a marker and return a result depending on environment. + + :param marker: The marker to interpret. + :type marker: str + :param execution_context: The context used for name lookup. + :type execution_context: mapping + """ + try: + expr, rest = parse_marker(marker) + except Exception as e: + raise SyntaxError('Unable to interpret marker syntax: %s: %s' % (marker, e)) + if rest and rest[0] != '#': + raise SyntaxError('unexpected trailing data in marker: %s: %s' % (marker, rest)) + context = dict(DEFAULT_CONTEXT) + if execution_context: + context.update(execution_context) + return evaluator.evaluate(expr, context) diff --git a/Lib/site-packages/pip/_vendor/distlib/metadata.py b/Lib/site-packages/pip/_vendor/distlib/metadata.py new file mode 100644 index 0000000..2d61378 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/metadata.py @@ -0,0 +1,1096 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +"""Implementation of the Metadata for Python packages PEPs. + +Supports all metadata formats (1.0, 1.1, 1.2, and 2.0 experimental). +""" +from __future__ import unicode_literals + +import codecs +from email import message_from_file +import json +import logging +import re + + +from . import DistlibException, __version__ +from .compat import StringIO, string_types, text_type +from .markers import interpret +from .util import extract_by_key, get_extras +from .version import get_scheme, PEP440_VERSION_RE + +logger = logging.getLogger(__name__) + + +class MetadataMissingError(DistlibException): + """A required metadata is missing""" + + +class MetadataConflictError(DistlibException): + """Attempt to read or write metadata fields that are conflictual.""" + + +class MetadataUnrecognizedVersionError(DistlibException): + """Unknown metadata version number.""" + + +class MetadataInvalidError(DistlibException): + """A metadata value is invalid""" + +# public API of this module +__all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION'] + +# Encoding used for the PKG-INFO files +PKG_INFO_ENCODING = 'utf-8' + +# preferred version. Hopefully will be changed +# to 1.2 once PEP 345 is supported everywhere +PKG_INFO_PREFERRED_VERSION = '1.1' + +_LINE_PREFIX_1_2 = re.compile('\n \\|') +_LINE_PREFIX_PRE_1_2 = re.compile('\n ') +_241_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License') + +_314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'License', 'Classifier', 'Download-URL', 'Obsoletes', + 'Provides', 'Requires') + +_314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier', + 'Download-URL') + +_345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External') + +_345_MARKERS = ('Provides-Dist', 'Requires-Dist', 'Requires-Python', + 'Obsoletes-Dist', 'Requires-External', 'Maintainer', + 'Maintainer-email', 'Project-URL') + +_426_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', + 'Supported-Platform', 'Summary', 'Description', + 'Keywords', 'Home-page', 'Author', 'Author-email', + 'Maintainer', 'Maintainer-email', 'License', + 'Classifier', 'Download-URL', 'Obsoletes-Dist', + 'Project-URL', 'Provides-Dist', 'Requires-Dist', + 'Requires-Python', 'Requires-External', 'Private-Version', + 'Obsoleted-By', 'Setup-Requires-Dist', 'Extension', + 'Provides-Extra') + +_426_MARKERS = ('Private-Version', 'Provides-Extra', 'Obsoleted-By', + 'Setup-Requires-Dist', 'Extension') + +# See issue #106: Sometimes 'Requires' and 'Provides' occur wrongly in +# the metadata. Include them in the tuple literal below to allow them +# (for now). +_566_FIELDS = _426_FIELDS + ('Description-Content-Type', + 'Requires', 'Provides') + +_566_MARKERS = ('Description-Content-Type',) + +_ALL_FIELDS = set() +_ALL_FIELDS.update(_241_FIELDS) +_ALL_FIELDS.update(_314_FIELDS) +_ALL_FIELDS.update(_345_FIELDS) +_ALL_FIELDS.update(_426_FIELDS) +_ALL_FIELDS.update(_566_FIELDS) + +EXTRA_RE = re.compile(r'''extra\s*==\s*("([^"]+)"|'([^']+)')''') + + +def _version2fieldlist(version): + if version == '1.0': + return _241_FIELDS + elif version == '1.1': + return _314_FIELDS + elif version == '1.2': + return _345_FIELDS + elif version in ('1.3', '2.1'): + return _345_FIELDS + _566_FIELDS + elif version == '2.0': + return _426_FIELDS + raise MetadataUnrecognizedVersionError(version) + + +def _best_version(fields): + """Detect the best version depending on the fields used.""" + def _has_marker(keys, markers): + for marker in markers: + if marker in keys: + return True + return False + + keys = [] + for key, value in fields.items(): + if value in ([], 'UNKNOWN', None): + continue + keys.append(key) + + possible_versions = ['1.0', '1.1', '1.2', '1.3', '2.0', '2.1'] + + # first let's try to see if a field is not part of one of the version + for key in keys: + if key not in _241_FIELDS and '1.0' in possible_versions: + possible_versions.remove('1.0') + logger.debug('Removed 1.0 due to %s', key) + if key not in _314_FIELDS and '1.1' in possible_versions: + possible_versions.remove('1.1') + logger.debug('Removed 1.1 due to %s', key) + if key not in _345_FIELDS and '1.2' in possible_versions: + possible_versions.remove('1.2') + logger.debug('Removed 1.2 due to %s', key) + if key not in _566_FIELDS and '1.3' in possible_versions: + possible_versions.remove('1.3') + logger.debug('Removed 1.3 due to %s', key) + if key not in _566_FIELDS and '2.1' in possible_versions: + if key != 'Description': # In 2.1, description allowed after headers + possible_versions.remove('2.1') + logger.debug('Removed 2.1 due to %s', key) + if key not in _426_FIELDS and '2.0' in possible_versions: + possible_versions.remove('2.0') + logger.debug('Removed 2.0 due to %s', key) + + # possible_version contains qualified versions + if len(possible_versions) == 1: + return possible_versions[0] # found ! + elif len(possible_versions) == 0: + logger.debug('Out of options - unknown metadata set: %s', fields) + raise MetadataConflictError('Unknown metadata set') + + # let's see if one unique marker is found + is_1_1 = '1.1' in possible_versions and _has_marker(keys, _314_MARKERS) + is_1_2 = '1.2' in possible_versions and _has_marker(keys, _345_MARKERS) + is_2_1 = '2.1' in possible_versions and _has_marker(keys, _566_MARKERS) + is_2_0 = '2.0' in possible_versions and _has_marker(keys, _426_MARKERS) + if int(is_1_1) + int(is_1_2) + int(is_2_1) + int(is_2_0) > 1: + raise MetadataConflictError('You used incompatible 1.1/1.2/2.0/2.1 fields') + + # we have the choice, 1.0, or 1.2, or 2.0 + # - 1.0 has a broken Summary field but works with all tools + # - 1.1 is to avoid + # - 1.2 fixes Summary but has little adoption + # - 2.0 adds more features and is very new + if not is_1_1 and not is_1_2 and not is_2_1 and not is_2_0: + # we couldn't find any specific marker + if PKG_INFO_PREFERRED_VERSION in possible_versions: + return PKG_INFO_PREFERRED_VERSION + if is_1_1: + return '1.1' + if is_1_2: + return '1.2' + if is_2_1: + return '2.1' + + return '2.0' + +_ATTR2FIELD = { + 'metadata_version': 'Metadata-Version', + 'name': 'Name', + 'version': 'Version', + 'platform': 'Platform', + 'supported_platform': 'Supported-Platform', + 'summary': 'Summary', + 'description': 'Description', + 'keywords': 'Keywords', + 'home_page': 'Home-page', + 'author': 'Author', + 'author_email': 'Author-email', + 'maintainer': 'Maintainer', + 'maintainer_email': 'Maintainer-email', + 'license': 'License', + 'classifier': 'Classifier', + 'download_url': 'Download-URL', + 'obsoletes_dist': 'Obsoletes-Dist', + 'provides_dist': 'Provides-Dist', + 'requires_dist': 'Requires-Dist', + 'setup_requires_dist': 'Setup-Requires-Dist', + 'requires_python': 'Requires-Python', + 'requires_external': 'Requires-External', + 'requires': 'Requires', + 'provides': 'Provides', + 'obsoletes': 'Obsoletes', + 'project_url': 'Project-URL', + 'private_version': 'Private-Version', + 'obsoleted_by': 'Obsoleted-By', + 'extension': 'Extension', + 'provides_extra': 'Provides-Extra', +} + +_PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist') +_VERSIONS_FIELDS = ('Requires-Python',) +_VERSION_FIELDS = ('Version',) +_LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes', + 'Requires', 'Provides', 'Obsoletes-Dist', + 'Provides-Dist', 'Requires-Dist', 'Requires-External', + 'Project-URL', 'Supported-Platform', 'Setup-Requires-Dist', + 'Provides-Extra', 'Extension') +_LISTTUPLEFIELDS = ('Project-URL',) + +_ELEMENTSFIELD = ('Keywords',) + +_UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') + +_MISSING = object() + +_FILESAFE = re.compile('[^A-Za-z0-9.]+') + + +def _get_name_and_version(name, version, for_filename=False): + """Return the distribution name with version. + + If for_filename is true, return a filename-escaped form.""" + if for_filename: + # For both name and version any runs of non-alphanumeric or '.' + # characters are replaced with a single '-'. Additionally any + # spaces in the version string become '.' + name = _FILESAFE.sub('-', name) + version = _FILESAFE.sub('-', version.replace(' ', '.')) + return '%s-%s' % (name, version) + + +class LegacyMetadata(object): + """The legacy metadata of a release. + + Supports versions 1.0, 1.1 and 1.2 (auto-detected). You can + instantiate the class with one of these arguments (or none): + - *path*, the path to a metadata file + - *fileobj* give a file-like object with metadata as content + - *mapping* is a dict-like object + - *scheme* is a version scheme name + """ + # TODO document the mapping API and UNKNOWN default key + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._fields = {} + self.requires_files = [] + self._dependencies = None + self.scheme = scheme + if path is not None: + self.read(path) + elif fileobj is not None: + self.read_file(fileobj) + elif mapping is not None: + self.update(mapping) + self.set_metadata_version() + + def set_metadata_version(self): + self._fields['Metadata-Version'] = _best_version(self._fields) + + def _write_field(self, fileobj, name, value): + fileobj.write('%s: %s\n' % (name, value)) + + def __getitem__(self, name): + return self.get(name) + + def __setitem__(self, name, value): + return self.set(name, value) + + def __delitem__(self, name): + field_name = self._convert_name(name) + try: + del self._fields[field_name] + except KeyError: + raise KeyError(name) + + def __contains__(self, name): + return (name in self._fields or + self._convert_name(name) in self._fields) + + def _convert_name(self, name): + if name in _ALL_FIELDS: + return name + name = name.replace('-', '_').lower() + return _ATTR2FIELD.get(name, name) + + def _default_value(self, name): + if name in _LISTFIELDS or name in _ELEMENTSFIELD: + return [] + return 'UNKNOWN' + + def _remove_line_prefix(self, value): + if self.metadata_version in ('1.0', '1.1'): + return _LINE_PREFIX_PRE_1_2.sub('\n', value) + else: + return _LINE_PREFIX_1_2.sub('\n', value) + + def __getattr__(self, name): + if name in _ATTR2FIELD: + return self[name] + raise AttributeError(name) + + # + # Public API + # + +# dependencies = property(_get_dependencies, _set_dependencies) + + def get_fullname(self, filesafe=False): + """Return the distribution name with version. + + If filesafe is true, return a filename-escaped form.""" + return _get_name_and_version(self['Name'], self['Version'], filesafe) + + def is_field(self, name): + """return True if name is a valid metadata key""" + name = self._convert_name(name) + return name in _ALL_FIELDS + + def is_multi_field(self, name): + name = self._convert_name(name) + return name in _LISTFIELDS + + def read(self, filepath): + """Read the metadata values from a file path.""" + fp = codecs.open(filepath, 'r', encoding='utf-8') + try: + self.read_file(fp) + finally: + fp.close() + + def read_file(self, fileob): + """Read the metadata values from a file object.""" + msg = message_from_file(fileob) + self._fields['Metadata-Version'] = msg['metadata-version'] + + # When reading, get all the fields we can + for field in _ALL_FIELDS: + if field not in msg: + continue + if field in _LISTFIELDS: + # we can have multiple lines + values = msg.get_all(field) + if field in _LISTTUPLEFIELDS and values is not None: + values = [tuple(value.split(',')) for value in values] + self.set(field, values) + else: + # single line + value = msg[field] + if value is not None and value != 'UNKNOWN': + self.set(field, value) + # logger.debug('Attempting to set metadata for %s', self) + # self.set_metadata_version() + + def write(self, filepath, skip_unknown=False): + """Write the metadata fields to filepath.""" + fp = codecs.open(filepath, 'w', encoding='utf-8') + try: + self.write_file(fp, skip_unknown) + finally: + fp.close() + + def write_file(self, fileobject, skip_unknown=False): + """Write the PKG-INFO format data to a file object.""" + self.set_metadata_version() + + for field in _version2fieldlist(self['Metadata-Version']): + values = self.get(field) + if skip_unknown and values in ('UNKNOWN', [], ['UNKNOWN']): + continue + if field in _ELEMENTSFIELD: + self._write_field(fileobject, field, ','.join(values)) + continue + if field not in _LISTFIELDS: + if field == 'Description': + if self.metadata_version in ('1.0', '1.1'): + values = values.replace('\n', '\n ') + else: + values = values.replace('\n', '\n |') + values = [values] + + if field in _LISTTUPLEFIELDS: + values = [','.join(value) for value in values] + + for value in values: + self._write_field(fileobject, field, value) + + def update(self, other=None, **kwargs): + """Set metadata values from the given iterable `other` and kwargs. + + Behavior is like `dict.update`: If `other` has a ``keys`` method, + they are looped over and ``self[key]`` is assigned ``other[key]``. + Else, ``other`` is an iterable of ``(key, value)`` iterables. + + Keys that don't match a metadata field or that have an empty value are + dropped. + """ + def _set(key, value): + if key in _ATTR2FIELD and value: + self.set(self._convert_name(key), value) + + if not other: + # other is None or empty container + pass + elif hasattr(other, 'keys'): + for k in other.keys(): + _set(k, other[k]) + else: + for k, v in other: + _set(k, v) + + if kwargs: + for k, v in kwargs.items(): + _set(k, v) + + def set(self, name, value): + """Control then set a metadata field.""" + name = self._convert_name(name) + + if ((name in _ELEMENTSFIELD or name == 'Platform') and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [v.strip() for v in value.split(',')] + else: + value = [] + elif (name in _LISTFIELDS and + not isinstance(value, (list, tuple))): + if isinstance(value, string_types): + value = [value] + else: + value = [] + + if logger.isEnabledFor(logging.WARNING): + project_name = self['Name'] + + scheme = get_scheme(self.scheme) + if name in _PREDICATE_FIELDS and value is not None: + for v in value: + # check that the values are valid + if not scheme.is_valid_matcher(v.split(';')[0]): + logger.warning( + "'%s': '%s' is not valid (field '%s')", + project_name, v, name) + # FIXME this rejects UNKNOWN, is that right? + elif name in _VERSIONS_FIELDS and value is not None: + if not scheme.is_valid_constraint_list(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + elif name in _VERSION_FIELDS and value is not None: + if not scheme.is_valid_version(value): + logger.warning("'%s': '%s' is not a valid version (field '%s')", + project_name, value, name) + + if name in _UNICODEFIELDS: + if name == 'Description': + value = self._remove_line_prefix(value) + + self._fields[name] = value + + def get(self, name, default=_MISSING): + """Get a metadata field.""" + name = self._convert_name(name) + if name not in self._fields: + if default is _MISSING: + default = self._default_value(name) + return default + if name in _UNICODEFIELDS: + value = self._fields[name] + return value + elif name in _LISTFIELDS: + value = self._fields[name] + if value is None: + return [] + res = [] + for val in value: + if name not in _LISTTUPLEFIELDS: + res.append(val) + else: + # That's for Project-URL + res.append((val[0], val[1])) + return res + + elif name in _ELEMENTSFIELD: + value = self._fields[name] + if isinstance(value, string_types): + return value.split(',') + return self._fields[name] + + def check(self, strict=False): + """Check if the metadata is compliant. If strict is True then raise if + no Name or Version are provided""" + self.set_metadata_version() + + # XXX should check the versions (if the file was loaded) + missing, warnings = [], [] + + for attr in ('Name', 'Version'): # required by PEP 345 + if attr not in self: + missing.append(attr) + + if strict and missing != []: + msg = 'missing required metadata: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + + for attr in ('Home-page', 'Author'): + if attr not in self: + missing.append(attr) + + # checking metadata 1.2 (XXX needs to check 1.1, 1.0) + if self['Metadata-Version'] != '1.2': + return missing, warnings + + scheme = get_scheme(self.scheme) + + def are_valid_constraints(value): + for v in value: + if not scheme.is_valid_matcher(v.split(';')[0]): + return False + return True + + for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints), + (_VERSIONS_FIELDS, + scheme.is_valid_constraint_list), + (_VERSION_FIELDS, + scheme.is_valid_version)): + for field in fields: + value = self.get(field, None) + if value is not None and not controller(value): + warnings.append("Wrong value for '%s': %s" % (field, value)) + + return missing, warnings + + def todict(self, skip_missing=False): + """Return fields as a dict. + + Field names will be converted to use the underscore-lowercase style + instead of hyphen-mixed case (i.e. home_page instead of Home-page). + """ + self.set_metadata_version() + + mapping_1_0 = ( + ('metadata_version', 'Metadata-Version'), + ('name', 'Name'), + ('version', 'Version'), + ('summary', 'Summary'), + ('home_page', 'Home-page'), + ('author', 'Author'), + ('author_email', 'Author-email'), + ('license', 'License'), + ('description', 'Description'), + ('keywords', 'Keywords'), + ('platform', 'Platform'), + ('classifiers', 'Classifier'), + ('download_url', 'Download-URL'), + ) + + data = {} + for key, field_name in mapping_1_0: + if not skip_missing or field_name in self._fields: + data[key] = self[field_name] + + if self['Metadata-Version'] == '1.2': + mapping_1_2 = ( + ('requires_dist', 'Requires-Dist'), + ('requires_python', 'Requires-Python'), + ('requires_external', 'Requires-External'), + ('provides_dist', 'Provides-Dist'), + ('obsoletes_dist', 'Obsoletes-Dist'), + ('project_url', 'Project-URL'), + ('maintainer', 'Maintainer'), + ('maintainer_email', 'Maintainer-email'), + ) + for key, field_name in mapping_1_2: + if not skip_missing or field_name in self._fields: + if key != 'project_url': + data[key] = self[field_name] + else: + data[key] = [','.join(u) for u in self[field_name]] + + elif self['Metadata-Version'] == '1.1': + mapping_1_1 = ( + ('provides', 'Provides'), + ('requires', 'Requires'), + ('obsoletes', 'Obsoletes'), + ) + for key, field_name in mapping_1_1: + if not skip_missing or field_name in self._fields: + data[key] = self[field_name] + + return data + + def add_requirements(self, requirements): + if self['Metadata-Version'] == '1.1': + # we can't have 1.1 metadata *and* Setuptools requires + for field in ('Obsoletes', 'Requires', 'Provides'): + if field in self: + del self[field] + self['Requires-Dist'] += requirements + + # Mapping API + # TODO could add iter* variants + + def keys(self): + return list(_version2fieldlist(self['Metadata-Version'])) + + def __iter__(self): + for key in self.keys(): + yield key + + def values(self): + return [self[key] for key in self.keys()] + + def items(self): + return [(key, self[key]) for key in self.keys()] + + def __repr__(self): + return '<%s %s %s>' % (self.__class__.__name__, self.name, + self.version) + + +METADATA_FILENAME = 'pydist.json' +WHEEL_METADATA_FILENAME = 'metadata.json' +LEGACY_METADATA_FILENAME = 'METADATA' + + +class Metadata(object): + """ + The metadata of a release. This implementation uses 2.0 (JSON) + metadata where possible. If not possible, it wraps a LegacyMetadata + instance which handles the key-value metadata format. + """ + + METADATA_VERSION_MATCHER = re.compile(r'^\d+(\.\d+)*$') + + NAME_MATCHER = re.compile('^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$', re.I) + + VERSION_MATCHER = PEP440_VERSION_RE + + SUMMARY_MATCHER = re.compile('.{1,2047}') + + METADATA_VERSION = '2.0' + + GENERATOR = 'distlib (%s)' % __version__ + + MANDATORY_KEYS = { + 'name': (), + 'version': (), + 'summary': ('legacy',), + } + + INDEX_KEYS = ('name version license summary description author ' + 'author_email keywords platform home_page classifiers ' + 'download_url') + + DEPENDENCY_KEYS = ('extras run_requires test_requires build_requires ' + 'dev_requires provides meta_requires obsoleted_by ' + 'supports_environments') + + SYNTAX_VALIDATORS = { + 'metadata_version': (METADATA_VERSION_MATCHER, ()), + 'name': (NAME_MATCHER, ('legacy',)), + 'version': (VERSION_MATCHER, ('legacy',)), + 'summary': (SUMMARY_MATCHER, ('legacy',)), + } + + __slots__ = ('_legacy', '_data', 'scheme') + + def __init__(self, path=None, fileobj=None, mapping=None, + scheme='default'): + if [path, fileobj, mapping].count(None) < 2: + raise TypeError('path, fileobj and mapping are exclusive') + self._legacy = None + self._data = None + self.scheme = scheme + #import pdb; pdb.set_trace() + if mapping is not None: + try: + self._validate_mapping(mapping, scheme) + self._data = mapping + except MetadataUnrecognizedVersionError: + self._legacy = LegacyMetadata(mapping=mapping, scheme=scheme) + self.validate() + else: + data = None + if path: + with open(path, 'rb') as f: + data = f.read() + elif fileobj: + data = fileobj.read() + if data is None: + # Initialised with no args - to be added + self._data = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + else: + if not isinstance(data, text_type): + data = data.decode('utf-8') + try: + self._data = json.loads(data) + self._validate_mapping(self._data, scheme) + except ValueError: + # Note: MetadataUnrecognizedVersionError does not + # inherit from ValueError (it's a DistlibException, + # which should not inherit from ValueError). + # The ValueError comes from the json.load - if that + # succeeds and we get a validation error, we want + # that to propagate + self._legacy = LegacyMetadata(fileobj=StringIO(data), + scheme=scheme) + self.validate() + + common_keys = set(('name', 'version', 'license', 'keywords', 'summary')) + + none_list = (None, list) + none_dict = (None, dict) + + mapped_keys = { + 'run_requires': ('Requires-Dist', list), + 'build_requires': ('Setup-Requires-Dist', list), + 'dev_requires': none_list, + 'test_requires': none_list, + 'meta_requires': none_list, + 'extras': ('Provides-Extra', list), + 'modules': none_list, + 'namespaces': none_list, + 'exports': none_dict, + 'commands': none_dict, + 'classifiers': ('Classifier', list), + 'source_url': ('Download-URL', None), + 'metadata_version': ('Metadata-Version', None), + } + + del none_list, none_dict + + def __getattribute__(self, key): + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, maker = mapped[key] + if self._legacy: + if lk is None: + result = None if maker is None else maker() + else: + result = self._legacy.get(lk) + else: + value = None if maker is None else maker() + if key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + result = self._data.get(key, value) + else: + # special cases for PEP 459 + sentinel = object() + result = sentinel + d = self._data.get('extensions') + if d: + if key == 'commands': + result = d.get('python.commands', value) + elif key == 'classifiers': + d = d.get('python.details') + if d: + result = d.get(key, value) + else: + d = d.get('python.exports') + if not d: + d = self._data.get('python.exports') + if d: + result = d.get(key, value) + if result is sentinel: + result = value + elif key not in common: + result = object.__getattribute__(self, key) + elif self._legacy: + result = self._legacy.get(key) + else: + result = self._data.get(key) + return result + + def _validate_value(self, key, value, scheme=None): + if key in self.SYNTAX_VALIDATORS: + pattern, exclusions = self.SYNTAX_VALIDATORS[key] + if (scheme or self.scheme) not in exclusions: + m = pattern.match(value) + if not m: + raise MetadataInvalidError("'%s' is an invalid value for " + "the '%s' property" % (value, + key)) + + def __setattr__(self, key, value): + self._validate_value(key, value) + common = object.__getattribute__(self, 'common_keys') + mapped = object.__getattribute__(self, 'mapped_keys') + if key in mapped: + lk, _ = mapped[key] + if self._legacy: + if lk is None: + raise NotImplementedError + self._legacy[lk] = value + elif key not in ('commands', 'exports', 'modules', 'namespaces', + 'classifiers'): + self._data[key] = value + else: + # special cases for PEP 459 + d = self._data.setdefault('extensions', {}) + if key == 'commands': + d['python.commands'] = value + elif key == 'classifiers': + d = d.setdefault('python.details', {}) + d[key] = value + else: + d = d.setdefault('python.exports', {}) + d[key] = value + elif key not in common: + object.__setattr__(self, key, value) + else: + if key == 'keywords': + if isinstance(value, string_types): + value = value.strip() + if value: + value = value.split() + else: + value = [] + if self._legacy: + self._legacy[key] = value + else: + self._data[key] = value + + @property + def name_and_version(self): + return _get_name_and_version(self.name, self.version, True) + + @property + def provides(self): + if self._legacy: + result = self._legacy['Provides-Dist'] + else: + result = self._data.setdefault('provides', []) + s = '%s (%s)' % (self.name, self.version) + if s not in result: + result.append(s) + return result + + @provides.setter + def provides(self, value): + if self._legacy: + self._legacy['Provides-Dist'] = value + else: + self._data['provides'] = value + + def get_requirements(self, reqts, extras=None, env=None): + """ + Base method to get dependencies, given a set of extras + to satisfy and an optional environment context. + :param reqts: A list of sometimes-wanted dependencies, + perhaps dependent on extras and environment. + :param extras: A list of optional components being requested. + :param env: An optional environment for marker evaluation. + """ + if self._legacy: + result = reqts + else: + result = [] + extras = get_extras(extras or [], self.extras) + for d in reqts: + if 'extra' not in d and 'environment' not in d: + # unconditional + include = True + else: + if 'extra' not in d: + # Not extra-dependent - only environment-dependent + include = True + else: + include = d.get('extra') in extras + if include: + # Not excluded because of extras, check environment + marker = d.get('environment') + if marker: + include = interpret(marker, env) + if include: + result.extend(d['requires']) + for key in ('build', 'dev', 'test'): + e = ':%s:' % key + if e in extras: + extras.remove(e) + # A recursive call, but it should terminate since 'test' + # has been removed from the extras + reqts = self._data.get('%s_requires' % key, []) + result.extend(self.get_requirements(reqts, extras=extras, + env=env)) + return result + + @property + def dictionary(self): + if self._legacy: + return self._from_legacy() + return self._data + + @property + def dependencies(self): + if self._legacy: + raise NotImplementedError + else: + return extract_by_key(self._data, self.DEPENDENCY_KEYS) + + @dependencies.setter + def dependencies(self, value): + if self._legacy: + raise NotImplementedError + else: + self._data.update(value) + + def _validate_mapping(self, mapping, scheme): + if mapping.get('metadata_version') != self.METADATA_VERSION: + raise MetadataUnrecognizedVersionError() + missing = [] + for key, exclusions in self.MANDATORY_KEYS.items(): + if key not in mapping: + if scheme not in exclusions: + missing.append(key) + if missing: + msg = 'Missing metadata items: %s' % ', '.join(missing) + raise MetadataMissingError(msg) + for k, v in mapping.items(): + self._validate_value(k, v, scheme) + + def validate(self): + if self._legacy: + missing, warnings = self._legacy.check(True) + if missing or warnings: + logger.warning('Metadata: missing: %s, warnings: %s', + missing, warnings) + else: + self._validate_mapping(self._data, self.scheme) + + def todict(self): + if self._legacy: + return self._legacy.todict(True) + else: + result = extract_by_key(self._data, self.INDEX_KEYS) + return result + + def _from_legacy(self): + assert self._legacy and not self._data + result = { + 'metadata_version': self.METADATA_VERSION, + 'generator': self.GENERATOR, + } + lmd = self._legacy.todict(True) # skip missing ones + for k in ('name', 'version', 'license', 'summary', 'description', + 'classifier'): + if k in lmd: + if k == 'classifier': + nk = 'classifiers' + else: + nk = k + result[nk] = lmd[k] + kw = lmd.get('Keywords', []) + if kw == ['']: + kw = [] + result['keywords'] = kw + keys = (('requires_dist', 'run_requires'), + ('setup_requires_dist', 'build_requires')) + for ok, nk in keys: + if ok in lmd and lmd[ok]: + result[nk] = [{'requires': lmd[ok]}] + result['provides'] = self.provides + author = {} + maintainer = {} + return result + + LEGACY_MAPPING = { + 'name': 'Name', + 'version': 'Version', + 'license': 'License', + 'summary': 'Summary', + 'description': 'Description', + 'classifiers': 'Classifier', + } + + def _to_legacy(self): + def process_entries(entries): + reqts = set() + for e in entries: + extra = e.get('extra') + env = e.get('environment') + rlist = e['requires'] + for r in rlist: + if not env and not extra: + reqts.add(r) + else: + marker = '' + if extra: + marker = 'extra == "%s"' % extra + if env: + if marker: + marker = '(%s) and %s' % (env, marker) + else: + marker = env + reqts.add(';'.join((r, marker))) + return reqts + + assert self._data and not self._legacy + result = LegacyMetadata() + nmd = self._data + for nk, ok in self.LEGACY_MAPPING.items(): + if nk in nmd: + result[ok] = nmd[nk] + r1 = process_entries(self.run_requires + self.meta_requires) + r2 = process_entries(self.build_requires + self.dev_requires) + if self.extras: + result['Provides-Extra'] = sorted(self.extras) + result['Requires-Dist'] = sorted(r1) + result['Setup-Requires-Dist'] = sorted(r2) + # TODO: other fields such as contacts + return result + + def write(self, path=None, fileobj=None, legacy=False, skip_unknown=True): + if [path, fileobj].count(None) != 1: + raise ValueError('Exactly one of path and fileobj is needed') + self.validate() + if legacy: + if self._legacy: + legacy_md = self._legacy + else: + legacy_md = self._to_legacy() + if path: + legacy_md.write(path, skip_unknown=skip_unknown) + else: + legacy_md.write_file(fileobj, skip_unknown=skip_unknown) + else: + if self._legacy: + d = self._from_legacy() + else: + d = self._data + if fileobj: + json.dump(d, fileobj, ensure_ascii=True, indent=2, + sort_keys=True) + else: + with codecs.open(path, 'w', 'utf-8') as f: + json.dump(d, f, ensure_ascii=True, indent=2, + sort_keys=True) + + def add_requirements(self, requirements): + if self._legacy: + self._legacy.add_requirements(requirements) + else: + run_requires = self._data.setdefault('run_requires', []) + always = None + for entry in run_requires: + if 'environment' not in entry and 'extra' not in entry: + always = entry + break + if always is None: + always = { 'requires': requirements } + run_requires.insert(0, always) + else: + rset = set(always['requires']) | set(requirements) + always['requires'] = sorted(rset) + + def __repr__(self): + name = self.name or '(no name)' + version = self.version or 'no version' + return '<%s %s %s (%s)>' % (self.__class__.__name__, + self.metadata_version, name, version) diff --git a/Lib/site-packages/pip/_vendor/distlib/resources.py b/Lib/site-packages/pip/_vendor/distlib/resources.py new file mode 100644 index 0000000..1884016 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/resources.py @@ -0,0 +1,355 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2017 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from __future__ import unicode_literals + +import bisect +import io +import logging +import os +import pkgutil +import shutil +import sys +import types +import zipimport + +from . import DistlibException +from .util import cached_property, get_cache_base, path_to_cache_dir, Cache + +logger = logging.getLogger(__name__) + + +cache = None # created when needed + + +class ResourceCache(Cache): + def __init__(self, base=None): + if base is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('resource-cache')) + super(ResourceCache, self).__init__(base) + + def is_stale(self, resource, path): + """ + Is the cache stale for the given resource? + + :param resource: The :class:`Resource` being cached. + :param path: The path of the resource in the cache. + :return: True if the cache is stale. + """ + # Cache invalidation is a hard problem :-) + return True + + def get(self, resource): + """ + Get a resource into the cache, + + :param resource: A :class:`Resource` instance. + :return: The pathname of the resource in the cache. + """ + prefix, path = resource.finder.get_cache_info(resource) + if prefix is None: + result = path + else: + result = os.path.join(self.base, self.prefix_to_dir(prefix), path) + dirname = os.path.dirname(result) + if not os.path.isdir(dirname): + os.makedirs(dirname) + if not os.path.exists(result): + stale = True + else: + stale = self.is_stale(resource, path) + if stale: + # write the bytes of the resource to the cache location + with open(result, 'wb') as f: + f.write(resource.bytes) + return result + + +class ResourceBase(object): + def __init__(self, finder, name): + self.finder = finder + self.name = name + + +class Resource(ResourceBase): + """ + A class representing an in-package resource, such as a data file. This is + not normally instantiated by user code, but rather by a + :class:`ResourceFinder` which manages the resource. + """ + is_container = False # Backwards compatibility + + def as_stream(self): + """ + Get the resource as a stream. + + This is not a property to make it obvious that it returns a new stream + each time. + """ + return self.finder.get_stream(self) + + @cached_property + def file_path(self): + global cache + if cache is None: + cache = ResourceCache() + return cache.get(self) + + @cached_property + def bytes(self): + return self.finder.get_bytes(self) + + @cached_property + def size(self): + return self.finder.get_size(self) + + +class ResourceContainer(ResourceBase): + is_container = True # Backwards compatibility + + @cached_property + def resources(self): + return self.finder.get_resources(self) + + +class ResourceFinder(object): + """ + Resource finder for file system resources. + """ + + if sys.platform.startswith('java'): + skipped_extensions = ('.pyc', '.pyo', '.class') + else: + skipped_extensions = ('.pyc', '.pyo') + + def __init__(self, module): + self.module = module + self.loader = getattr(module, '__loader__', None) + self.base = os.path.dirname(getattr(module, '__file__', '')) + + def _adjust_path(self, path): + return os.path.realpath(path) + + def _make_path(self, resource_name): + # Issue #50: need to preserve type of path on Python 2.x + # like os.path._get_sep + if isinstance(resource_name, bytes): # should only happen on 2.x + sep = b'/' + else: + sep = '/' + parts = resource_name.split(sep) + parts.insert(0, self.base) + result = os.path.join(*parts) + return self._adjust_path(result) + + def _find(self, path): + return os.path.exists(path) + + def get_cache_info(self, resource): + return None, resource.path + + def find(self, resource_name): + path = self._make_path(resource_name) + if not self._find(path): + result = None + else: + if self._is_directory(path): + result = ResourceContainer(self, resource_name) + else: + result = Resource(self, resource_name) + result.path = path + return result + + def get_stream(self, resource): + return open(resource.path, 'rb') + + def get_bytes(self, resource): + with open(resource.path, 'rb') as f: + return f.read() + + def get_size(self, resource): + return os.path.getsize(resource.path) + + def get_resources(self, resource): + def allowed(f): + return (f != '__pycache__' and not + f.endswith(self.skipped_extensions)) + return set([f for f in os.listdir(resource.path) if allowed(f)]) + + def is_container(self, resource): + return self._is_directory(resource.path) + + _is_directory = staticmethod(os.path.isdir) + + def iterator(self, resource_name): + resource = self.find(resource_name) + if resource is not None: + todo = [resource] + while todo: + resource = todo.pop(0) + yield resource + if resource.is_container: + rname = resource.name + for name in resource.resources: + if not rname: + new_name = name + else: + new_name = '/'.join([rname, name]) + child = self.find(new_name) + if child.is_container: + todo.append(child) + else: + yield child + + +class ZipResourceFinder(ResourceFinder): + """ + Resource finder for resources in .zip files. + """ + def __init__(self, module): + super(ZipResourceFinder, self).__init__(module) + archive = self.loader.archive + self.prefix_len = 1 + len(archive) + # PyPy doesn't have a _files attr on zipimporter, and you can't set one + if hasattr(self.loader, '_files'): + self._files = self.loader._files + else: + self._files = zipimport._zip_directory_cache[archive] + self.index = sorted(self._files) + + def _adjust_path(self, path): + return path + + def _find(self, path): + path = path[self.prefix_len:] + if path in self._files: + result = True + else: + if path and path[-1] != os.sep: + path = path + os.sep + i = bisect.bisect(self.index, path) + try: + result = self.index[i].startswith(path) + except IndexError: + result = False + if not result: + logger.debug('_find failed: %r %r', path, self.loader.prefix) + else: + logger.debug('_find worked: %r %r', path, self.loader.prefix) + return result + + def get_cache_info(self, resource): + prefix = self.loader.archive + path = resource.path[1 + len(prefix):] + return prefix, path + + def get_bytes(self, resource): + return self.loader.get_data(resource.path) + + def get_stream(self, resource): + return io.BytesIO(self.get_bytes(resource)) + + def get_size(self, resource): + path = resource.path[self.prefix_len:] + return self._files[path][3] + + def get_resources(self, resource): + path = resource.path[self.prefix_len:] + if path and path[-1] != os.sep: + path += os.sep + plen = len(path) + result = set() + i = bisect.bisect(self.index, path) + while i < len(self.index): + if not self.index[i].startswith(path): + break + s = self.index[i][plen:] + result.add(s.split(os.sep, 1)[0]) # only immediate children + i += 1 + return result + + def _is_directory(self, path): + path = path[self.prefix_len:] + if path and path[-1] != os.sep: + path += os.sep + i = bisect.bisect(self.index, path) + try: + result = self.index[i].startswith(path) + except IndexError: + result = False + return result + +_finder_registry = { + type(None): ResourceFinder, + zipimport.zipimporter: ZipResourceFinder +} + +try: + # In Python 3.6, _frozen_importlib -> _frozen_importlib_external + try: + import _frozen_importlib_external as _fi + except ImportError: + import _frozen_importlib as _fi + _finder_registry[_fi.SourceFileLoader] = ResourceFinder + _finder_registry[_fi.FileFinder] = ResourceFinder + del _fi +except (ImportError, AttributeError): + pass + + +def register_finder(loader, finder_maker): + _finder_registry[type(loader)] = finder_maker + +_finder_cache = {} + + +def finder(package): + """ + Return a resource finder for a package. + :param package: The name of the package. + :return: A :class:`ResourceFinder` instance for the package. + """ + if package in _finder_cache: + result = _finder_cache[package] + else: + if package not in sys.modules: + __import__(package) + module = sys.modules[package] + path = getattr(module, '__path__', None) + if path is None: + raise DistlibException('You cannot get a finder for a module, ' + 'only for a package') + loader = getattr(module, '__loader__', None) + finder_maker = _finder_registry.get(type(loader)) + if finder_maker is None: + raise DistlibException('Unable to locate finder for %r' % package) + result = finder_maker(module) + _finder_cache[package] = result + return result + + +_dummy_module = types.ModuleType(str('__dummy__')) + + +def finder_for_path(path): + """ + Return a resource finder for a path, which should represent a container. + + :param path: The path. + :return: A :class:`ResourceFinder` instance for the path. + """ + result = None + # calls any path hooks, gets importer into cache + pkgutil.get_importer(path) + loader = sys.path_importer_cache.get(path) + finder = _finder_registry.get(type(loader)) + if finder: + module = _dummy_module + module.__file__ = os.path.join(path, '') + module.__loader__ = loader + result = finder(module) + return result diff --git a/Lib/site-packages/pip/_vendor/distlib/scripts.py b/Lib/site-packages/pip/_vendor/distlib/scripts.py new file mode 100644 index 0000000..5185974 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/scripts.py @@ -0,0 +1,416 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2013-2015 Vinay Sajip. +# Licensed to the Python Software Foundation under a contributor agreement. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +from io import BytesIO +import logging +import os +import re +import struct +import sys + +from .compat import sysconfig, detect_encoding, ZipFile +from .resources import finder +from .util import (FileOperator, get_export_entry, convert_path, + get_executable, in_venv) + +logger = logging.getLogger(__name__) + +_DEFAULT_MANIFEST = ''' + + + + + + + + + + + + +'''.strip() + +# check if Python is called on the first line with this expression +FIRST_LINE_RE = re.compile(b'^#!.*pythonw?[0-9.]*([ \t].*)?$') +SCRIPT_TEMPLATE = r'''# -*- coding: utf-8 -*- +import re +import sys +from %(module)s import %(import_name)s +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(%(func)s()) +''' + + +def _enquote_executable(executable): + if ' ' in executable: + # make sure we quote only the executable in case of env + # for example /usr/bin/env "/dir with spaces/bin/jython" + # instead of "/usr/bin/env /dir with spaces/bin/jython" + # otherwise whole + if executable.startswith('/usr/bin/env '): + env, _executable = executable.split(' ', 1) + if ' ' in _executable and not _executable.startswith('"'): + executable = '%s "%s"' % (env, _executable) + else: + if not executable.startswith('"'): + executable = '"%s"' % executable + return executable + + +class ScriptMaker(object): + """ + A class to copy or create scripts from source scripts or callable + specifications. + """ + script_template = SCRIPT_TEMPLATE + + executable = None # for shebangs + + def __init__(self, source_dir, target_dir, add_launchers=True, + dry_run=False, fileop=None): + self.source_dir = source_dir + self.target_dir = target_dir + self.add_launchers = add_launchers + self.force = False + self.clobber = False + # It only makes sense to set mode bits on POSIX. + self.set_mode = (os.name == 'posix') or (os.name == 'java' and + os._name == 'posix') + self.variants = set(('', 'X.Y')) + self._fileop = fileop or FileOperator(dry_run) + + self._is_nt = os.name == 'nt' or ( + os.name == 'java' and os._name == 'nt') + + def _get_alternate_executable(self, executable, options): + if options.get('gui', False) and self._is_nt: # pragma: no cover + dn, fn = os.path.split(executable) + fn = fn.replace('python', 'pythonw') + executable = os.path.join(dn, fn) + return executable + + if sys.platform.startswith('java'): # pragma: no cover + def _is_shell(self, executable): + """ + Determine if the specified executable is a script + (contains a #! line) + """ + try: + with open(executable) as fp: + return fp.read(2) == '#!' + except (OSError, IOError): + logger.warning('Failed to open %s', executable) + return False + + def _fix_jython_executable(self, executable): + if self._is_shell(executable): + # Workaround for Jython is not needed on Linux systems. + import java + + if java.lang.System.getProperty('os.name') == 'Linux': + return executable + elif executable.lower().endswith('jython.exe'): + # Use wrapper exe for Jython on Windows + return executable + return '/usr/bin/env %s' % executable + + def _build_shebang(self, executable, post_interp): + """ + Build a shebang line. In the simple case (on Windows, or a shebang line + which is not too long or contains spaces) use a simple formulation for + the shebang. Otherwise, use /bin/sh as the executable, with a contrived + shebang which allows the script to run either under Python or sh, using + suitable quoting. Thanks to Harald Nordgren for his input. + + See also: http://www.in-ulm.de/~mascheck/various/shebang/#length + https://hg.mozilla.org/mozilla-central/file/tip/mach + """ + if os.name != 'posix': + simple_shebang = True + else: + # Add 3 for '#!' prefix and newline suffix. + shebang_length = len(executable) + len(post_interp) + 3 + if sys.platform == 'darwin': + max_shebang_length = 512 + else: + max_shebang_length = 127 + simple_shebang = ((b' ' not in executable) and + (shebang_length <= max_shebang_length)) + + if simple_shebang: + result = b'#!' + executable + post_interp + b'\n' + else: + result = b'#!/bin/sh\n' + result += b"'''exec' " + executable + post_interp + b' "$0" "$@"\n' + result += b"' '''" + return result + + def _get_shebang(self, encoding, post_interp=b'', options=None): + enquote = True + if self.executable: + executable = self.executable + enquote = False # assume this will be taken care of + elif not sysconfig.is_python_build(): + executable = get_executable() + elif in_venv(): # pragma: no cover + executable = os.path.join(sysconfig.get_path('scripts'), + 'python%s' % sysconfig.get_config_var('EXE')) + else: # pragma: no cover + executable = os.path.join( + sysconfig.get_config_var('BINDIR'), + 'python%s%s' % (sysconfig.get_config_var('VERSION'), + sysconfig.get_config_var('EXE'))) + if options: + executable = self._get_alternate_executable(executable, options) + + if sys.platform.startswith('java'): # pragma: no cover + executable = self._fix_jython_executable(executable) + + # Normalise case for Windows - COMMENTED OUT + # executable = os.path.normcase(executable) + # N.B. The normalising operation above has been commented out: See + # issue #124. Although paths in Windows are generally case-insensitive, + # they aren't always. For example, a path containing a ẞ (which is a + # LATIN CAPITAL LETTER SHARP S - U+1E9E) is normcased to ß (which is a + # LATIN SMALL LETTER SHARP S' - U+00DF). The two are not considered by + # Windows as equivalent in path names. + + # If the user didn't specify an executable, it may be necessary to + # cater for executable paths with spaces (not uncommon on Windows) + if enquote: + executable = _enquote_executable(executable) + # Issue #51: don't use fsencode, since we later try to + # check that the shebang is decodable using utf-8. + executable = executable.encode('utf-8') + # in case of IronPython, play safe and enable frames support + if (sys.platform == 'cli' and '-X:Frames' not in post_interp + and '-X:FullFrames' not in post_interp): # pragma: no cover + post_interp += b' -X:Frames' + shebang = self._build_shebang(executable, post_interp) + # Python parser starts to read a script using UTF-8 until + # it gets a #coding:xxx cookie. The shebang has to be the + # first line of a file, the #coding:xxx cookie cannot be + # written before. So the shebang has to be decodable from + # UTF-8. + try: + shebang.decode('utf-8') + except UnicodeDecodeError: # pragma: no cover + raise ValueError( + 'The shebang (%r) is not decodable from utf-8' % shebang) + # If the script is encoded to a custom encoding (use a + # #coding:xxx cookie), the shebang has to be decodable from + # the script encoding too. + if encoding != 'utf-8': + try: + shebang.decode(encoding) + except UnicodeDecodeError: # pragma: no cover + raise ValueError( + 'The shebang (%r) is not decodable ' + 'from the script encoding (%r)' % (shebang, encoding)) + return shebang + + def _get_script_text(self, entry): + return self.script_template % dict(module=entry.prefix, + import_name=entry.suffix.split('.')[0], + func=entry.suffix) + + manifest = _DEFAULT_MANIFEST + + def get_manifest(self, exename): + base = os.path.basename(exename) + return self.manifest % base + + def _write_script(self, names, shebang, script_bytes, filenames, ext): + use_launcher = self.add_launchers and self._is_nt + linesep = os.linesep.encode('utf-8') + if not shebang.endswith(linesep): + shebang += linesep + if not use_launcher: + script_bytes = shebang + script_bytes + else: # pragma: no cover + if ext == 'py': + launcher = self._get_launcher('t') + else: + launcher = self._get_launcher('w') + stream = BytesIO() + with ZipFile(stream, 'w') as zf: + zf.writestr('__main__.py', script_bytes) + zip_data = stream.getvalue() + script_bytes = launcher + shebang + zip_data + for name in names: + outname = os.path.join(self.target_dir, name) + if use_launcher: # pragma: no cover + n, e = os.path.splitext(outname) + if e.startswith('.py'): + outname = n + outname = '%s.exe' % outname + try: + self._fileop.write_binary_file(outname, script_bytes) + except Exception: + # Failed writing an executable - it might be in use. + logger.warning('Failed to write executable - trying to ' + 'use .deleteme logic') + dfname = '%s.deleteme' % outname + if os.path.exists(dfname): + os.remove(dfname) # Not allowed to fail here + os.rename(outname, dfname) # nor here + self._fileop.write_binary_file(outname, script_bytes) + logger.debug('Able to replace executable using ' + '.deleteme logic') + try: + os.remove(dfname) + except Exception: + pass # still in use - ignore error + else: + if self._is_nt and not outname.endswith('.' + ext): # pragma: no cover + outname = '%s.%s' % (outname, ext) + if os.path.exists(outname) and not self.clobber: + logger.warning('Skipping existing file %s', outname) + continue + self._fileop.write_binary_file(outname, script_bytes) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + + def _make_script(self, entry, filenames, options=None): + post_interp = b'' + if options: + args = options.get('interpreter_args', []) + if args: + args = ' %s' % ' '.join(args) + post_interp = args.encode('utf-8') + shebang = self._get_shebang('utf-8', post_interp, options=options) + script = self._get_script_text(entry).encode('utf-8') + name = entry.name + scriptnames = set() + if '' in self.variants: + scriptnames.add(name) + if 'X' in self.variants: + scriptnames.add('%s%s' % (name, sys.version_info[0])) + if 'X.Y' in self.variants: + scriptnames.add('%s-%s.%s' % (name, sys.version_info[0], + sys.version_info[1])) + if options and options.get('gui', False): + ext = 'pyw' + else: + ext = 'py' + self._write_script(scriptnames, shebang, script, filenames, ext) + + def _copy_script(self, script, filenames): + adjust = False + script = os.path.join(self.source_dir, convert_path(script)) + outname = os.path.join(self.target_dir, os.path.basename(script)) + if not self.force and not self._fileop.newer(script, outname): + logger.debug('not copying %s (up-to-date)', script) + return + + # Always open the file, but ignore failures in dry-run mode -- + # that way, we'll get accurate feedback if we can read the + # script. + try: + f = open(script, 'rb') + except IOError: # pragma: no cover + if not self.dry_run: + raise + f = None + else: + first_line = f.readline() + if not first_line: # pragma: no cover + logger.warning('%s: %s is an empty file (skipping)', + self.get_command_name(), script) + return + + match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) + if match: + adjust = True + post_interp = match.group(1) or b'' + + if not adjust: + if f: + f.close() + self._fileop.copy_file(script, outname) + if self.set_mode: + self._fileop.set_executable_mode([outname]) + filenames.append(outname) + else: + logger.info('copying and adjusting %s -> %s', script, + self.target_dir) + if not self._fileop.dry_run: + encoding, lines = detect_encoding(f.readline) + f.seek(0) + shebang = self._get_shebang(encoding, post_interp) + if b'pythonw' in first_line: # pragma: no cover + ext = 'pyw' + else: + ext = 'py' + n = os.path.basename(outname) + self._write_script([n], shebang, f.read(), filenames, ext) + if f: + f.close() + + @property + def dry_run(self): + return self._fileop.dry_run + + @dry_run.setter + def dry_run(self, value): + self._fileop.dry_run = value + + if os.name == 'nt' or (os.name == 'java' and os._name == 'nt'): # pragma: no cover + # Executable launcher support. + # Launchers are from https://bitbucket.org/vinay.sajip/simple_launcher/ + + def _get_launcher(self, kind): + if struct.calcsize('P') == 8: # 64-bit + bits = '64' + else: + bits = '32' + name = '%s%s.exe' % (kind, bits) + # Issue 31: don't hardcode an absolute package name, but + # determine it relative to the current package + distlib_package = __name__.rsplit('.', 1)[0] + resource = finder(distlib_package).find(name) + if not resource: + msg = ('Unable to find resource %s in package %s' % (name, + distlib_package)) + raise ValueError(msg) + return resource.bytes + + # Public API follows + + def make(self, specification, options=None): + """ + Make a script. + + :param specification: The specification, which is either a valid export + entry specification (to make a script from a + callable) or a filename (to make a script by + copying from a source location). + :param options: A dictionary of options controlling script generation. + :return: A list of all absolute pathnames written to. + """ + filenames = [] + entry = get_export_entry(specification) + if entry is None: + self._copy_script(specification, filenames) + else: + self._make_script(entry, filenames, options=options) + return filenames + + def make_multiple(self, specifications, options=None): + """ + Take a list of specifications and make scripts from them, + :param specifications: A list of specifications. + :return: A list of all absolute pathnames written to, + """ + filenames = [] + for specification in specifications: + filenames.extend(self.make(specification, options)) + return filenames diff --git a/Lib/site-packages/pip/_vendor/distlib/t32.exe b/Lib/site-packages/pip/_vendor/distlib/t32.exe new file mode 100644 index 0000000000000000000000000000000000000000..8932a18e4596952373a38c60b81b7116d4ef9ee8 GIT binary patch literal 96768 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 F{{j_Hb~FG0 literal 0 HcmV?d00001 diff --git a/Lib/site-packages/pip/_vendor/distlib/t64.exe b/Lib/site-packages/pip/_vendor/distlib/t64.exe new file mode 100644 index 0000000000000000000000000000000000000000..325b8057c08cf7113d4fd889991fa5638d443793 GIT binary patch literal 105984 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

^h^N4aZyJe%k(7BL*-gn=9``8`j0CuR45%cHI z_uuQ8!-|TEvJ}r=zF@%uKc8U@W1eNxUymJ(e45Tb6KDNieQcKe?L-gR8zZj^wFmi= z{5sAxrfP3BOZz~T$3h=Gi%jFg1%D>!6t*l^`zH2G#1PiYtvOBSI#q&y?8qN57P^LA zq9U)rQU+*y!XEgsGMCJM7yWOS+9lW~^axz>9gyv{Pu^qsBg%ZkfzkaN`$zV#>=oFn zwANnf4&g*eu~pAMC~1dl8FZ-^aeQgZ7=osPU=58@oke z55pen;eU@Z`iL!`$;1-VA&$VF4gN7ttU>relx5d-_x=|95B47HeeiYJZ$$38(ddJH zcrW3>{OR2@KF^H}gAbdZDX=AzyZHSizB_(9`v&$-69)D4WBjSaY@YVD`kl8;nl#Cu z5h1U}Tp}-l|Nde9w|3Pc@Aps8-X~fh_EGq!b-~*$a&nv>05-_n;)z{t+vW|PpX{Oj zKE#i|Gsq9Jhpor%Fqiu6y5}jjnz?*$b)h|UO;3NGd-k|9?ZqeVXL!9~vaIO0E8bVb zejzv5ZG0}~1A7{a3!hob11v4ihxvzh!S5>3I?4E~N9+^m8@sHve^M+wb{f3t2VUsD z*C*C&;z_`=&t~mbE@mHC`k7cGl3rKU9U84p?fzGxTg1q z)-Ai@eQSs49?#VDZ(BQ5_sXt#*VAn)X1Lk5l>kvHP6SDZX>#ITM7@`jxR;sQ>OG+Pe$CuXbGOdj zGq+|zTtQMnhk{-O{R=KF7*}vZ!OVhr1xpLo6l^NkTCk^}W?@_*Z|>hH7&o`>+{q8j zm_Kv=-1+n7FPgt}{>u4l=C7T3KtbFEnHc+rVzeuEi5hE<2hHiD6S}>D5l co{tw5U0O7=?|={2,3}|[~!]=)\s*') +MARKER_OP = re.compile(r'^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*') +OR = re.compile(r'^or\b\s*') +AND = re.compile(r'^and\b\s*') +NON_SPACE = re.compile(r'(\S+)\s*') +STRING_CHUNK = re.compile(r'([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)') + + +def parse_marker(marker_string): + """ + Parse a marker string and return a dictionary containing a marker expression. + + The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in + the expression grammar, or strings. A string contained in quotes is to be + interpreted as a literal string, and a string not contained in quotes is a + variable (such as os_name). + """ + def marker_var(remaining): + # either identifier, or literal string + m = IDENTIFIER.match(remaining) + if m: + result = m.groups()[0] + remaining = remaining[m.end():] + elif not remaining: + raise SyntaxError('unexpected end of input') + else: + q = remaining[0] + if q not in '\'"': + raise SyntaxError('invalid expression: %s' % remaining) + oq = '\'"'.replace(q, '') + remaining = remaining[1:] + parts = [q] + while remaining: + # either a string chunk, or oq, or q to terminate + if remaining[0] == q: + break + elif remaining[0] == oq: + parts.append(oq) + remaining = remaining[1:] + else: + m = STRING_CHUNK.match(remaining) + if not m: + raise SyntaxError('error in string literal: %s' % remaining) + parts.append(m.groups()[0]) + remaining = remaining[m.end():] + else: + s = ''.join(parts) + raise SyntaxError('unterminated string: %s' % s) + parts.append(q) + result = ''.join(parts) + remaining = remaining[1:].lstrip() # skip past closing quote + return result, remaining + + def marker_expr(remaining): + if remaining and remaining[0] == '(': + result, remaining = marker(remaining[1:].lstrip()) + if remaining[0] != ')': + raise SyntaxError('unterminated parenthesis: %s' % remaining) + remaining = remaining[1:].lstrip() + else: + lhs, remaining = marker_var(remaining) + while remaining: + m = MARKER_OP.match(remaining) + if not m: + break + op = m.groups()[0] + remaining = remaining[m.end():] + rhs, remaining = marker_var(remaining) + lhs = {'op': op, 'lhs': lhs, 'rhs': rhs} + result = lhs + return result, remaining + + def marker_and(remaining): + lhs, remaining = marker_expr(remaining) + while remaining: + m = AND.match(remaining) + if not m: + break + remaining = remaining[m.end():] + rhs, remaining = marker_expr(remaining) + lhs = {'op': 'and', 'lhs': lhs, 'rhs': rhs} + return lhs, remaining + + def marker(remaining): + lhs, remaining = marker_and(remaining) + while remaining: + m = OR.match(remaining) + if not m: + break + remaining = remaining[m.end():] + rhs, remaining = marker_and(remaining) + lhs = {'op': 'or', 'lhs': lhs, 'rhs': rhs} + return lhs, remaining + + return marker(marker_string) + + +def parse_requirement(req): + """ + Parse a requirement passed in as a string. Return a Container + whose attributes contain the various parts of the requirement. + """ + remaining = req.strip() + if not remaining or remaining.startswith('#'): + return None + m = IDENTIFIER.match(remaining) + if not m: + raise SyntaxError('name expected: %s' % remaining) + distname = m.groups()[0] + remaining = remaining[m.end():] + extras = mark_expr = versions = uri = None + if remaining and remaining[0] == '[': + i = remaining.find(']', 1) + if i < 0: + raise SyntaxError('unterminated extra: %s' % remaining) + s = remaining[1:i] + remaining = remaining[i + 1:].lstrip() + extras = [] + while s: + m = IDENTIFIER.match(s) + if not m: + raise SyntaxError('malformed extra: %s' % s) + extras.append(m.groups()[0]) + s = s[m.end():] + if not s: + break + if s[0] != ',': + raise SyntaxError('comma expected in extras: %s' % s) + s = s[1:].lstrip() + if not extras: + extras = None + if remaining: + if remaining[0] == '@': + # it's a URI + remaining = remaining[1:].lstrip() + m = NON_SPACE.match(remaining) + if not m: + raise SyntaxError('invalid URI: %s' % remaining) + uri = m.groups()[0] + t = urlparse(uri) + # there are issues with Python and URL parsing, so this test + # is a bit crude. See bpo-20271, bpo-23505. Python doesn't + # always parse invalid URLs correctly - it should raise + # exceptions for malformed URLs + if not (t.scheme and t.netloc): + raise SyntaxError('Invalid URL: %s' % uri) + remaining = remaining[m.end():].lstrip() + else: + + def get_versions(ver_remaining): + """ + Return a list of operator, version tuples if any are + specified, else None. + """ + m = COMPARE_OP.match(ver_remaining) + versions = None + if m: + versions = [] + while True: + op = m.groups()[0] + ver_remaining = ver_remaining[m.end():] + m = VERSION_IDENTIFIER.match(ver_remaining) + if not m: + raise SyntaxError('invalid version: %s' % ver_remaining) + v = m.groups()[0] + versions.append((op, v)) + ver_remaining = ver_remaining[m.end():] + if not ver_remaining or ver_remaining[0] != ',': + break + ver_remaining = ver_remaining[1:].lstrip() + m = COMPARE_OP.match(ver_remaining) + if not m: + raise SyntaxError('invalid constraint: %s' % ver_remaining) + if not versions: + versions = None + return versions, ver_remaining + + if remaining[0] != '(': + versions, remaining = get_versions(remaining) + else: + i = remaining.find(')', 1) + if i < 0: + raise SyntaxError('unterminated parenthesis: %s' % remaining) + s = remaining[1:i] + remaining = remaining[i + 1:].lstrip() + # As a special diversion from PEP 508, allow a version number + # a.b.c in parentheses as a synonym for ~= a.b.c (because this + # is allowed in earlier PEPs) + if COMPARE_OP.match(s): + versions, _ = get_versions(s) + else: + m = VERSION_IDENTIFIER.match(s) + if not m: + raise SyntaxError('invalid constraint: %s' % s) + v = m.groups()[0] + s = s[m.end():].lstrip() + if s: + raise SyntaxError('invalid constraint: %s' % s) + versions = [('~=', v)] + + if remaining: + if remaining[0] != ';': + raise SyntaxError('invalid requirement: %s' % remaining) + remaining = remaining[1:].lstrip() + + mark_expr, remaining = parse_marker(remaining) + + if remaining and remaining[0] != '#': + raise SyntaxError('unexpected trailing data: %s' % remaining) + + if not versions: + rs = distname + else: + rs = '%s %s' % (distname, ', '.join(['%s %s' % con for con in versions])) + return Container(name=distname, extras=extras, constraints=versions, + marker=mark_expr, url=uri, requirement=rs) + + +def get_resources_dests(resources_root, rules): + """Find destinations for resources files""" + + def get_rel_path(root, path): + # normalizes and returns a lstripped-/-separated path + root = root.replace(os.path.sep, '/') + path = path.replace(os.path.sep, '/') + assert path.startswith(root) + return path[len(root):].lstrip('/') + + destinations = {} + for base, suffix, dest in rules: + prefix = os.path.join(resources_root, base) + for abs_base in iglob(prefix): + abs_glob = os.path.join(abs_base, suffix) + for abs_path in iglob(abs_glob): + resource_file = get_rel_path(resources_root, abs_path) + if dest is None: # remove the entry if it was here + destinations.pop(resource_file, None) + else: + rel_path = get_rel_path(abs_base, abs_path) + rel_dest = dest.replace(os.path.sep, '/').rstrip('/') + destinations[resource_file] = rel_dest + '/' + rel_path + return destinations + + +def in_venv(): + if hasattr(sys, 'real_prefix'): + # virtualenv venvs + result = True + else: + # PEP 405 venvs + result = sys.prefix != getattr(sys, 'base_prefix', sys.prefix) + return result + + +def get_executable(): +# The __PYVENV_LAUNCHER__ dance is apparently no longer needed, as +# changes to the stub launcher mean that sys.executable always points +# to the stub on OS X +# if sys.platform == 'darwin' and ('__PYVENV_LAUNCHER__' +# in os.environ): +# result = os.environ['__PYVENV_LAUNCHER__'] +# else: +# result = sys.executable +# return result + result = os.path.normcase(sys.executable) + if not isinstance(result, text_type): + result = fsdecode(result) + return result + + +def proceed(prompt, allowed_chars, error_prompt=None, default=None): + p = prompt + while True: + s = raw_input(p) + p = prompt + if not s and default: + s = default + if s: + c = s[0].lower() + if c in allowed_chars: + break + if error_prompt: + p = '%c: %s\n%s' % (c, error_prompt, prompt) + return c + + +def extract_by_key(d, keys): + if isinstance(keys, string_types): + keys = keys.split() + result = {} + for key in keys: + if key in d: + result[key] = d[key] + return result + +def read_exports(stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + # Try to load as JSON, falling back on legacy format + data = stream.read() + stream = StringIO(data) + try: + jdata = json.load(stream) + result = jdata['extensions']['python.exports']['exports'] + for group, entries in result.items(): + for k, v in entries.items(): + s = '%s = %s' % (k, v) + entry = get_export_entry(s) + assert entry is not None + entries[k] = entry + return result + except Exception: + stream.seek(0, 0) + + def read_stream(cp, stream): + if hasattr(cp, 'read_file'): + cp.read_file(stream) + else: + cp.readfp(stream) + + cp = configparser.ConfigParser() + try: + read_stream(cp, stream) + except configparser.MissingSectionHeaderError: + stream.close() + data = textwrap.dedent(data) + stream = StringIO(data) + read_stream(cp, stream) + + result = {} + for key in cp.sections(): + result[key] = entries = {} + for name, value in cp.items(key): + s = '%s = %s' % (name, value) + entry = get_export_entry(s) + assert entry is not None + #entry.dist = self + entries[name] = entry + return result + + +def write_exports(exports, stream): + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getwriter('utf-8')(stream) + cp = configparser.ConfigParser() + for k, v in exports.items(): + # TODO check k, v for valid values + cp.add_section(k) + for entry in v.values(): + if entry.suffix is None: + s = entry.prefix + else: + s = '%s:%s' % (entry.prefix, entry.suffix) + if entry.flags: + s = '%s [%s]' % (s, ', '.join(entry.flags)) + cp.set(k, entry.name, s) + cp.write(stream) + + +@contextlib.contextmanager +def tempdir(): + td = tempfile.mkdtemp() + try: + yield td + finally: + shutil.rmtree(td) + +@contextlib.contextmanager +def chdir(d): + cwd = os.getcwd() + try: + os.chdir(d) + yield + finally: + os.chdir(cwd) + + +@contextlib.contextmanager +def socket_timeout(seconds=15): + cto = socket.getdefaulttimeout() + try: + socket.setdefaulttimeout(seconds) + yield + finally: + socket.setdefaulttimeout(cto) + + +class cached_property(object): + def __init__(self, func): + self.func = func + #for attr in ('__name__', '__module__', '__doc__'): + # setattr(self, attr, getattr(func, attr, None)) + + def __get__(self, obj, cls=None): + if obj is None: + return self + value = self.func(obj) + object.__setattr__(obj, self.func.__name__, value) + #obj.__dict__[self.func.__name__] = value = self.func(obj) + return value + +def convert_path(pathname): + """Return 'pathname' as a name that will work on the native filesystem. + + The path is split on '/' and put back together again using the current + directory separator. Needed because filenames in the setup script are + always supplied in Unix style, and have to be converted to the local + convention before we can actually use them in the filesystem. Raises + ValueError on non-Unix-ish systems if 'pathname' either starts or + ends with a slash. + """ + if os.sep == '/': + return pathname + if not pathname: + return pathname + if pathname[0] == '/': + raise ValueError("path '%s' cannot be absolute" % pathname) + if pathname[-1] == '/': + raise ValueError("path '%s' cannot end with '/'" % pathname) + + paths = pathname.split('/') + while os.curdir in paths: + paths.remove(os.curdir) + if not paths: + return os.curdir + return os.path.join(*paths) + + +class FileOperator(object): + def __init__(self, dry_run=False): + self.dry_run = dry_run + self.ensured = set() + self._init_record() + + def _init_record(self): + self.record = False + self.files_written = set() + self.dirs_created = set() + + def record_as_written(self, path): + if self.record: + self.files_written.add(path) + + def newer(self, source, target): + """Tell if the target is newer than the source. + + Returns true if 'source' exists and is more recently modified than + 'target', or if 'source' exists and 'target' doesn't. + + Returns false if both exist and 'target' is the same age or younger + than 'source'. Raise PackagingFileError if 'source' does not exist. + + Note that this test is not very accurate: files created in the same + second will have the same "age". + """ + if not os.path.exists(source): + raise DistlibException("file '%r' does not exist" % + os.path.abspath(source)) + if not os.path.exists(target): + return True + + return os.stat(source).st_mtime > os.stat(target).st_mtime + + def copy_file(self, infile, outfile, check=True): + """Copy a file respecting dry-run and force flags. + """ + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying %s to %s', infile, outfile) + if not self.dry_run: + msg = None + if check: + if os.path.islink(outfile): + msg = '%s is a symlink' % outfile + elif os.path.exists(outfile) and not os.path.isfile(outfile): + msg = '%s is a non-regular file' % outfile + if msg: + raise ValueError(msg + ' which would be overwritten') + shutil.copyfile(infile, outfile) + self.record_as_written(outfile) + + def copy_stream(self, instream, outfile, encoding=None): + assert not os.path.isdir(outfile) + self.ensure_dir(os.path.dirname(outfile)) + logger.info('Copying stream %s to %s', instream, outfile) + if not self.dry_run: + if encoding is None: + outstream = open(outfile, 'wb') + else: + outstream = codecs.open(outfile, 'w', encoding=encoding) + try: + shutil.copyfileobj(instream, outstream) + finally: + outstream.close() + self.record_as_written(outfile) + + def write_binary_file(self, path, data): + self.ensure_dir(os.path.dirname(path)) + if not self.dry_run: + if os.path.exists(path): + os.remove(path) + with open(path, 'wb') as f: + f.write(data) + self.record_as_written(path) + + def write_text_file(self, path, data, encoding): + self.write_binary_file(path, data.encode(encoding)) + + def set_mode(self, bits, mask, files): + if os.name == 'posix' or (os.name == 'java' and os._name == 'posix'): + # Set the executable bits (owner, group, and world) on + # all the files specified. + for f in files: + if self.dry_run: + logger.info("changing mode of %s", f) + else: + mode = (os.stat(f).st_mode | bits) & mask + logger.info("changing mode of %s to %o", f, mode) + os.chmod(f, mode) + + set_executable_mode = lambda s, f: s.set_mode(0o555, 0o7777, f) + + def ensure_dir(self, path): + path = os.path.abspath(path) + if path not in self.ensured and not os.path.exists(path): + self.ensured.add(path) + d, f = os.path.split(path) + self.ensure_dir(d) + logger.info('Creating %s' % path) + if not self.dry_run: + os.mkdir(path) + if self.record: + self.dirs_created.add(path) + + def byte_compile(self, path, optimize=False, force=False, prefix=None, hashed_invalidation=False): + dpath = cache_from_source(path, not optimize) + logger.info('Byte-compiling %s to %s', path, dpath) + if not self.dry_run: + if force or self.newer(path, dpath): + if not prefix: + diagpath = None + else: + assert path.startswith(prefix) + diagpath = path[len(prefix):] + compile_kwargs = {} + if hashed_invalidation and hasattr(py_compile, 'PycInvalidationMode'): + compile_kwargs['invalidation_mode'] = py_compile.PycInvalidationMode.CHECKED_HASH + py_compile.compile(path, dpath, diagpath, True, **compile_kwargs) # raise error + self.record_as_written(dpath) + return dpath + + def ensure_removed(self, path): + if os.path.exists(path): + if os.path.isdir(path) and not os.path.islink(path): + logger.debug('Removing directory tree at %s', path) + if not self.dry_run: + shutil.rmtree(path) + if self.record: + if path in self.dirs_created: + self.dirs_created.remove(path) + else: + if os.path.islink(path): + s = 'link' + else: + s = 'file' + logger.debug('Removing %s %s', s, path) + if not self.dry_run: + os.remove(path) + if self.record: + if path in self.files_written: + self.files_written.remove(path) + + def is_writable(self, path): + result = False + while not result: + if os.path.exists(path): + result = os.access(path, os.W_OK) + break + parent = os.path.dirname(path) + if parent == path: + break + path = parent + return result + + def commit(self): + """ + Commit recorded changes, turn off recording, return + changes. + """ + assert self.record + result = self.files_written, self.dirs_created + self._init_record() + return result + + def rollback(self): + if not self.dry_run: + for f in list(self.files_written): + if os.path.exists(f): + os.remove(f) + # dirs should all be empty now, except perhaps for + # __pycache__ subdirs + # reverse so that subdirs appear before their parents + dirs = sorted(self.dirs_created, reverse=True) + for d in dirs: + flist = os.listdir(d) + if flist: + assert flist == ['__pycache__'] + sd = os.path.join(d, flist[0]) + os.rmdir(sd) + os.rmdir(d) # should fail if non-empty + self._init_record() + +def resolve(module_name, dotted_path): + if module_name in sys.modules: + mod = sys.modules[module_name] + else: + mod = __import__(module_name) + if dotted_path is None: + result = mod + else: + parts = dotted_path.split('.') + result = getattr(mod, parts.pop(0)) + for p in parts: + result = getattr(result, p) + return result + + +class ExportEntry(object): + def __init__(self, name, prefix, suffix, flags): + self.name = name + self.prefix = prefix + self.suffix = suffix + self.flags = flags + + @cached_property + def value(self): + return resolve(self.prefix, self.suffix) + + def __repr__(self): # pragma: no cover + return '' % (self.name, self.prefix, + self.suffix, self.flags) + + def __eq__(self, other): + if not isinstance(other, ExportEntry): + result = False + else: + result = (self.name == other.name and + self.prefix == other.prefix and + self.suffix == other.suffix and + self.flags == other.flags) + return result + + __hash__ = object.__hash__ + + +ENTRY_RE = re.compile(r'''(?P(\w|[-.+])+) + \s*=\s*(?P(\w+)([:\.]\w+)*) + \s*(\[\s*(?P[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? + ''', re.VERBOSE) + +def get_export_entry(specification): + m = ENTRY_RE.search(specification) + if not m: + result = None + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + else: + d = m.groupdict() + name = d['name'] + path = d['callable'] + colons = path.count(':') + if colons == 0: + prefix, suffix = path, None + else: + if colons != 1: + raise DistlibException("Invalid specification " + "'%s'" % specification) + prefix, suffix = path.split(':') + flags = d['flags'] + if flags is None: + if '[' in specification or ']' in specification: + raise DistlibException("Invalid specification " + "'%s'" % specification) + flags = [] + else: + flags = [f.strip() for f in flags.split(',')] + result = ExportEntry(name, prefix, suffix, flags) + return result + + +def get_cache_base(suffix=None): + """ + Return the default base location for distlib caches. If the directory does + not exist, it is created. Use the suffix provided for the base directory, + and default to '.distlib' if it isn't provided. + + On Windows, if LOCALAPPDATA is defined in the environment, then it is + assumed to be a directory, and will be the parent directory of the result. + On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home + directory - using os.expanduser('~') - will be the parent directory of + the result. + + The result is just the directory '.distlib' in the parent directory as + determined above, or with the name specified with ``suffix``. + """ + if suffix is None: + suffix = '.distlib' + if os.name == 'nt' and 'LOCALAPPDATA' in os.environ: + result = os.path.expandvars('$localappdata') + else: + # Assume posix, or old Windows + result = os.path.expanduser('~') + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if os.path.isdir(result): + usable = os.access(result, os.W_OK) + if not usable: + logger.warning('Directory exists but is not writable: %s', result) + else: + try: + os.makedirs(result) + usable = True + except OSError: + logger.warning('Unable to create %s', result, exc_info=True) + usable = False + if not usable: + result = tempfile.mkdtemp() + logger.warning('Default location unusable, using %s', result) + return os.path.join(result, suffix) + + +def path_to_cache_dir(path): + """ + Convert an absolute path to a directory name for use in a cache. + + The algorithm used is: + + #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. + #. Any occurrence of ``os.sep`` is replaced with ``'--'``. + #. ``'.cache'`` is appended. + """ + d, p = os.path.splitdrive(os.path.abspath(path)) + if d: + d = d.replace(':', '---') + p = p.replace(os.sep, '--') + return d + p + '.cache' + + +def ensure_slash(s): + if not s.endswith('/'): + return s + '/' + return s + + +def parse_credentials(netloc): + username = password = None + if '@' in netloc: + prefix, netloc = netloc.rsplit('@', 1) + if ':' not in prefix: + username = prefix + else: + username, password = prefix.split(':', 1) + if username: + username = unquote(username) + if password: + password = unquote(password) + return username, password, netloc + + +def get_process_umask(): + result = os.umask(0o22) + os.umask(result) + return result + +def is_string_sequence(seq): + result = True + i = None + for i, s in enumerate(seq): + if not isinstance(s, string_types): + result = False + break + assert i is not None + return result + +PROJECT_NAME_AND_VERSION = re.compile('([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-' + '([a-z0-9_.+-]+)', re.I) +PYTHON_VERSION = re.compile(r'-py(\d\.?\d?)') + + +def split_filename(filename, project_name=None): + """ + Extract name, version, python version from a filename (no extension) + + Return name, version, pyver or None + """ + result = None + pyver = None + filename = unquote(filename).replace(' ', '-') + m = PYTHON_VERSION.search(filename) + if m: + pyver = m.group(1) + filename = filename[:m.start()] + if project_name and len(filename) > len(project_name) + 1: + m = re.match(re.escape(project_name) + r'\b', filename) + if m: + n = m.end() + result = filename[:n], filename[n + 1:], pyver + if result is None: + m = PROJECT_NAME_AND_VERSION.match(filename) + if m: + result = m.group(1), m.group(3), pyver + return result + +# Allow spaces in name because of legacy dists like "Twisted Core" +NAME_VERSION_RE = re.compile(r'(?P[\w .-]+)\s*' + r'\(\s*(?P[^\s)]+)\)$') + +def parse_name_and_version(p): + """ + A utility method used to get name and version from a string. + + From e.g. a Provides-Dist value. + + :param p: A value in a form 'foo (1.0)' + :return: The name and version as a tuple. + """ + m = NAME_VERSION_RE.match(p) + if not m: + raise DistlibException('Ill-formed name/version string: \'%s\'' % p) + d = m.groupdict() + return d['name'].strip().lower(), d['ver'] + +def get_extras(requested, available): + result = set() + requested = set(requested or []) + available = set(available or []) + if '*' in requested: + requested.remove('*') + result |= available + for r in requested: + if r == '-': + result.add(r) + elif r.startswith('-'): + unwanted = r[1:] + if unwanted not in available: + logger.warning('undeclared extra: %s' % unwanted) + if unwanted in result: + result.remove(unwanted) + else: + if r not in available: + logger.warning('undeclared extra: %s' % r) + result.add(r) + return result +# +# Extended metadata functionality +# + +def _get_external_data(url): + result = {} + try: + # urlopen might fail if it runs into redirections, + # because of Python issue #13696. Fixed in locators + # using a custom redirect handler. + resp = urlopen(url) + headers = resp.info() + ct = headers.get('Content-Type') + if not ct.startswith('application/json'): + logger.debug('Unexpected response for JSON request: %s', ct) + else: + reader = codecs.getreader('utf-8')(resp) + #data = reader.read().decode('utf-8') + #result = json.loads(data) + result = json.load(reader) + except Exception as e: + logger.exception('Failed to get external data for %s: %s', url, e) + return result + +_external_data_base_url = 'https://www.red-dove.com/pypi/projects/' + +def get_project_data(name): + url = '%s/%s/project.json' % (name[0].upper(), name) + url = urljoin(_external_data_base_url, url) + result = _get_external_data(url) + return result + +def get_package_data(name, version): + url = '%s/%s/package-%s.json' % (name[0].upper(), name, version) + url = urljoin(_external_data_base_url, url) + return _get_external_data(url) + + +class Cache(object): + """ + A class implementing a cache for resources that need to live in the file system + e.g. shared libraries. This class was moved from resources to here because it + could be used by other modules, e.g. the wheel module. + """ + + def __init__(self, base): + """ + Initialise an instance. + + :param base: The base directory where the cache should be located. + """ + # we use 'isdir' instead of 'exists', because we want to + # fail if there's a file with that name + if not os.path.isdir(base): # pragma: no cover + os.makedirs(base) + if (os.stat(base).st_mode & 0o77) != 0: + logger.warning('Directory \'%s\' is not private', base) + self.base = os.path.abspath(os.path.normpath(base)) + + def prefix_to_dir(self, prefix): + """ + Converts a resource prefix to a directory name in the cache. + """ + return path_to_cache_dir(prefix) + + def clear(self): + """ + Clear the cache. + """ + not_removed = [] + for fn in os.listdir(self.base): + fn = os.path.join(self.base, fn) + try: + if os.path.islink(fn) or os.path.isfile(fn): + os.remove(fn) + elif os.path.isdir(fn): + shutil.rmtree(fn) + except Exception: + not_removed.append(fn) + return not_removed + + +class EventMixin(object): + """ + A very simple publish/subscribe system. + """ + def __init__(self): + self._subscribers = {} + + def add(self, event, subscriber, append=True): + """ + Add a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be added (and called when the + event is published). + :param append: Whether to append or prepend the subscriber to an + existing subscriber list for the event. + """ + subs = self._subscribers + if event not in subs: + subs[event] = deque([subscriber]) + else: + sq = subs[event] + if append: + sq.append(subscriber) + else: + sq.appendleft(subscriber) + + def remove(self, event, subscriber): + """ + Remove a subscriber for an event. + + :param event: The name of an event. + :param subscriber: The subscriber to be removed. + """ + subs = self._subscribers + if event not in subs: + raise ValueError('No subscribers: %r' % event) + subs[event].remove(subscriber) + + def get_subscribers(self, event): + """ + Return an iterator for the subscribers for an event. + :param event: The event to return subscribers for. + """ + return iter(self._subscribers.get(event, ())) + + def publish(self, event, *args, **kwargs): + """ + Publish a event and return a list of values returned by its + subscribers. + + :param event: The event to publish. + :param args: The positional arguments to pass to the event's + subscribers. + :param kwargs: The keyword arguments to pass to the event's + subscribers. + """ + result = [] + for subscriber in self.get_subscribers(event): + try: + value = subscriber(event, *args, **kwargs) + except Exception: + logger.exception('Exception during event publication') + value = None + result.append(value) + logger.debug('publish %s: args = %s, kwargs = %s, result = %s', + event, args, kwargs, result) + return result + +# +# Simple sequencing +# +class Sequencer(object): + def __init__(self): + self._preds = {} + self._succs = {} + self._nodes = set() # nodes with no preds/succs + + def add_node(self, node): + self._nodes.add(node) + + def remove_node(self, node, edges=False): + if node in self._nodes: + self._nodes.remove(node) + if edges: + for p in set(self._preds.get(node, ())): + self.remove(p, node) + for s in set(self._succs.get(node, ())): + self.remove(node, s) + # Remove empties + for k, v in list(self._preds.items()): + if not v: + del self._preds[k] + for k, v in list(self._succs.items()): + if not v: + del self._succs[k] + + def add(self, pred, succ): + assert pred != succ + self._preds.setdefault(succ, set()).add(pred) + self._succs.setdefault(pred, set()).add(succ) + + def remove(self, pred, succ): + assert pred != succ + try: + preds = self._preds[succ] + succs = self._succs[pred] + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of anything' % succ) + try: + preds.remove(pred) + succs.remove(succ) + except KeyError: # pragma: no cover + raise ValueError('%r not a successor of %r' % (succ, pred)) + + def is_step(self, step): + return (step in self._preds or step in self._succs or + step in self._nodes) + + def get_steps(self, final): + if not self.is_step(final): + raise ValueError('Unknown: %r' % final) + result = [] + todo = [] + seen = set() + todo.append(final) + while todo: + step = todo.pop(0) + if step in seen: + # if a step was already seen, + # move it to the end (so it will appear earlier + # when reversed on return) ... but not for the + # final step, as that would be confusing for + # users + if step != final: + result.remove(step) + result.append(step) + else: + seen.add(step) + result.append(step) + preds = self._preds.get(step, ()) + todo.extend(preds) + return reversed(result) + + @property + def strong_connections(self): + #http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm + index_counter = [0] + stack = [] + lowlinks = {} + index = {} + result = [] + + graph = self._succs + + def strongconnect(node): + # set the depth index for this node to the smallest unused index + index[node] = index_counter[0] + lowlinks[node] = index_counter[0] + index_counter[0] += 1 + stack.append(node) + + # Consider successors + try: + successors = graph[node] + except Exception: + successors = [] + for successor in successors: + if successor not in lowlinks: + # Successor has not yet been visited + strongconnect(successor) + lowlinks[node] = min(lowlinks[node],lowlinks[successor]) + elif successor in stack: + # the successor is in the stack and hence in the current + # strongly connected component (SCC) + lowlinks[node] = min(lowlinks[node],index[successor]) + + # If `node` is a root node, pop the stack and generate an SCC + if lowlinks[node] == index[node]: + connected_component = [] + + while True: + successor = stack.pop() + connected_component.append(successor) + if successor == node: break + component = tuple(connected_component) + # storing the result + result.append(component) + + for node in graph: + if node not in lowlinks: + strongconnect(node) + + return result + + @property + def dot(self): + result = ['digraph G {'] + for succ in self._preds: + preds = self._preds[succ] + for pred in preds: + result.append(' %s -> %s;' % (pred, succ)) + for node in self._nodes: + result.append(' %s;' % node) + result.append('}') + return '\n'.join(result) + +# +# Unarchiving functionality for zip, tar, tgz, tbz, whl +# + +ARCHIVE_EXTENSIONS = ('.tar.gz', '.tar.bz2', '.tar', '.zip', + '.tgz', '.tbz', '.whl') + +def unarchive(archive_filename, dest_dir, format=None, check=True): + + def check_path(path): + if not isinstance(path, text_type): + path = path.decode('utf-8') + p = os.path.abspath(os.path.join(dest_dir, path)) + if not p.startswith(dest_dir) or p[plen] != os.sep: + raise ValueError('path outside destination: %r' % p) + + dest_dir = os.path.abspath(dest_dir) + plen = len(dest_dir) + archive = None + if format is None: + if archive_filename.endswith(('.zip', '.whl')): + format = 'zip' + elif archive_filename.endswith(('.tar.gz', '.tgz')): + format = 'tgz' + mode = 'r:gz' + elif archive_filename.endswith(('.tar.bz2', '.tbz')): + format = 'tbz' + mode = 'r:bz2' + elif archive_filename.endswith('.tar'): + format = 'tar' + mode = 'r' + else: # pragma: no cover + raise ValueError('Unknown format for %r' % archive_filename) + try: + if format == 'zip': + archive = ZipFile(archive_filename, 'r') + if check: + names = archive.namelist() + for name in names: + check_path(name) + else: + archive = tarfile.open(archive_filename, mode) + if check: + names = archive.getnames() + for name in names: + check_path(name) + if format != 'zip' and sys.version_info[0] < 3: + # See Python issue 17153. If the dest path contains Unicode, + # tarfile extraction fails on Python 2.x if a member path name + # contains non-ASCII characters - it leads to an implicit + # bytes -> unicode conversion using ASCII to decode. + for tarinfo in archive.getmembers(): + if not isinstance(tarinfo.name, text_type): + tarinfo.name = tarinfo.name.decode('utf-8') + archive.extractall(dest_dir) + + finally: + if archive: + archive.close() + + +def zip_dir(directory): + """zip a directory tree into a BytesIO object""" + result = io.BytesIO() + dlen = len(directory) + with ZipFile(result, "w") as zf: + for root, dirs, files in os.walk(directory): + for name in files: + full = os.path.join(root, name) + rel = root[dlen:] + dest = os.path.join(rel, name) + zf.write(full, dest) + return result + +# +# Simple progress bar +# + +UNITS = ('', 'K', 'M', 'G','T','P') + + +class Progress(object): + unknown = 'UNKNOWN' + + def __init__(self, minval=0, maxval=100): + assert maxval is None or maxval >= minval + self.min = self.cur = minval + self.max = maxval + self.started = None + self.elapsed = 0 + self.done = False + + def update(self, curval): + assert self.min <= curval + assert self.max is None or curval <= self.max + self.cur = curval + now = time.time() + if self.started is None: + self.started = now + else: + self.elapsed = now - self.started + + def increment(self, incr): + assert incr >= 0 + self.update(self.cur + incr) + + def start(self): + self.update(self.min) + return self + + def stop(self): + if self.max is not None: + self.update(self.max) + self.done = True + + @property + def maximum(self): + return self.unknown if self.max is None else self.max + + @property + def percentage(self): + if self.done: + result = '100 %' + elif self.max is None: + result = ' ?? %' + else: + v = 100.0 * (self.cur - self.min) / (self.max - self.min) + result = '%3d %%' % v + return result + + def format_duration(self, duration): + if (duration <= 0) and self.max is None or self.cur == self.min: + result = '??:??:??' + #elif duration < 1: + # result = '--:--:--' + else: + result = time.strftime('%H:%M:%S', time.gmtime(duration)) + return result + + @property + def ETA(self): + if self.done: + prefix = 'Done' + t = self.elapsed + #import pdb; pdb.set_trace() + else: + prefix = 'ETA ' + if self.max is None: + t = -1 + elif self.elapsed == 0 or (self.cur == self.min): + t = 0 + else: + #import pdb; pdb.set_trace() + t = float(self.max - self.min) + t /= self.cur - self.min + t = (t - 1) * self.elapsed + return '%s: %s' % (prefix, self.format_duration(t)) + + @property + def speed(self): + if self.elapsed == 0: + result = 0.0 + else: + result = (self.cur - self.min) / self.elapsed + for unit in UNITS: + if result < 1000: + break + result /= 1000.0 + return '%d %sB/s' % (result, unit) + +# +# Glob functionality +# + +RICH_GLOB = re.compile(r'\{([^}]*)\}') +_CHECK_RECURSIVE_GLOB = re.compile(r'[^/\\,{]\*\*|\*\*[^/\\,}]') +_CHECK_MISMATCH_SET = re.compile(r'^[^{]*\}|\{[^}]*$') + + +def iglob(path_glob): + """Extended globbing function that supports ** and {opt1,opt2,opt3}.""" + if _CHECK_RECURSIVE_GLOB.search(path_glob): + msg = """invalid glob %r: recursive glob "**" must be used alone""" + raise ValueError(msg % path_glob) + if _CHECK_MISMATCH_SET.search(path_glob): + msg = """invalid glob %r: mismatching set marker '{' or '}'""" + raise ValueError(msg % path_glob) + return _iglob(path_glob) + + +def _iglob(path_glob): + rich_path_glob = RICH_GLOB.split(path_glob, 1) + if len(rich_path_glob) > 1: + assert len(rich_path_glob) == 3, rich_path_glob + prefix, set, suffix = rich_path_glob + for item in set.split(','): + for path in _iglob(''.join((prefix, item, suffix))): + yield path + else: + if '**' not in path_glob: + for item in std_iglob(path_glob): + yield item + else: + prefix, radical = path_glob.split('**', 1) + if prefix == '': + prefix = '.' + if radical == '': + radical = '*' + else: + # we support both + radical = radical.lstrip('/') + radical = radical.lstrip('\\') + for path, dir, files in os.walk(prefix): + path = os.path.normpath(path) + for fn in _iglob(os.path.join(path, radical)): + yield fn + +if ssl: + from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, + CertificateError) + + +# +# HTTPSConnection which verifies certificates/matches domains +# + + class HTTPSConnection(httplib.HTTPSConnection): + ca_certs = None # set this to the path to the certs file (.pem) + check_domain = True # only used if ca_certs is not None + + # noinspection PyPropertyAccess + def connect(self): + sock = socket.create_connection((self.host, self.port), self.timeout) + if getattr(self, '_tunnel_host', False): + self.sock = sock + self._tunnel() + + if not hasattr(ssl, 'SSLContext'): + # For 2.x + if self.ca_certs: + cert_reqs = ssl.CERT_REQUIRED + else: + cert_reqs = ssl.CERT_NONE + self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, + cert_reqs=cert_reqs, + ssl_version=ssl.PROTOCOL_SSLv23, + ca_certs=self.ca_certs) + else: # pragma: no cover + context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) + if hasattr(ssl, 'OP_NO_SSLv2'): + context.options |= ssl.OP_NO_SSLv2 + if self.cert_file: + context.load_cert_chain(self.cert_file, self.key_file) + kwargs = {} + if self.ca_certs: + context.verify_mode = ssl.CERT_REQUIRED + context.load_verify_locations(cafile=self.ca_certs) + if getattr(ssl, 'HAS_SNI', False): + kwargs['server_hostname'] = self.host + self.sock = context.wrap_socket(sock, **kwargs) + if self.ca_certs and self.check_domain: + try: + match_hostname(self.sock.getpeercert(), self.host) + logger.debug('Host verified: %s', self.host) + except CertificateError: # pragma: no cover + self.sock.shutdown(socket.SHUT_RDWR) + self.sock.close() + raise + + class HTTPSHandler(BaseHTTPSHandler): + def __init__(self, ca_certs, check_domain=True): + BaseHTTPSHandler.__init__(self) + self.ca_certs = ca_certs + self.check_domain = check_domain + + def _conn_maker(self, *args, **kwargs): + """ + This is called to create a connection instance. Normally you'd + pass a connection class to do_open, but it doesn't actually check for + a class, and just expects a callable. As long as we behave just as a + constructor would have, we should be OK. If it ever changes so that + we *must* pass a class, we'll create an UnsafeHTTPSConnection class + which just sets check_domain to False in the class definition, and + choose which one to pass to do_open. + """ + result = HTTPSConnection(*args, **kwargs) + if self.ca_certs: + result.ca_certs = self.ca_certs + result.check_domain = self.check_domain + return result + + def https_open(self, req): + try: + return self.do_open(self._conn_maker, req) + except URLError as e: + if 'certificate verify failed' in str(e.reason): + raise CertificateError('Unable to verify server certificate ' + 'for %s' % req.host) + else: + raise + + # + # To prevent against mixing HTTP traffic with HTTPS (examples: A Man-In-The- + # Middle proxy using HTTP listens on port 443, or an index mistakenly serves + # HTML containing a http://xyz link when it should be https://xyz), + # you can use the following handler class, which does not allow HTTP traffic. + # + # It works by inheriting from HTTPHandler - so build_opener won't add a + # handler for HTTP itself. + # + class HTTPSOnlyHandler(HTTPSHandler, HTTPHandler): + def http_open(self, req): + raise URLError('Unexpected HTTP request on what should be a secure ' + 'connection: %s' % req) + +# +# XML-RPC with timeouts +# + +_ver_info = sys.version_info[:2] + +if _ver_info == (2, 6): + class HTTP(httplib.HTTP): + def __init__(self, host='', port=None, **kwargs): + if port == 0: # 0 means use port 0, not the default port + port = None + self._setup(self._connection_class(host, port, **kwargs)) + + + if ssl: + class HTTPS(httplib.HTTPS): + def __init__(self, host='', port=None, **kwargs): + if port == 0: # 0 means use port 0, not the default port + port = None + self._setup(self._connection_class(host, port, **kwargs)) + + +class Transport(xmlrpclib.Transport): + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.Transport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, x509 = self.get_host_info(host) + if _ver_info == (2, 6): + result = HTTP(h, timeout=self.timeout) + else: + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPConnection(h) + result = self._connection[1] + return result + +if ssl: + class SafeTransport(xmlrpclib.SafeTransport): + def __init__(self, timeout, use_datetime=0): + self.timeout = timeout + xmlrpclib.SafeTransport.__init__(self, use_datetime) + + def make_connection(self, host): + h, eh, kwargs = self.get_host_info(host) + if not kwargs: + kwargs = {} + kwargs['timeout'] = self.timeout + if _ver_info == (2, 6): + result = HTTPS(host, None, **kwargs) + else: + if not self._connection or host != self._connection[0]: + self._extra_headers = eh + self._connection = host, httplib.HTTPSConnection(h, None, + **kwargs) + result = self._connection[1] + return result + + +class ServerProxy(xmlrpclib.ServerProxy): + def __init__(self, uri, **kwargs): + self.timeout = timeout = kwargs.pop('timeout', None) + # The above classes only come into play if a timeout + # is specified + if timeout is not None: + scheme, _ = splittype(uri) + use_datetime = kwargs.get('use_datetime', 0) + if scheme == 'https': + tcls = SafeTransport + else: + tcls = Transport + kwargs['transport'] = t = tcls(timeout, use_datetime=use_datetime) + self.transport = t + xmlrpclib.ServerProxy.__init__(self, uri, **kwargs) + +# +# CSV functionality. This is provided because on 2.x, the csv module can't +# handle Unicode. However, we need to deal with Unicode in e.g. RECORD files. +# + +def _csv_open(fn, mode, **kwargs): + if sys.version_info[0] < 3: + mode += 'b' + else: + kwargs['newline'] = '' + # Python 3 determines encoding from locale. Force 'utf-8' + # file encoding to match other forced utf-8 encoding + kwargs['encoding'] = 'utf-8' + return open(fn, mode, **kwargs) + + +class CSVBase(object): + defaults = { + 'delimiter': str(','), # The strs are used because we need native + 'quotechar': str('"'), # str in the csv API (2.x won't take + 'lineterminator': str('\n') # Unicode) + } + + def __enter__(self): + return self + + def __exit__(self, *exc_info): + self.stream.close() + + +class CSVReader(CSVBase): + def __init__(self, **kwargs): + if 'stream' in kwargs: + stream = kwargs['stream'] + if sys.version_info[0] >= 3: + # needs to be a text stream + stream = codecs.getreader('utf-8')(stream) + self.stream = stream + else: + self.stream = _csv_open(kwargs['path'], 'r') + self.reader = csv.reader(self.stream, **self.defaults) + + def __iter__(self): + return self + + def next(self): + result = next(self.reader) + if sys.version_info[0] < 3: + for i, item in enumerate(result): + if not isinstance(item, text_type): + result[i] = item.decode('utf-8') + return result + + __next__ = next + +class CSVWriter(CSVBase): + def __init__(self, fn, **kwargs): + self.stream = _csv_open(fn, 'w') + self.writer = csv.writer(self.stream, **self.defaults) + + def writerow(self, row): + if sys.version_info[0] < 3: + r = [] + for item in row: + if isinstance(item, text_type): + item = item.encode('utf-8') + r.append(item) + row = r + self.writer.writerow(row) + +# +# Configurator functionality +# + +class Configurator(BaseConfigurator): + + value_converters = dict(BaseConfigurator.value_converters) + value_converters['inc'] = 'inc_convert' + + def __init__(self, config, base=None): + super(Configurator, self).__init__(config) + self.base = base or os.getcwd() + + def configure_custom(self, config): + def convert(o): + if isinstance(o, (list, tuple)): + result = type(o)([convert(i) for i in o]) + elif isinstance(o, dict): + if '()' in o: + result = self.configure_custom(o) + else: + result = {} + for k in o: + result[k] = convert(o[k]) + else: + result = self.convert(o) + return result + + c = config.pop('()') + if not callable(c): + c = self.resolve(c) + props = config.pop('.', None) + # Check for valid identifiers + args = config.pop('[]', ()) + if args: + args = tuple([convert(o) for o in args]) + items = [(k, convert(config[k])) for k in config if valid_ident(k)] + kwargs = dict(items) + result = c(*args, **kwargs) + if props: + for n, v in props.items(): + setattr(result, n, convert(v)) + return result + + def __getitem__(self, key): + result = self.config[key] + if isinstance(result, dict) and '()' in result: + self.config[key] = result = self.configure_custom(result) + return result + + def inc_convert(self, value): + """Default converter for the inc:// protocol.""" + if not os.path.isabs(value): + value = os.path.join(self.base, value) + with codecs.open(value, 'r', encoding='utf-8') as f: + result = json.load(f) + return result + + +class SubprocessMixin(object): + """ + Mixin for running subprocesses and capturing their output + """ + def __init__(self, verbose=False, progress=None): + self.verbose = verbose + self.progress = progress + + def reader(self, stream, context): + """ + Read lines from a subprocess' output stream and either pass to a progress + callable (if specified) or write progress information to sys.stderr. + """ + progress = self.progress + verbose = self.verbose + while True: + s = stream.readline() + if not s: + break + if progress is not None: + progress(s, context) + else: + if not verbose: + sys.stderr.write('.') + else: + sys.stderr.write(s.decode('utf-8')) + sys.stderr.flush() + stream.close() + + def run_command(self, cmd, **kwargs): + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, **kwargs) + t1 = threading.Thread(target=self.reader, args=(p.stdout, 'stdout')) + t1.start() + t2 = threading.Thread(target=self.reader, args=(p.stderr, 'stderr')) + t2.start() + p.wait() + t1.join() + t2.join() + if self.progress is not None: + self.progress('done.', 'main') + elif self.verbose: + sys.stderr.write('done.\n') + return p + + +def normalize_name(name): + """Normalize a python package name a la PEP 503""" + # https://www.python.org/dev/peps/pep-0503/#normalized-names + return re.sub('[-_.]+', '-', name).lower() diff --git a/Lib/site-packages/pip/_vendor/distlib/version.py b/Lib/site-packages/pip/_vendor/distlib/version.py new file mode 100644 index 0000000..3eebe18 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distlib/version.py @@ -0,0 +1,736 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2012-2017 The Python Software Foundation. +# See LICENSE.txt and CONTRIBUTORS.txt. +# +""" +Implementation of a flexible versioning scheme providing support for PEP-440, +setuptools-compatible and semantic versioning. +""" + +import logging +import re + +from .compat import string_types +from .util import parse_requirement + +__all__ = ['NormalizedVersion', 'NormalizedMatcher', + 'LegacyVersion', 'LegacyMatcher', + 'SemanticVersion', 'SemanticMatcher', + 'UnsupportedVersionError', 'get_scheme'] + +logger = logging.getLogger(__name__) + + +class UnsupportedVersionError(ValueError): + """This is an unsupported version.""" + pass + + +class Version(object): + def __init__(self, s): + self._string = s = s.strip() + self._parts = parts = self.parse(s) + assert isinstance(parts, tuple) + assert len(parts) > 0 + + def parse(self, s): + raise NotImplementedError('please implement in a subclass') + + def _check_compatible(self, other): + if type(self) != type(other): + raise TypeError('cannot compare %r and %r' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + def __lt__(self, other): + self._check_compatible(other) + return self._parts < other._parts + + def __gt__(self, other): + return not (self.__lt__(other) or self.__eq__(other)) + + def __le__(self, other): + return self.__lt__(other) or self.__eq__(other) + + def __ge__(self, other): + return self.__gt__(other) or self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self._parts) + + def __repr__(self): + return "%s('%s')" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + @property + def is_prerelease(self): + raise NotImplementedError('Please implement in subclasses.') + + +class Matcher(object): + version_class = None + + # value is either a callable or the name of a method + _operators = { + '<': lambda v, c, p: v < c, + '>': lambda v, c, p: v > c, + '<=': lambda v, c, p: v == c or v < c, + '>=': lambda v, c, p: v == c or v > c, + '==': lambda v, c, p: v == c, + '===': lambda v, c, p: v == c, + # by default, compatible => >=. + '~=': lambda v, c, p: v == c or v > c, + '!=': lambda v, c, p: v != c, + } + + # this is a method only to support alternative implementations + # via overriding + def parse_requirement(self, s): + return parse_requirement(s) + + def __init__(self, s): + if self.version_class is None: + raise ValueError('Please specify a version class') + self._string = s = s.strip() + r = self.parse_requirement(s) + if not r: + raise ValueError('Not valid: %r' % s) + self.name = r.name + self.key = self.name.lower() # for case-insensitive comparisons + clist = [] + if r.constraints: + # import pdb; pdb.set_trace() + for op, s in r.constraints: + if s.endswith('.*'): + if op not in ('==', '!='): + raise ValueError('\'.*\' not allowed for ' + '%r constraints' % op) + # Could be a partial version (e.g. for '2.*') which + # won't parse as a version, so keep it as a string + vn, prefix = s[:-2], True + # Just to check that vn is a valid version + self.version_class(vn) + else: + # Should parse as a version, so we can create an + # instance for the comparison + vn, prefix = self.version_class(s), False + clist.append((op, vn, prefix)) + self._parts = tuple(clist) + + def match(self, version): + """ + Check if the provided version matches the constraints. + + :param version: The version to match against this instance. + :type version: String or :class:`Version` instance. + """ + if isinstance(version, string_types): + version = self.version_class(version) + for operator, constraint, prefix in self._parts: + f = self._operators.get(operator) + if isinstance(f, string_types): + f = getattr(self, f) + if not f: + msg = ('%r not implemented ' + 'for %s' % (operator, self.__class__.__name__)) + raise NotImplementedError(msg) + if not f(version, constraint, prefix): + return False + return True + + @property + def exact_version(self): + result = None + if len(self._parts) == 1 and self._parts[0][0] in ('==', '==='): + result = self._parts[0][1] + return result + + def _check_compatible(self, other): + if type(self) != type(other) or self.name != other.name: + raise TypeError('cannot compare %s and %s' % (self, other)) + + def __eq__(self, other): + self._check_compatible(other) + return self.key == other.key and self._parts == other._parts + + def __ne__(self, other): + return not self.__eq__(other) + + # See http://docs.python.org/reference/datamodel#object.__hash__ + def __hash__(self): + return hash(self.key) + hash(self._parts) + + def __repr__(self): + return "%s(%r)" % (self.__class__.__name__, self._string) + + def __str__(self): + return self._string + + +PEP440_VERSION_RE = re.compile(r'^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?' + r'(\.(post)(\d+))?(\.(dev)(\d+))?' + r'(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$') + + +def _pep_440_key(s): + s = s.strip() + m = PEP440_VERSION_RE.match(s) + if not m: + raise UnsupportedVersionError('Not a valid version: %s' % s) + groups = m.groups() + nums = tuple(int(v) for v in groups[1].split('.')) + while len(nums) > 1 and nums[-1] == 0: + nums = nums[:-1] + + if not groups[0]: + epoch = 0 + else: + epoch = int(groups[0]) + pre = groups[4:6] + post = groups[7:9] + dev = groups[10:12] + local = groups[13] + if pre == (None, None): + pre = () + else: + pre = pre[0], int(pre[1]) + if post == (None, None): + post = () + else: + post = post[0], int(post[1]) + if dev == (None, None): + dev = () + else: + dev = dev[0], int(dev[1]) + if local is None: + local = () + else: + parts = [] + for part in local.split('.'): + # to ensure that numeric compares as > lexicographic, avoid + # comparing them directly, but encode a tuple which ensures + # correct sorting + if part.isdigit(): + part = (1, int(part)) + else: + part = (0, part) + parts.append(part) + local = tuple(parts) + if not pre: + # either before pre-release, or final release and after + if not post and dev: + # before pre-release + pre = ('a', -1) # to sort before a0 + else: + pre = ('z',) # to sort after all pre-releases + # now look at the state of post and dev. + if not post: + post = ('_',) # sort before 'a' + if not dev: + dev = ('final',) + + #print('%s -> %s' % (s, m.groups())) + return epoch, nums, pre, post, dev, local + + +_normalized_key = _pep_440_key + + +class NormalizedVersion(Version): + """A rational version. + + Good: + 1.2 # equivalent to "1.2.0" + 1.2.0 + 1.2a1 + 1.2.3a2 + 1.2.3b1 + 1.2.3c1 + 1.2.3.4 + TODO: fill this out + + Bad: + 1 # minimum two numbers + 1.2a # release level must have a release serial + 1.2.3b + """ + def parse(self, s): + result = _normalized_key(s) + # _normalized_key loses trailing zeroes in the release + # clause, since that's needed to ensure that X.Y == X.Y.0 == X.Y.0.0 + # However, PEP 440 prefix matching needs it: for example, + # (~= 1.4.5.0) matches differently to (~= 1.4.5.0.0). + m = PEP440_VERSION_RE.match(s) # must succeed + groups = m.groups() + self._release_clause = tuple(int(v) for v in groups[1].split('.')) + return result + + PREREL_TAGS = set(['a', 'b', 'c', 'rc', 'dev']) + + @property + def is_prerelease(self): + return any(t[0] in self.PREREL_TAGS for t in self._parts if t) + + +def _match_prefix(x, y): + x = str(x) + y = str(y) + if x == y: + return True + if not x.startswith(y): + return False + n = len(y) + return x[n] == '.' + + +class NormalizedMatcher(Matcher): + version_class = NormalizedVersion + + # value is either a callable or the name of a method + _operators = { + '~=': '_match_compatible', + '<': '_match_lt', + '>': '_match_gt', + '<=': '_match_le', + '>=': '_match_ge', + '==': '_match_eq', + '===': '_match_arbitrary', + '!=': '_match_ne', + } + + def _adjust_local(self, version, constraint, prefix): + if prefix: + strip_local = '+' not in constraint and version._parts[-1] + else: + # both constraint and version are + # NormalizedVersion instances. + # If constraint does not have a local component, + # ensure the version doesn't, either. + strip_local = not constraint._parts[-1] and version._parts[-1] + if strip_local: + s = version._string.split('+', 1)[0] + version = self.version_class(s) + return version, constraint + + def _match_lt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version >= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_gt(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version <= constraint: + return False + release_clause = constraint._release_clause + pfx = '.'.join([str(i) for i in release_clause]) + return not _match_prefix(version, pfx) + + def _match_le(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version <= constraint + + def _match_ge(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + return version >= constraint + + def _match_eq(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version == constraint) + else: + result = _match_prefix(version, constraint) + return result + + def _match_arbitrary(self, version, constraint, prefix): + return str(version) == str(constraint) + + def _match_ne(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if not prefix: + result = (version != constraint) + else: + result = not _match_prefix(version, constraint) + return result + + def _match_compatible(self, version, constraint, prefix): + version, constraint = self._adjust_local(version, constraint, prefix) + if version == constraint: + return True + if version < constraint: + return False +# if not prefix: +# return True + release_clause = constraint._release_clause + if len(release_clause) > 1: + release_clause = release_clause[:-1] + pfx = '.'.join([str(i) for i in release_clause]) + return _match_prefix(version, pfx) + +_REPLACEMENTS = ( + (re.compile('[.+-]$'), ''), # remove trailing puncts + (re.compile(r'^[.](\d)'), r'0.\1'), # .N -> 0.N at start + (re.compile('^[.-]'), ''), # remove leading puncts + (re.compile(r'^\((.*)\)$'), r'\1'), # remove parentheses + (re.compile(r'^v(ersion)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile(r'^r(ev)?\s*(\d+)'), r'\2'), # remove leading v(ersion) + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\b(alfa|apha)\b'), 'alpha'), # misspelt alpha + (re.compile(r'\b(pre-alpha|prealpha)\b'), + 'pre.alpha'), # standardise + (re.compile(r'\(beta\)$'), 'beta'), # remove parentheses +) + +_SUFFIX_REPLACEMENTS = ( + (re.compile('^[:~._+-]+'), ''), # remove leading puncts + (re.compile('[,*")([\\]]'), ''), # remove unwanted chars + (re.compile('[~:+_ -]'), '.'), # replace illegal chars + (re.compile('[.]{2,}'), '.'), # multiple runs of '.' + (re.compile(r'\.$'), ''), # trailing '.' +) + +_NUMERIC_PREFIX = re.compile(r'(\d+(\.\d+)*)') + + +def _suggest_semantic_version(s): + """ + Try to suggest a semantic form for a version for which + _suggest_normalized_version couldn't come up with anything. + """ + result = s.strip().lower() + for pat, repl in _REPLACEMENTS: + result = pat.sub(repl, result) + if not result: + result = '0.0.0' + + # Now look for numeric prefix, and separate it out from + # the rest. + #import pdb; pdb.set_trace() + m = _NUMERIC_PREFIX.match(result) + if not m: + prefix = '0.0.0' + suffix = result + else: + prefix = m.groups()[0].split('.') + prefix = [int(i) for i in prefix] + while len(prefix) < 3: + prefix.append(0) + if len(prefix) == 3: + suffix = result[m.end():] + else: + suffix = '.'.join([str(i) for i in prefix[3:]]) + result[m.end():] + prefix = prefix[:3] + prefix = '.'.join([str(i) for i in prefix]) + suffix = suffix.strip() + if suffix: + #import pdb; pdb.set_trace() + # massage the suffix. + for pat, repl in _SUFFIX_REPLACEMENTS: + suffix = pat.sub(repl, suffix) + + if not suffix: + result = prefix + else: + sep = '-' if 'dev' in suffix else '+' + result = prefix + sep + suffix + if not is_semver(result): + result = None + return result + + +def _suggest_normalized_version(s): + """Suggest a normalized version close to the given version string. + + If you have a version string that isn't rational (i.e. NormalizedVersion + doesn't like it) then you might be able to get an equivalent (or close) + rational version from this function. + + This does a number of simple normalizations to the given string, based + on observation of versions currently in use on PyPI. Given a dump of + those version during PyCon 2009, 4287 of them: + - 2312 (53.93%) match NormalizedVersion without change + with the automatic suggestion + - 3474 (81.04%) match when using this suggestion method + + @param s {str} An irrational version string. + @returns A rational version string, or None, if couldn't determine one. + """ + try: + _normalized_key(s) + return s # already rational + except UnsupportedVersionError: + pass + + rs = s.lower() + + # part of this could use maketrans + for orig, repl in (('-alpha', 'a'), ('-beta', 'b'), ('alpha', 'a'), + ('beta', 'b'), ('rc', 'c'), ('-final', ''), + ('-pre', 'c'), + ('-release', ''), ('.release', ''), ('-stable', ''), + ('+', '.'), ('_', '.'), (' ', ''), ('.final', ''), + ('final', '')): + rs = rs.replace(orig, repl) + + # if something ends with dev or pre, we add a 0 + rs = re.sub(r"pre$", r"pre0", rs) + rs = re.sub(r"dev$", r"dev0", rs) + + # if we have something like "b-2" or "a.2" at the end of the + # version, that is probably beta, alpha, etc + # let's remove the dash or dot + rs = re.sub(r"([abc]|rc)[\-\.](\d+)$", r"\1\2", rs) + + # 1.0-dev-r371 -> 1.0.dev371 + # 0.1-dev-r79 -> 0.1.dev79 + rs = re.sub(r"[\-\.](dev)[\-\.]?r?(\d+)$", r".\1\2", rs) + + # Clean: 2.0.a.3, 2.0.b1, 0.9.0~c1 + rs = re.sub(r"[.~]?([abc])\.?", r"\1", rs) + + # Clean: v0.3, v1.0 + if rs.startswith('v'): + rs = rs[1:] + + # Clean leading '0's on numbers. + #TODO: unintended side-effect on, e.g., "2003.05.09" + # PyPI stats: 77 (~2%) better + rs = re.sub(r"\b0+(\d+)(?!\d)", r"\1", rs) + + # Clean a/b/c with no version. E.g. "1.0a" -> "1.0a0". Setuptools infers + # zero. + # PyPI stats: 245 (7.56%) better + rs = re.sub(r"(\d+[abc])$", r"\g<1>0", rs) + + # the 'dev-rNNN' tag is a dev tag + rs = re.sub(r"\.?(dev-r|dev\.r)\.?(\d+)$", r".dev\2", rs) + + # clean the - when used as a pre delimiter + rs = re.sub(r"-(a|b|c)(\d+)$", r"\1\2", rs) + + # a terminal "dev" or "devel" can be changed into ".dev0" + rs = re.sub(r"[\.\-](dev|devel)$", r".dev0", rs) + + # a terminal "dev" can be changed into ".dev0" + rs = re.sub(r"(?![\.\-])dev$", r".dev0", rs) + + # a terminal "final" or "stable" can be removed + rs = re.sub(r"(final|stable)$", "", rs) + + # The 'r' and the '-' tags are post release tags + # 0.4a1.r10 -> 0.4a1.post10 + # 0.9.33-17222 -> 0.9.33.post17222 + # 0.9.33-r17222 -> 0.9.33.post17222 + rs = re.sub(r"\.?(r|-|-r)\.?(\d+)$", r".post\2", rs) + + # Clean 'r' instead of 'dev' usage: + # 0.9.33+r17222 -> 0.9.33.dev17222 + # 1.0dev123 -> 1.0.dev123 + # 1.0.git123 -> 1.0.dev123 + # 1.0.bzr123 -> 1.0.dev123 + # 0.1a0dev.123 -> 0.1a0.dev123 + # PyPI stats: ~150 (~4%) better + rs = re.sub(r"\.?(dev|git|bzr)\.?(\d+)$", r".dev\2", rs) + + # Clean '.pre' (normalized from '-pre' above) instead of 'c' usage: + # 0.2.pre1 -> 0.2c1 + # 0.2-c1 -> 0.2c1 + # 1.0preview123 -> 1.0c123 + # PyPI stats: ~21 (0.62%) better + rs = re.sub(r"\.?(pre|preview|-c)(\d+)$", r"c\g<2>", rs) + + # Tcl/Tk uses "px" for their post release markers + rs = re.sub(r"p(\d+)$", r".post\1", rs) + + try: + _normalized_key(rs) + except UnsupportedVersionError: + rs = None + return rs + +# +# Legacy version processing (distribute-compatible) +# + +_VERSION_PART = re.compile(r'([a-z]+|\d+|[\.-])', re.I) +_VERSION_REPLACE = { + 'pre': 'c', + 'preview': 'c', + '-': 'final-', + 'rc': 'c', + 'dev': '@', + '': None, + '.': None, +} + + +def _legacy_key(s): + def get_parts(s): + result = [] + for p in _VERSION_PART.split(s.lower()): + p = _VERSION_REPLACE.get(p, p) + if p: + if '0' <= p[:1] <= '9': + p = p.zfill(8) + else: + p = '*' + p + result.append(p) + result.append('*final') + return result + + result = [] + for p in get_parts(s): + if p.startswith('*'): + if p < '*final': + while result and result[-1] == '*final-': + result.pop() + while result and result[-1] == '00000000': + result.pop() + result.append(p) + return tuple(result) + + +class LegacyVersion(Version): + def parse(self, s): + return _legacy_key(s) + + @property + def is_prerelease(self): + result = False + for x in self._parts: + if (isinstance(x, string_types) and x.startswith('*') and + x < '*final'): + result = True + break + return result + + +class LegacyMatcher(Matcher): + version_class = LegacyVersion + + _operators = dict(Matcher._operators) + _operators['~='] = '_match_compatible' + + numeric_re = re.compile(r'^(\d+(\.\d+)*)') + + def _match_compatible(self, version, constraint, prefix): + if version < constraint: + return False + m = self.numeric_re.match(str(constraint)) + if not m: + logger.warning('Cannot compute compatible match for version %s ' + ' and constraint %s', version, constraint) + return True + s = m.groups()[0] + if '.' in s: + s = s.rsplit('.', 1)[0] + return _match_prefix(version, s) + +# +# Semantic versioning +# + +_SEMVER_RE = re.compile(r'^(\d+)\.(\d+)\.(\d+)' + r'(-[a-z0-9]+(\.[a-z0-9-]+)*)?' + r'(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$', re.I) + + +def is_semver(s): + return _SEMVER_RE.match(s) + + +def _semantic_key(s): + def make_tuple(s, absent): + if s is None: + result = (absent,) + else: + parts = s[1:].split('.') + # We can't compare ints and strings on Python 3, so fudge it + # by zero-filling numeric values so simulate a numeric comparison + result = tuple([p.zfill(8) if p.isdigit() else p for p in parts]) + return result + + m = is_semver(s) + if not m: + raise UnsupportedVersionError(s) + groups = m.groups() + major, minor, patch = [int(i) for i in groups[:3]] + # choose the '|' and '*' so that versions sort correctly + pre, build = make_tuple(groups[3], '|'), make_tuple(groups[5], '*') + return (major, minor, patch), pre, build + + +class SemanticVersion(Version): + def parse(self, s): + return _semantic_key(s) + + @property + def is_prerelease(self): + return self._parts[1][0] != '|' + + +class SemanticMatcher(Matcher): + version_class = SemanticVersion + + +class VersionScheme(object): + def __init__(self, key, matcher, suggester=None): + self.key = key + self.matcher = matcher + self.suggester = suggester + + def is_valid_version(self, s): + try: + self.matcher.version_class(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_matcher(self, s): + try: + self.matcher(s) + result = True + except UnsupportedVersionError: + result = False + return result + + def is_valid_constraint_list(self, s): + """ + Used for processing some metadata fields + """ + return self.is_valid_matcher('dummy_name (%s)' % s) + + def suggest(self, s): + if self.suggester is None: + result = None + else: + result = self.suggester(s) + return result + +_SCHEMES = { + 'normalized': VersionScheme(_normalized_key, NormalizedMatcher, + _suggest_normalized_version), + 'legacy': VersionScheme(_legacy_key, LegacyMatcher, lambda self, s: s), + 'semantic': VersionScheme(_semantic_key, SemanticMatcher, + _suggest_semantic_version), +} + +_SCHEMES['default'] = _SCHEMES['normalized'] + + +def get_scheme(name): + if name not in _SCHEMES: + raise ValueError('unknown scheme name: %r' % name) + return _SCHEMES[name] diff --git a/Lib/site-packages/pip/_vendor/distlib/w32.exe b/Lib/site-packages/pip/_vendor/distlib/w32.exe new file mode 100644 index 0000000000000000000000000000000000000000..e6439e9e45897365d5ac6a85a46864c158a225fd GIT binary patch literal 90112 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�gPVRVBXt_FM7e4<}XM;HRH{62JZSn^<*L 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 OB+yBqlfeHwf&T)jA)JE% literal 0 HcmV?d00001 diff --git a/Lib/site-packages/pip/_vendor/distlib/w64.exe b/Lib/site-packages/pip/_vendor/distlib/w64.exe new file mode 100644 index 0000000000000000000000000000000000000000..46139dbf9400b7bc0b64e6756ce17b4eb5fd7436 GIT binary patch literal 99840 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[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))? +-(?P\w+\d+(\.\w+\d+)*) +-(?P\w+) +-(?P\w+(\.\w+)*) +\.whl$ +''', re.IGNORECASE | re.VERBOSE) + +NAME_VERSION_RE = re.compile(r''' +(?P[^-]+) +-(?P\d+[^-]*) +(-(?P\d+[^-]*))?$ +''', re.IGNORECASE | re.VERBOSE) + +SHEBANG_RE = re.compile(br'\s*#![^\r\n]*') +SHEBANG_DETAIL_RE = re.compile(br'^(\s*#!("[^"]+"|\S+))\s+(.*)$') +SHEBANG_PYTHON = b'#!python' +SHEBANG_PYTHONW = b'#!pythonw' + +if os.sep == '/': + to_posix = lambda o: o +else: + to_posix = lambda o: o.replace(os.sep, '/') + + +class Mounter(object): + def __init__(self): + self.impure_wheels = {} + self.libs = {} + + def add(self, pathname, extensions): + self.impure_wheels[pathname] = extensions + self.libs.update(extensions) + + def remove(self, pathname): + extensions = self.impure_wheels.pop(pathname) + for k, v in extensions: + if k in self.libs: + del self.libs[k] + + def find_module(self, fullname, path=None): + if fullname in self.libs: + result = self + else: + result = None + return result + + def load_module(self, fullname): + if fullname in sys.modules: + result = sys.modules[fullname] + else: + if fullname not in self.libs: + raise ImportError('unable to find extension for %s' % fullname) + result = imp.load_dynamic(fullname, self.libs[fullname]) + result.__loader__ = self + parts = fullname.rsplit('.', 1) + if len(parts) > 1: + result.__package__ = parts[0] + return result + +_hook = Mounter() + + +class Wheel(object): + """ + Class to build and install from Wheel files (PEP 427). + """ + + wheel_version = (1, 1) + hash_kind = 'sha256' + + def __init__(self, filename=None, sign=False, verify=False): + """ + Initialise an instance using a (valid) filename. + """ + self.sign = sign + self.should_verify = verify + self.buildver = '' + self.pyver = [PYVER] + self.abi = ['none'] + self.arch = ['any'] + self.dirname = os.getcwd() + if filename is None: + self.name = 'dummy' + self.version = '0.1' + self._filename = self.filename + else: + m = NAME_VERSION_RE.match(filename) + if m: + info = m.groupdict('') + self.name = info['nm'] + # Reinstate the local version separator + self.version = info['vn'].replace('_', '-') + self.buildver = info['bn'] + self._filename = self.filename + else: + dirname, filename = os.path.split(filename) + m = FILENAME_RE.match(filename) + if not m: + raise DistlibException('Invalid name or ' + 'filename: %r' % filename) + if dirname: + self.dirname = os.path.abspath(dirname) + self._filename = filename + info = m.groupdict('') + self.name = info['nm'] + self.version = info['vn'] + self.buildver = info['bn'] + self.pyver = info['py'].split('.') + self.abi = info['bi'].split('.') + self.arch = info['ar'].split('.') + + @property + def filename(self): + """ + Build and return a filename from the various components. + """ + if self.buildver: + buildver = '-' + self.buildver + else: + buildver = '' + pyver = '.'.join(self.pyver) + abi = '.'.join(self.abi) + arch = '.'.join(self.arch) + # replace - with _ as a local version separator + version = self.version.replace('-', '_') + return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver, + pyver, abi, arch) + + @property + def exists(self): + path = os.path.join(self.dirname, self.filename) + return os.path.isfile(path) + + @property + def tags(self): + for pyver in self.pyver: + for abi in self.abi: + for arch in self.arch: + yield pyver, abi, arch + + @cached_property + def metadata(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + wrapper = codecs.getreader('utf-8') + with ZipFile(pathname, 'r') as zf: + wheel_metadata = self.get_wheel_metadata(zf) + wv = wheel_metadata['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + if file_version < (1, 1): + fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME, 'METADATA'] + else: + fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME] + result = None + for fn in fns: + try: + metadata_filename = posixpath.join(info_dir, fn) + with zf.open(metadata_filename) as bf: + wf = wrapper(bf) + result = Metadata(fileobj=wf) + if result: + break + except KeyError: + pass + if not result: + raise ValueError('Invalid wheel, because metadata is ' + 'missing: looked in %s' % ', '.join(fns)) + return result + + def get_wheel_metadata(self, zf): + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + metadata_filename = posixpath.join(info_dir, 'WHEEL') + with zf.open(metadata_filename) as bf: + wf = codecs.getreader('utf-8')(bf) + message = message_from_file(wf) + return dict(message) + + @cached_property + def info(self): + pathname = os.path.join(self.dirname, self.filename) + with ZipFile(pathname, 'r') as zf: + result = self.get_wheel_metadata(zf) + return result + + def process_shebang(self, data): + m = SHEBANG_RE.match(data) + if m: + end = m.end() + shebang, data_after_shebang = data[:end], data[end:] + # Preserve any arguments after the interpreter + if b'pythonw' in shebang.lower(): + shebang_python = SHEBANG_PYTHONW + else: + shebang_python = SHEBANG_PYTHON + m = SHEBANG_DETAIL_RE.match(shebang) + if m: + args = b' ' + m.groups()[-1] + else: + args = b'' + shebang = shebang_python + args + data = shebang + data_after_shebang + else: + cr = data.find(b'\r') + lf = data.find(b'\n') + if cr < 0 or cr > lf: + term = b'\n' + else: + if data[cr:cr + 2] == b'\r\n': + term = b'\r\n' + else: + term = b'\r' + data = SHEBANG_PYTHON + term + data + return data + + def get_hash(self, data, hash_kind=None): + if hash_kind is None: + hash_kind = self.hash_kind + try: + hasher = getattr(hashlib, hash_kind) + except AttributeError: + raise DistlibException('Unsupported hash algorithm: %r' % hash_kind) + result = hasher(data).digest() + result = base64.urlsafe_b64encode(result).rstrip(b'=').decode('ascii') + return hash_kind, result + + def write_record(self, records, record_path, base): + records = list(records) # make a copy for sorting + p = to_posix(os.path.relpath(record_path, base)) + records.append((p, '', '')) + records.sort() + with CSVWriter(record_path) as writer: + for row in records: + writer.writerow(row) + + def write_records(self, info, libdir, archive_paths): + records = [] + distinfo, info_dir = info + hasher = getattr(hashlib, self.hash_kind) + for ap, p in archive_paths: + with open(p, 'rb') as f: + data = f.read() + digest = '%s=%s' % self.get_hash(data) + size = os.path.getsize(p) + records.append((ap, digest, size)) + + p = os.path.join(distinfo, 'RECORD') + self.write_record(records, p, libdir) + ap = to_posix(os.path.join(info_dir, 'RECORD')) + archive_paths.append((ap, p)) + + def build_zip(self, pathname, archive_paths): + with ZipFile(pathname, 'w', zipfile.ZIP_DEFLATED) as zf: + for ap, p in archive_paths: + logger.debug('Wrote %s to %s in wheel', p, ap) + zf.write(p, ap) + + def build(self, paths, tags=None, wheel_version=None): + """ + Build a wheel from files in specified paths, and use any specified tags + when determining the name of the wheel. + """ + if tags is None: + tags = {} + + libkey = list(filter(lambda o: o in paths, ('purelib', 'platlib')))[0] + if libkey == 'platlib': + is_pure = 'false' + default_pyver = [IMPVER] + default_abi = [ABI] + default_arch = [ARCH] + else: + is_pure = 'true' + default_pyver = [PYVER] + default_abi = ['none'] + default_arch = ['any'] + + self.pyver = tags.get('pyver', default_pyver) + self.abi = tags.get('abi', default_abi) + self.arch = tags.get('arch', default_arch) + + libdir = paths[libkey] + + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + archive_paths = [] + + # First, stuff which is not in site-packages + for key in ('data', 'headers', 'scripts'): + if key not in paths: + continue + path = paths[key] + if os.path.isdir(path): + for root, dirs, files in os.walk(path): + for fn in files: + p = fsdecode(os.path.join(root, fn)) + rp = os.path.relpath(p, path) + ap = to_posix(os.path.join(data_dir, key, rp)) + archive_paths.append((ap, p)) + if key == 'scripts' and not p.endswith('.exe'): + with open(p, 'rb') as f: + data = f.read() + data = self.process_shebang(data) + with open(p, 'wb') as f: + f.write(data) + + # Now, stuff which is in site-packages, other than the + # distinfo stuff. + path = libdir + distinfo = None + for root, dirs, files in os.walk(path): + if root == path: + # At the top level only, save distinfo for later + # and skip it for now + for i, dn in enumerate(dirs): + dn = fsdecode(dn) + if dn.endswith('.dist-info'): + distinfo = os.path.join(root, dn) + del dirs[i] + break + assert distinfo, '.dist-info directory expected, not found' + + for fn in files: + # comment out next suite to leave .pyc files in + if fsdecode(fn).endswith(('.pyc', '.pyo')): + continue + p = os.path.join(root, fn) + rp = to_posix(os.path.relpath(p, path)) + archive_paths.append((rp, p)) + + # Now distinfo. Assumed to be flat, i.e. os.listdir is enough. + files = os.listdir(distinfo) + for fn in files: + if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): + p = fsdecode(os.path.join(distinfo, fn)) + ap = to_posix(os.path.join(info_dir, fn)) + archive_paths.append((ap, p)) + + wheel_metadata = [ + 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version), + 'Generator: distlib %s' % __version__, + 'Root-Is-Purelib: %s' % is_pure, + ] + for pyver, abi, arch in self.tags: + wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch)) + p = os.path.join(distinfo, 'WHEEL') + with open(p, 'w') as f: + f.write('\n'.join(wheel_metadata)) + ap = to_posix(os.path.join(info_dir, 'WHEEL')) + archive_paths.append((ap, p)) + + # Now, at last, RECORD. + # Paths in here are archive paths - nothing else makes sense. + self.write_records((distinfo, info_dir), libdir, archive_paths) + # Now, ready to build the zip file + pathname = os.path.join(self.dirname, self.filename) + self.build_zip(pathname, archive_paths) + return pathname + + def skip_entry(self, arcname): + """ + Determine whether an archive entry should be skipped when verifying + or installing. + """ + # The signature file won't be in RECORD, + # and we don't currently don't do anything with it + # We also skip directories, as they won't be in RECORD + # either. See: + # + # https://github.com/pypa/wheel/issues/294 + # https://github.com/pypa/wheel/issues/287 + # https://github.com/pypa/wheel/pull/289 + # + return arcname.endswith(('/', '/RECORD.jws')) + + def install(self, paths, maker, **kwargs): + """ + Install a wheel to the specified paths. If kwarg ``warner`` is + specified, it should be a callable, which will be called with two + tuples indicating the wheel version of this software and the wheel + version in the file, if there is a discrepancy in the versions. + This can be used to issue any warnings to raise any exceptions. + If kwarg ``lib_only`` is True, only the purelib/platlib files are + installed, and the headers, scripts, data and dist-info metadata are + not written. If kwarg ``bytecode_hashed_invalidation`` is True, written + bytecode will try to use file-hash based invalidation (PEP-552) on + supported interpreter versions (CPython 2.7+). + + The return value is a :class:`InstalledDistribution` instance unless + ``options.lib_only`` is True, in which case the return value is ``None``. + """ + + dry_run = maker.dry_run + warner = kwargs.get('warner') + lib_only = kwargs.get('lib_only', False) + bc_hashed_invalidation = kwargs.get('bytecode_hashed_invalidation', False) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + if (file_version != self.wheel_version) and warner: + warner(self.wheel_version, file_version) + + if message['Root-Is-Purelib'] == 'true': + libdir = paths['purelib'] + else: + libdir = paths['platlib'] + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + data_pfx = posixpath.join(data_dir, '') + info_pfx = posixpath.join(info_dir, '') + script_pfx = posixpath.join(data_dir, 'scripts', '') + + # make a new instance rather than a copy of maker's, + # as we mutate it + fileop = FileOperator(dry_run=dry_run) + fileop.record = True # so we can rollback if needed + + bc = not sys.dont_write_bytecode # Double negatives. Lovely! + + outfiles = [] # for RECORD writing + + # for script copying/shebang processing + workdir = tempfile.mkdtemp() + # set target dir later + # we default add_launchers to False, as the + # Python Launcher should be used instead + maker.source_dir = workdir + maker.target_dir = None + try: + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if self.skip_entry(u_arcname): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + if lib_only and u_arcname.startswith((info_pfx, data_pfx)): + logger.debug('lib_only: skipping %s', u_arcname) + continue + is_script = (u_arcname.startswith(script_pfx) + and not u_arcname.endswith('.exe')) + + if u_arcname.startswith(data_pfx): + _, where, rp = u_arcname.split('/', 2) + outfile = os.path.join(paths[where], convert_path(rp)) + else: + # meant for site-packages. + if u_arcname in (wheel_metadata_name, record_name): + continue + outfile = os.path.join(libdir, convert_path(u_arcname)) + if not is_script: + with zf.open(arcname) as bf: + fileop.copy_stream(bf, outfile) + outfiles.append(outfile) + # Double check the digest of the written file + if not dry_run and row[1]: + with open(outfile, 'rb') as bf: + data = bf.read() + _, newdigest = self.get_hash(data, kind) + if newdigest != digest: + raise DistlibException('digest mismatch ' + 'on write for ' + '%s' % outfile) + if bc and outfile.endswith('.py'): + try: + pyc = fileop.byte_compile(outfile, + hashed_invalidation=bc_hashed_invalidation) + outfiles.append(pyc) + except Exception: + # Don't give up if byte-compilation fails, + # but log it and perhaps warn the user + logger.warning('Byte-compilation failed', + exc_info=True) + else: + fn = os.path.basename(convert_path(arcname)) + workname = os.path.join(workdir, fn) + with zf.open(arcname) as bf: + fileop.copy_stream(bf, workname) + + dn, fn = os.path.split(outfile) + maker.target_dir = dn + filenames = maker.make(fn) + fileop.set_executable_mode(filenames) + outfiles.extend(filenames) + + if lib_only: + logger.debug('lib_only: returning None') + dist = None + else: + # Generate scripts + + # Try to get pydist.json so we can see if there are + # any commands to generate. If this fails (e.g. because + # of a legacy wheel), log a warning but don't give up. + commands = None + file_version = self.info['Wheel-Version'] + if file_version == '1.0': + # Use legacy info + ep = posixpath.join(info_dir, 'entry_points.txt') + try: + with zf.open(ep) as bwf: + epdata = read_exports(bwf) + commands = {} + for key in ('console', 'gui'): + k = '%s_scripts' % key + if k in epdata: + commands['wrap_%s' % key] = d = {} + for v in epdata[k].values(): + s = '%s:%s' % (v.prefix, v.suffix) + if v.flags: + s += ' %s' % v.flags + d[v.name] = s + except Exception: + logger.warning('Unable to read legacy script ' + 'metadata, so cannot generate ' + 'scripts') + else: + try: + with zf.open(metadata_name) as bwf: + wf = wrapper(bwf) + commands = json.load(wf).get('extensions') + if commands: + commands = commands.get('python.commands') + except Exception: + logger.warning('Unable to read JSON metadata, so ' + 'cannot generate scripts') + if commands: + console_scripts = commands.get('wrap_console', {}) + gui_scripts = commands.get('wrap_gui', {}) + if console_scripts or gui_scripts: + script_dir = paths.get('scripts', '') + if not os.path.isdir(script_dir): + raise ValueError('Valid script path not ' + 'specified') + maker.target_dir = script_dir + for k, v in console_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script) + fileop.set_executable_mode(filenames) + + if gui_scripts: + options = {'gui': True } + for k, v in gui_scripts.items(): + script = '%s = %s' % (k, v) + filenames = maker.make(script, options) + fileop.set_executable_mode(filenames) + + p = os.path.join(libdir, info_dir) + dist = InstalledDistribution(p) + + # Write SHARED + paths = dict(paths) # don't change passed in dict + del paths['purelib'] + del paths['platlib'] + paths['lib'] = libdir + p = dist.write_shared_locations(paths, dry_run) + if p: + outfiles.append(p) + + # Write RECORD + dist.write_installed_files(outfiles, paths['prefix'], + dry_run) + return dist + except Exception: # pragma: no cover + logger.exception('installation failed.') + fileop.rollback() + raise + finally: + shutil.rmtree(workdir) + + def _get_dylib_cache(self): + global cache + if cache is None: + # Use native string to avoid issues on 2.x: see Python #20140. + base = os.path.join(get_cache_base(), str('dylib-cache'), + '%s.%s' % sys.version_info[:2]) + cache = Cache(base) + return cache + + def _get_extensions(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + arcname = posixpath.join(info_dir, 'EXTENSIONS') + wrapper = codecs.getreader('utf-8') + result = [] + with ZipFile(pathname, 'r') as zf: + try: + with zf.open(arcname) as bf: + wf = wrapper(bf) + extensions = json.load(wf) + cache = self._get_dylib_cache() + prefix = cache.prefix_to_dir(pathname) + cache_base = os.path.join(cache.base, prefix) + if not os.path.isdir(cache_base): + os.makedirs(cache_base) + for name, relpath in extensions.items(): + dest = os.path.join(cache_base, convert_path(relpath)) + if not os.path.exists(dest): + extract = True + else: + file_time = os.stat(dest).st_mtime + file_time = datetime.datetime.fromtimestamp(file_time) + info = zf.getinfo(relpath) + wheel_time = datetime.datetime(*info.date_time) + extract = wheel_time > file_time + if extract: + zf.extract(relpath, cache_base) + result.append((name, dest)) + except KeyError: + pass + return result + + def is_compatible(self): + """ + Determine if a wheel is compatible with the running system. + """ + return is_compatible(self) + + def is_mountable(self): + """ + Determine if a wheel is asserted as mountable by its metadata. + """ + return True # for now - metadata details TBD + + def mount(self, append=False): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if not self.is_compatible(): + msg = 'Wheel %s not compatible with this Python.' % pathname + raise DistlibException(msg) + if not self.is_mountable(): + msg = 'Wheel %s is marked as not mountable.' % pathname + raise DistlibException(msg) + if pathname in sys.path: + logger.debug('%s already in path', pathname) + else: + if append: + sys.path.append(pathname) + else: + sys.path.insert(0, pathname) + extensions = self._get_extensions() + if extensions: + if _hook not in sys.meta_path: + sys.meta_path.append(_hook) + _hook.add(pathname, extensions) + + def unmount(self): + pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) + if pathname not in sys.path: + logger.debug('%s not in path', pathname) + else: + sys.path.remove(pathname) + if pathname in _hook.impure_wheels: + _hook.remove(pathname) + if not _hook.impure_wheels: + if _hook in sys.meta_path: + sys.meta_path.remove(_hook) + + def verify(self): + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + data_dir = '%s.data' % name_ver + info_dir = '%s.dist-info' % name_ver + + metadata_name = posixpath.join(info_dir, METADATA_FILENAME) + wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') + record_name = posixpath.join(info_dir, 'RECORD') + + wrapper = codecs.getreader('utf-8') + + with ZipFile(pathname, 'r') as zf: + with zf.open(wheel_metadata_name) as bwf: + wf = wrapper(bwf) + message = message_from_file(wf) + wv = message['Wheel-Version'].split('.', 1) + file_version = tuple([int(i) for i in wv]) + # TODO version verification + + records = {} + with zf.open(record_name) as bf: + with CSVReader(stream=bf) as reader: + for row in reader: + p = row[0] + records[p] = row + + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + # See issue #115: some wheels have .. in their entries, but + # in the filename ... e.g. __main__..py ! So the check is + # updated to look for .. in the directory portions + p = u_arcname.split('/') + if '..' in p: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + + if self.skip_entry(u_arcname): + continue + row = records[u_arcname] + if row[2] and str(zinfo.file_size) != row[2]: + raise DistlibException('size mismatch for ' + '%s' % u_arcname) + if row[1]: + kind, value = row[1].split('=', 1) + with zf.open(arcname) as bf: + data = bf.read() + _, digest = self.get_hash(data, kind) + if digest != value: + raise DistlibException('digest mismatch for ' + '%s' % arcname) + + def update(self, modifier, dest_dir=None, **kwargs): + """ + Update the contents of a wheel in a generic way. The modifier should + be a callable which expects a dictionary argument: its keys are + archive-entry paths, and its values are absolute filesystem paths + where the contents the corresponding archive entries can be found. The + modifier is free to change the contents of the files pointed to, add + new entries and remove entries, before returning. This method will + extract the entire contents of the wheel to a temporary location, call + the modifier, and then use the passed (and possibly updated) + dictionary to write a new wheel. If ``dest_dir`` is specified, the new + wheel is written there -- otherwise, the original wheel is overwritten. + + The modifier should return True if it updated the wheel, else False. + This method returns the same value the modifier returns. + """ + + def get_version(path_map, info_dir): + version = path = None + key = '%s/%s' % (info_dir, METADATA_FILENAME) + if key not in path_map: + key = '%s/PKG-INFO' % info_dir + if key in path_map: + path = path_map[key] + version = Metadata(path=path).version + return version, path + + def update_version(version, path): + updated = None + try: + v = NormalizedVersion(version) + i = version.find('-') + if i < 0: + updated = '%s+1' % version + else: + parts = [int(s) for s in version[i + 1:].split('.')] + parts[-1] += 1 + updated = '%s+%s' % (version[:i], + '.'.join(str(i) for i in parts)) + except UnsupportedVersionError: + logger.debug('Cannot update non-compliant (PEP-440) ' + 'version %r', version) + if updated: + md = Metadata(path=path) + md.version = updated + legacy = not path.endswith(METADATA_FILENAME) + md.write(path=path, legacy=legacy) + logger.debug('Version updated from %r to %r', version, + updated) + + pathname = os.path.join(self.dirname, self.filename) + name_ver = '%s-%s' % (self.name, self.version) + info_dir = '%s.dist-info' % name_ver + record_name = posixpath.join(info_dir, 'RECORD') + with tempdir() as workdir: + with ZipFile(pathname, 'r') as zf: + path_map = {} + for zinfo in zf.infolist(): + arcname = zinfo.filename + if isinstance(arcname, text_type): + u_arcname = arcname + else: + u_arcname = arcname.decode('utf-8') + if u_arcname == record_name: + continue + if '..' in u_arcname: + raise DistlibException('invalid entry in ' + 'wheel: %r' % u_arcname) + zf.extract(zinfo, workdir) + path = os.path.join(workdir, convert_path(u_arcname)) + path_map[u_arcname] = path + + # Remember the version. + original_version, _ = get_version(path_map, info_dir) + # Files extracted. Call the modifier. + modified = modifier(path_map, **kwargs) + if modified: + # Something changed - need to build a new wheel. + current_version, path = get_version(path_map, info_dir) + if current_version and (current_version == original_version): + # Add or update local version to signify changes. + update_version(current_version, path) + # Decide where the new wheel goes. + if dest_dir is None: + fd, newpath = tempfile.mkstemp(suffix='.whl', + prefix='wheel-update-', + dir=workdir) + os.close(fd) + else: + if not os.path.isdir(dest_dir): + raise DistlibException('Not a directory: %r' % dest_dir) + newpath = os.path.join(dest_dir, self.filename) + archive_paths = list(path_map.items()) + distinfo = os.path.join(workdir, info_dir) + info = distinfo, info_dir + self.write_records(info, workdir, archive_paths) + self.build_zip(newpath, archive_paths) + if dest_dir is None: + shutil.copyfile(newpath, pathname) + return modified + +def compatible_tags(): + """ + Return (pyver, abi, arch) tuples compatible with this Python. + """ + versions = [VER_SUFFIX] + major = VER_SUFFIX[0] + for minor in range(sys.version_info[1] - 1, - 1, -1): + versions.append(''.join([major, str(minor)])) + + abis = [] + for suffix, _, _ in imp.get_suffixes(): + if suffix.startswith('.abi'): + abis.append(suffix.split('.', 2)[1]) + abis.sort() + if ABI != 'none': + abis.insert(0, ABI) + abis.append('none') + result = [] + + arches = [ARCH] + if sys.platform == 'darwin': + m = re.match(r'(\w+)_(\d+)_(\d+)_(\w+)$', ARCH) + if m: + name, major, minor, arch = m.groups() + minor = int(minor) + matches = [arch] + if arch in ('i386', 'ppc'): + matches.append('fat') + if arch in ('i386', 'ppc', 'x86_64'): + matches.append('fat3') + if arch in ('ppc64', 'x86_64'): + matches.append('fat64') + if arch in ('i386', 'x86_64'): + matches.append('intel') + if arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'): + matches.append('universal') + while minor >= 0: + for match in matches: + s = '%s_%s_%s_%s' % (name, major, minor, match) + if s != ARCH: # already there + arches.append(s) + minor -= 1 + + # Most specific - our Python version, ABI and arch + for abi in abis: + for arch in arches: + result.append((''.join((IMP_PREFIX, versions[0])), abi, arch)) + + # where no ABI / arch dependency, but IMP_PREFIX dependency + for i, version in enumerate(versions): + result.append((''.join((IMP_PREFIX, version)), 'none', 'any')) + if i == 0: + result.append((''.join((IMP_PREFIX, version[0])), 'none', 'any')) + + # no IMP_PREFIX, ABI or arch dependency + for i, version in enumerate(versions): + result.append((''.join(('py', version)), 'none', 'any')) + if i == 0: + result.append((''.join(('py', version[0])), 'none', 'any')) + return set(result) + + +COMPATIBLE_TAGS = compatible_tags() + +del compatible_tags + + +def is_compatible(wheel, tags=None): + if not isinstance(wheel, Wheel): + wheel = Wheel(wheel) # assume it's a filename + result = False + if tags is None: + tags = COMPATIBLE_TAGS + for ver, abi, arch in tags: + if ver in wheel.pyver and abi in wheel.abi and arch in wheel.arch: + result = True + break + return result diff --git a/Lib/site-packages/pip/_vendor/distro.py b/Lib/site-packages/pip/_vendor/distro.py new file mode 100644 index 0000000..3306163 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/distro.py @@ -0,0 +1,1216 @@ +# Copyright 2015,2016,2017 Nir Cohen +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +The ``distro`` package (``distro`` stands for Linux Distribution) provides +information about the Linux distribution it runs on, such as a reliable +machine-readable distro ID, or version information. + +It is the recommended replacement for Python's original +:py:func:`platform.linux_distribution` function, but it provides much more +functionality. An alternative implementation became necessary because Python +3.5 deprecated this function, and Python 3.8 will remove it altogether. +Its predecessor function :py:func:`platform.dist` was already +deprecated since Python 2.6 and will also be removed in Python 3.8. +Still, there are many cases in which access to OS distribution information +is needed. See `Python issue 1322 `_ for +more information. +""" + +import os +import re +import sys +import json +import shlex +import logging +import argparse +import subprocess + + +_UNIXCONFDIR = os.environ.get('UNIXCONFDIR', '/etc') +_OS_RELEASE_BASENAME = 'os-release' + +#: Translation table for normalizing the "ID" attribute defined in os-release +#: files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as defined in the os-release file, translated to lower case, +#: with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_OS_ID = { + 'ol': 'oracle', # Oracle Enterprise Linux +} + +#: Translation table for normalizing the "Distributor ID" attribute returned by +#: the lsb_release command, for use by the :func:`distro.id` method. +#: +#: * Key: Value as returned by the lsb_release command, translated to lower +#: case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_LSB_ID = { + 'enterpriseenterprise': 'oracle', # Oracle Enterprise Linux + 'redhatenterpriseworkstation': 'rhel', # RHEL 6, 7 Workstation + 'redhatenterpriseserver': 'rhel', # RHEL 6, 7 Server +} + +#: Translation table for normalizing the distro ID derived from the file name +#: of distro release files, for use by the :func:`distro.id` method. +#: +#: * Key: Value as derived from the file name of a distro release file, +#: translated to lower case, with blanks translated to underscores. +#: +#: * Value: Normalized value. +NORMALIZED_DISTRO_ID = { + 'redhat': 'rhel', # RHEL 6.x, 7.x +} + +# Pattern for content of distro release file (reversed) +_DISTRO_RELEASE_CONTENT_REVERSED_PATTERN = re.compile( + r'(?:[^)]*\)(.*)\()? *(?:STL )?([\d.+\-a-z]*\d) *(?:esaeler *)?(.+)') + +# Pattern for base file name of distro release file +_DISTRO_RELEASE_BASENAME_PATTERN = re.compile( + r'(\w+)[-_](release|version)$') + +# Base file names to be ignored when searching for distro release file +_DISTRO_RELEASE_IGNORE_BASENAMES = ( + 'debian_version', + 'lsb-release', + 'oem-release', + _OS_RELEASE_BASENAME, + 'system-release' +) + + +def linux_distribution(full_distribution_name=True): + """ + Return information about the current OS distribution as a tuple + ``(id_name, version, codename)`` with items as follows: + + * ``id_name``: If *full_distribution_name* is false, the result of + :func:`distro.id`. Otherwise, the result of :func:`distro.name`. + + * ``version``: The result of :func:`distro.version`. + + * ``codename``: The result of :func:`distro.codename`. + + The interface of this function is compatible with the original + :py:func:`platform.linux_distribution` function, supporting a subset of + its parameters. + + The data it returns may not exactly be the same, because it uses more data + sources than the original function, and that may lead to different data if + the OS distribution is not consistent across multiple data sources it + provides (there are indeed such distributions ...). + + Another reason for differences is the fact that the :func:`distro.id` + method normalizes the distro ID string to a reliable machine-readable value + for a number of popular OS distributions. + """ + return _distro.linux_distribution(full_distribution_name) + + +def id(): + """ + Return the distro ID of the current distribution, as a + machine-readable string. + + For a number of OS distributions, the returned distro ID value is + *reliable*, in the sense that it is documented and that it does not change + across releases of the distribution. + + This package maintains the following reliable distro ID values: + + ============== ========================================= + Distro ID Distribution + ============== ========================================= + "ubuntu" Ubuntu + "debian" Debian + "rhel" RedHat Enterprise Linux + "centos" CentOS + "fedora" Fedora + "sles" SUSE Linux Enterprise Server + "opensuse" openSUSE + "amazon" Amazon Linux + "arch" Arch Linux + "cloudlinux" CloudLinux OS + "exherbo" Exherbo Linux + "gentoo" GenToo Linux + "ibm_powerkvm" IBM PowerKVM + "kvmibm" KVM for IBM z Systems + "linuxmint" Linux Mint + "mageia" Mageia + "mandriva" Mandriva Linux + "parallels" Parallels + "pidora" Pidora + "raspbian" Raspbian + "oracle" Oracle Linux (and Oracle Enterprise Linux) + "scientific" Scientific Linux + "slackware" Slackware + "xenserver" XenServer + "openbsd" OpenBSD + "netbsd" NetBSD + "freebsd" FreeBSD + ============== ========================================= + + If you have a need to get distros for reliable IDs added into this set, + or if you find that the :func:`distro.id` function returns a different + distro ID for one of the listed distros, please create an issue in the + `distro issue tracker`_. + + **Lookup hierarchy and transformations:** + + First, the ID is obtained from the following sources, in the specified + order. The first available and non-empty value is used: + + * the value of the "ID" attribute of the os-release file, + + * the value of the "Distributor ID" attribute returned by the lsb_release + command, + + * the first part of the file name of the distro release file, + + The so determined ID value then passes the following transformations, + before it is returned by this method: + + * it is translated to lower case, + + * blanks (which should not be there anyway) are translated to underscores, + + * a normalization of the ID is performed, based upon + `normalization tables`_. The purpose of this normalization is to ensure + that the ID is as reliable as possible, even across incompatible changes + in the OS distributions. A common reason for an incompatible change is + the addition of an os-release file, or the addition of the lsb_release + command, with ID values that differ from what was previously determined + from the distro release file name. + """ + return _distro.id() + + +def name(pretty=False): + """ + Return the name of the current OS distribution, as a human-readable + string. + + If *pretty* is false, the name is returned without version or codename. + (e.g. "CentOS Linux") + + If *pretty* is true, the version and codename are appended. + (e.g. "CentOS Linux 7.1.1503 (Core)") + + **Lookup hierarchy:** + + The name is obtained from the following sources, in the specified order. + The first available and non-empty value is used: + + * If *pretty* is false: + + - the value of the "NAME" attribute of the os-release file, + + - the value of the "Distributor ID" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file. + + * If *pretty* is true: + + - the value of the "PRETTY_NAME" attribute of the os-release file, + + - the value of the "Description" attribute returned by the lsb_release + command, + + - the value of the "" field of the distro release file, appended + with the value of the pretty version ("" and "" + fields) of the distro release file, if available. + """ + return _distro.name(pretty) + + +def version(pretty=False, best=False): + """ + Return the version of the current OS distribution, as a human-readable + string. + + If *pretty* is false, the version is returned without codename (e.g. + "7.0"). + + If *pretty* is true, the codename in parenthesis is appended, if the + codename is non-empty (e.g. "7.0 (Maipo)"). + + Some distributions provide version numbers with different precisions in + the different sources of distribution information. Examining the different + sources in a fixed priority order does not always yield the most precise + version (e.g. for Debian 8.2, or CentOS 7.1). + + The *best* parameter can be used to control the approach for the returned + version: + + If *best* is false, the first non-empty version number in priority order of + the examined sources is returned. + + If *best* is true, the most precise version number out of all examined + sources is returned. + + **Lookup hierarchy:** + + In all cases, the version number is obtained from the following sources. + If *best* is false, this order represents the priority order: + + * the value of the "VERSION_ID" attribute of the os-release file, + * the value of the "Release" attribute returned by the lsb_release + command, + * the version number parsed from the "" field of the first line + of the distro release file, + * the version number parsed from the "PRETTY_NAME" attribute of the + os-release file, if it follows the format of the distro release files. + * the version number parsed from the "Description" attribute returned by + the lsb_release command, if it follows the format of the distro release + files. + """ + return _distro.version(pretty, best) + + +def version_parts(best=False): + """ + Return the version of the current OS distribution as a tuple + ``(major, minor, build_number)`` with items as follows: + + * ``major``: The result of :func:`distro.major_version`. + + * ``minor``: The result of :func:`distro.minor_version`. + + * ``build_number``: The result of :func:`distro.build_number`. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.version_parts(best) + + +def major_version(best=False): + """ + Return the major version of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The major version is the first + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.major_version(best) + + +def minor_version(best=False): + """ + Return the minor version of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The minor version is the second + part of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.minor_version(best) + + +def build_number(best=False): + """ + Return the build number of the current OS distribution, as a string, + if provided. + Otherwise, the empty string is returned. The build number is the third part + of the dot-separated version string. + + For a description of the *best* parameter, see the :func:`distro.version` + method. + """ + return _distro.build_number(best) + + +def like(): + """ + Return a space-separated list of distro IDs of distributions that are + closely related to the current OS distribution in regards to packaging + and programming interfaces, for example distributions the current + distribution is a derivative from. + + **Lookup hierarchy:** + + This information item is only provided by the os-release file. + For details, see the description of the "ID_LIKE" attribute in the + `os-release man page + `_. + """ + return _distro.like() + + +def codename(): + """ + Return the codename for the release of the current OS distribution, + as a string. + + If the distribution does not have a codename, an empty string is returned. + + Note that the returned codename is not always really a codename. For + example, openSUSE returns "x86_64". This function does not handle such + cases in any special way and just returns the string it finds, if any. + + **Lookup hierarchy:** + + * the codename within the "VERSION" attribute of the os-release file, if + provided, + + * the value of the "Codename" attribute returned by the lsb_release + command, + + * the value of the "" field of the distro release file. + """ + return _distro.codename() + + +def info(pretty=False, best=False): + """ + Return certain machine-readable information items about the current OS + distribution in a dictionary, as shown in the following example: + + .. sourcecode:: python + + { + 'id': 'rhel', + 'version': '7.0', + 'version_parts': { + 'major': '7', + 'minor': '0', + 'build_number': '' + }, + 'like': 'fedora', + 'codename': 'Maipo' + } + + The dictionary structure and keys are always the same, regardless of which + information items are available in the underlying data sources. The values + for the various keys are as follows: + + * ``id``: The result of :func:`distro.id`. + + * ``version``: The result of :func:`distro.version`. + + * ``version_parts -> major``: The result of :func:`distro.major_version`. + + * ``version_parts -> minor``: The result of :func:`distro.minor_version`. + + * ``version_parts -> build_number``: The result of + :func:`distro.build_number`. + + * ``like``: The result of :func:`distro.like`. + + * ``codename``: The result of :func:`distro.codename`. + + For a description of the *pretty* and *best* parameters, see the + :func:`distro.version` method. + """ + return _distro.info(pretty, best) + + +def os_release_info(): + """ + Return a dictionary containing key-value pairs for the information items + from the os-release file data source of the current OS distribution. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_info() + + +def lsb_release_info(): + """ + Return a dictionary containing key-value pairs for the information items + from the lsb_release command data source of the current OS distribution. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_info() + + +def distro_release_info(): + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current OS distribution. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_info() + + +def uname_info(): + """ + Return a dictionary containing key-value pairs for the information items + from the distro release file data source of the current OS distribution. + """ + return _distro.uname_info() + + +def os_release_attr(attribute): + """ + Return a single named information item from the os-release file data source + of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `os-release file`_ for details about these information items. + """ + return _distro.os_release_attr(attribute) + + +def lsb_release_attr(attribute): + """ + Return a single named information item from the lsb_release command output + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `lsb_release command output`_ for details about these information + items. + """ + return _distro.lsb_release_attr(attribute) + + +def distro_release_attr(attribute): + """ + Return a single named information item from the distro release file + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + + See `distro release file`_ for details about these information items. + """ + return _distro.distro_release_attr(attribute) + + +def uname_attr(attribute): + """ + Return a single named information item from the distro release file + data source of the current OS distribution. + + Parameters: + + * ``attribute`` (string): Key of the information item. + + Returns: + + * (string): Value of the information item, if the item exists. + The empty string, if the item does not exist. + """ + return _distro.uname_attr(attribute) + + +class cached_property(object): + """A version of @property which caches the value. On access, it calls the + underlying function and sets the value in `__dict__` so future accesses + will not re-call the property. + """ + def __init__(self, f): + self._fname = f.__name__ + self._f = f + + def __get__(self, obj, owner): + assert obj is not None, 'call {} on an instance'.format(self._fname) + ret = obj.__dict__[self._fname] = self._f(obj) + return ret + + +class LinuxDistribution(object): + """ + Provides information about a OS distribution. + + This package creates a private module-global instance of this class with + default initialization arguments, that is used by the + `consolidated accessor functions`_ and `single source accessor functions`_. + By using default initialization arguments, that module-global instance + returns data about the current OS distribution (i.e. the distro this + package runs on). + + Normally, it is not necessary to create additional instances of this class. + However, in situations where control is needed over the exact data sources + that are used, instances of this class can be created with a specific + distro release file, or a specific os-release file, or without invoking the + lsb_release command. + """ + + def __init__(self, + include_lsb=True, + os_release_file='', + distro_release_file='', + include_uname=True): + """ + The initialization method of this class gathers information from the + available data sources, and stores that in private instance attributes. + Subsequent access to the information items uses these private instance + attributes, so that the data sources are read only once. + + Parameters: + + * ``include_lsb`` (bool): Controls whether the + `lsb_release command output`_ is included as a data source. + + If the lsb_release command is not available in the program execution + path, the data source for the lsb_release command will be empty. + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is to be used as a data source. + + An empty string (the default) will cause the default path name to + be used (see `os-release file`_ for details). + + If the specified or defaulted os-release file does not exist, the + data source for the os-release file will be empty. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is to be used as a data source. + + An empty string (the default) will cause a default search algorithm + to be used (see `distro release file`_ for details). + + If the specified distro release file does not exist, or if no default + distro release file can be found, the data source for the distro + release file will be empty. + + * ``include_name`` (bool): Controls whether uname command output is + included as a data source. If the uname command is not available in + the program execution path the data source for the uname command will + be empty. + + Public instance attributes: + + * ``os_release_file`` (string): The path name of the + `os-release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``distro_release_file`` (string): The path name of the + `distro release file`_ that is actually used as a data source. The + empty string if no distro release file is used as a data source. + + * ``include_lsb`` (bool): The result of the ``include_lsb`` parameter. + This controls whether the lsb information will be loaded. + + * ``include_uname`` (bool): The result of the ``include_uname`` + parameter. This controls whether the uname information will + be loaded. + + Raises: + + * :py:exc:`IOError`: Some I/O issue with an os-release file or distro + release file. + + * :py:exc:`subprocess.CalledProcessError`: The lsb_release command had + some issue (other than not being available in the program execution + path). + + * :py:exc:`UnicodeError`: A data source has unexpected characters or + uses an unexpected encoding. + """ + self.os_release_file = os_release_file or \ + os.path.join(_UNIXCONFDIR, _OS_RELEASE_BASENAME) + self.distro_release_file = distro_release_file or '' # updated later + self.include_lsb = include_lsb + self.include_uname = include_uname + + def __repr__(self): + """Return repr of all info + """ + return \ + "LinuxDistribution(" \ + "os_release_file={self.os_release_file!r}, " \ + "distro_release_file={self.distro_release_file!r}, " \ + "include_lsb={self.include_lsb!r}, " \ + "include_uname={self.include_uname!r}, " \ + "_os_release_info={self._os_release_info!r}, " \ + "_lsb_release_info={self._lsb_release_info!r}, " \ + "_distro_release_info={self._distro_release_info!r}, " \ + "_uname_info={self._uname_info!r})".format( + self=self) + + def linux_distribution(self, full_distribution_name=True): + """ + Return information about the OS distribution that is compatible + with Python's :func:`platform.linux_distribution`, supporting a subset + of its parameters. + + For details, see :func:`distro.linux_distribution`. + """ + return ( + self.name() if full_distribution_name else self.id(), + self.version(), + self.codename() + ) + + def id(self): + """Return the distro ID of the OS distribution, as a string. + + For details, see :func:`distro.id`. + """ + def normalize(distro_id, table): + distro_id = distro_id.lower().replace(' ', '_') + return table.get(distro_id, distro_id) + + distro_id = self.os_release_attr('id') + if distro_id: + return normalize(distro_id, NORMALIZED_OS_ID) + + distro_id = self.lsb_release_attr('distributor_id') + if distro_id: + return normalize(distro_id, NORMALIZED_LSB_ID) + + distro_id = self.distro_release_attr('id') + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + distro_id = self.uname_attr('id') + if distro_id: + return normalize(distro_id, NORMALIZED_DISTRO_ID) + + return '' + + def name(self, pretty=False): + """ + Return the name of the OS distribution, as a string. + + For details, see :func:`distro.name`. + """ + name = self.os_release_attr('name') \ + or self.lsb_release_attr('distributor_id') \ + or self.distro_release_attr('name') \ + or self.uname_attr('name') + if pretty: + name = self.os_release_attr('pretty_name') \ + or self.lsb_release_attr('description') + if not name: + name = self.distro_release_attr('name') \ + or self.uname_attr('name') + version = self.version(pretty=True) + if version: + name = name + ' ' + version + return name or '' + + def version(self, pretty=False, best=False): + """ + Return the version of the OS distribution, as a string. + + For details, see :func:`distro.version`. + """ + versions = [ + self.os_release_attr('version_id'), + self.lsb_release_attr('release'), + self.distro_release_attr('version_id'), + self._parse_distro_release_content( + self.os_release_attr('pretty_name')).get('version_id', ''), + self._parse_distro_release_content( + self.lsb_release_attr('description')).get('version_id', ''), + self.uname_attr('release') + ] + version = '' + if best: + # This algorithm uses the last version in priority order that has + # the best precision. If the versions are not in conflict, that + # does not matter; otherwise, using the last one instead of the + # first one might be considered a surprise. + for v in versions: + if v.count(".") > version.count(".") or version == '': + version = v + else: + for v in versions: + if v != '': + version = v + break + if pretty and version and self.codename(): + version = u'{0} ({1})'.format(version, self.codename()) + return version + + def version_parts(self, best=False): + """ + Return the version of the OS distribution, as a tuple of version + numbers. + + For details, see :func:`distro.version_parts`. + """ + version_str = self.version(best=best) + if version_str: + version_regex = re.compile(r'(\d+)\.?(\d+)?\.?(\d+)?') + matches = version_regex.match(version_str) + if matches: + major, minor, build_number = matches.groups() + return major, minor or '', build_number or '' + return '', '', '' + + def major_version(self, best=False): + """ + Return the major version number of the current distribution. + + For details, see :func:`distro.major_version`. + """ + return self.version_parts(best)[0] + + def minor_version(self, best=False): + """ + Return the minor version number of the current distribution. + + For details, see :func:`distro.minor_version`. + """ + return self.version_parts(best)[1] + + def build_number(self, best=False): + """ + Return the build number of the current distribution. + + For details, see :func:`distro.build_number`. + """ + return self.version_parts(best)[2] + + def like(self): + """ + Return the IDs of distributions that are like the OS distribution. + + For details, see :func:`distro.like`. + """ + return self.os_release_attr('id_like') or '' + + def codename(self): + """ + Return the codename of the OS distribution. + + For details, see :func:`distro.codename`. + """ + try: + # Handle os_release specially since distros might purposefully set + # this to empty string to have no codename + return self._os_release_info['codename'] + except KeyError: + return self.lsb_release_attr('codename') \ + or self.distro_release_attr('codename') \ + or '' + + def info(self, pretty=False, best=False): + """ + Return certain machine-readable information about the OS + distribution. + + For details, see :func:`distro.info`. + """ + return dict( + id=self.id(), + version=self.version(pretty, best), + version_parts=dict( + major=self.major_version(best), + minor=self.minor_version(best), + build_number=self.build_number(best) + ), + like=self.like(), + codename=self.codename(), + ) + + def os_release_info(self): + """ + Return a dictionary containing key-value pairs for the information + items from the os-release file data source of the OS distribution. + + For details, see :func:`distro.os_release_info`. + """ + return self._os_release_info + + def lsb_release_info(self): + """ + Return a dictionary containing key-value pairs for the information + items from the lsb_release command data source of the OS + distribution. + + For details, see :func:`distro.lsb_release_info`. + """ + return self._lsb_release_info + + def distro_release_info(self): + """ + Return a dictionary containing key-value pairs for the information + items from the distro release file data source of the OS + distribution. + + For details, see :func:`distro.distro_release_info`. + """ + return self._distro_release_info + + def uname_info(self): + """ + Return a dictionary containing key-value pairs for the information + items from the uname command data source of the OS distribution. + + For details, see :func:`distro.uname_info`. + """ + return self._uname_info + + def os_release_attr(self, attribute): + """ + Return a single named information item from the os-release file data + source of the OS distribution. + + For details, see :func:`distro.os_release_attr`. + """ + return self._os_release_info.get(attribute, '') + + def lsb_release_attr(self, attribute): + """ + Return a single named information item from the lsb_release command + output data source of the OS distribution. + + For details, see :func:`distro.lsb_release_attr`. + """ + return self._lsb_release_info.get(attribute, '') + + def distro_release_attr(self, attribute): + """ + Return a single named information item from the distro release file + data source of the OS distribution. + + For details, see :func:`distro.distro_release_attr`. + """ + return self._distro_release_info.get(attribute, '') + + def uname_attr(self, attribute): + """ + Return a single named information item from the uname command + output data source of the OS distribution. + + For details, see :func:`distro.uname_release_attr`. + """ + return self._uname_info.get(attribute, '') + + @cached_property + def _os_release_info(self): + """ + Get the information items from the specified os-release file. + + Returns: + A dictionary containing all information items. + """ + if os.path.isfile(self.os_release_file): + with open(self.os_release_file) as release_file: + return self._parse_os_release_content(release_file) + return {} + + @staticmethod + def _parse_os_release_content(lines): + """ + Parse the lines of an os-release file. + + Parameters: + + * lines: Iterable through the lines in the os-release file. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + lexer = shlex.shlex(lines, posix=True) + lexer.whitespace_split = True + + # The shlex module defines its `wordchars` variable using literals, + # making it dependent on the encoding of the Python source file. + # In Python 2.6 and 2.7, the shlex source file is encoded in + # 'iso-8859-1', and the `wordchars` variable is defined as a byte + # string. This causes a UnicodeDecodeError to be raised when the + # parsed content is a unicode object. The following fix resolves that + # (... but it should be fixed in shlex...): + if sys.version_info[0] == 2 and isinstance(lexer.wordchars, bytes): + lexer.wordchars = lexer.wordchars.decode('iso-8859-1') + + tokens = list(lexer) + for token in tokens: + # At this point, all shell-like parsing has been done (i.e. + # comments processed, quotes and backslash escape sequences + # processed, multi-line values assembled, trailing newlines + # stripped, etc.), so the tokens are now either: + # * variable assignments: var=value + # * commands or their arguments (not allowed in os-release) + if '=' in token: + k, v = token.split('=', 1) + if isinstance(v, bytes): + v = v.decode('utf-8') + props[k.lower()] = v + else: + # Ignore any tokens that are not variable assignments + pass + + if 'version_codename' in props: + # os-release added a version_codename field. Use that in + # preference to anything else Note that some distros purposefully + # do not have code names. They should be setting + # version_codename="" + props['codename'] = props['version_codename'] + elif 'ubuntu_codename' in props: + # Same as above but a non-standard field name used on older Ubuntus + props['codename'] = props['ubuntu_codename'] + elif 'version' in props: + # If there is no version_codename, parse it from the version + codename = re.search(r'(\(\D+\))|,(\s+)?\D+', props['version']) + if codename: + codename = codename.group() + codename = codename.strip('()') + codename = codename.strip(',') + codename = codename.strip() + # codename appears within paranthese. + props['codename'] = codename + + return props + + @cached_property + def _lsb_release_info(self): + """ + Get the information items from the lsb_release command output. + + Returns: + A dictionary containing all information items. + """ + if not self.include_lsb: + return {} + with open(os.devnull, 'w') as devnull: + try: + cmd = ('lsb_release', '-a') + stdout = subprocess.check_output(cmd, stderr=devnull) + except OSError: # Command not found + return {} + content = stdout.decode(sys.getfilesystemencoding()).splitlines() + return self._parse_lsb_release_content(content) + + @staticmethod + def _parse_lsb_release_content(lines): + """ + Parse the output of the lsb_release command. + + Parameters: + + * lines: Iterable through the lines of the lsb_release output. + Each line must be a unicode string or a UTF-8 encoded byte + string. + + Returns: + A dictionary containing all information items. + """ + props = {} + for line in lines: + kv = line.strip('\n').split(':', 1) + if len(kv) != 2: + # Ignore lines without colon. + continue + k, v = kv + props.update({k.replace(' ', '_').lower(): v.strip()}) + return props + + @cached_property + def _uname_info(self): + with open(os.devnull, 'w') as devnull: + try: + cmd = ('uname', '-rs') + stdout = subprocess.check_output(cmd, stderr=devnull) + except OSError: + return {} + content = stdout.decode(sys.getfilesystemencoding()).splitlines() + return self._parse_uname_content(content) + + @staticmethod + def _parse_uname_content(lines): + props = {} + match = re.search(r'^([^\s]+)\s+([\d\.]+)', lines[0].strip()) + if match: + name, version = match.groups() + + # This is to prevent the Linux kernel version from + # appearing as the 'best' version on otherwise + # identifiable distributions. + if name == 'Linux': + return {} + props['id'] = name.lower() + props['name'] = name + props['release'] = version + return props + + @cached_property + def _distro_release_info(self): + """ + Get the information items from the specified distro release file. + + Returns: + A dictionary containing all information items. + """ + if self.distro_release_file: + # If it was specified, we use it and parse what we can, even if + # its file name or content does not match the expected pattern. + distro_info = self._parse_distro_release_file( + self.distro_release_file) + basename = os.path.basename(self.distro_release_file) + # The file name pattern for user-specified distro release files + # is somewhat more tolerant (compared to when searching for the + # file), because we want to use what was specified as best as + # possible. + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if 'name' in distro_info \ + and 'cloudlinux' in distro_info['name'].lower(): + distro_info['id'] = 'cloudlinux' + elif match: + distro_info['id'] = match.group(1) + return distro_info + else: + try: + basenames = os.listdir(_UNIXCONFDIR) + # We sort for repeatability in cases where there are multiple + # distro specific files; e.g. CentOS, Oracle, Enterprise all + # containing `redhat-release` on top of their own. + basenames.sort() + except OSError: + # This may occur when /etc is not readable but we can't be + # sure about the *-release files. Check common entries of + # /etc for information. If they turn out to not be there the + # error is handled in `_parse_distro_release_file()`. + basenames = ['SuSE-release', + 'arch-release', + 'base-release', + 'centos-release', + 'fedora-release', + 'gentoo-release', + 'mageia-release', + 'mandrake-release', + 'mandriva-release', + 'mandrivalinux-release', + 'manjaro-release', + 'oracle-release', + 'redhat-release', + 'sl-release', + 'slackware-version'] + for basename in basenames: + if basename in _DISTRO_RELEASE_IGNORE_BASENAMES: + continue + match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) + if match: + filepath = os.path.join(_UNIXCONFDIR, basename) + distro_info = self._parse_distro_release_file(filepath) + if 'name' in distro_info: + # The name is always present if the pattern matches + self.distro_release_file = filepath + distro_info['id'] = match.group(1) + if 'cloudlinux' in distro_info['name'].lower(): + distro_info['id'] = 'cloudlinux' + return distro_info + return {} + + def _parse_distro_release_file(self, filepath): + """ + Parse a distro release file. + + Parameters: + + * filepath: Path name of the distro release file. + + Returns: + A dictionary containing all information items. + """ + try: + with open(filepath) as fp: + # Only parse the first line. For instance, on SLES there + # are multiple lines. We don't want them... + return self._parse_distro_release_content(fp.readline()) + except (OSError, IOError): + # Ignore not being able to read a specific, seemingly version + # related file. + # See https://github.com/nir0s/distro/issues/162 + return {} + + @staticmethod + def _parse_distro_release_content(line): + """ + Parse a line from a distro release file. + + Parameters: + * line: Line from the distro release file. Must be a unicode string + or a UTF-8 encoded byte string. + + Returns: + A dictionary containing all information items. + """ + if isinstance(line, bytes): + line = line.decode('utf-8') + matches = _DISTRO_RELEASE_CONTENT_REVERSED_PATTERN.match( + line.strip()[::-1]) + distro_info = {} + if matches: + # regexp ensures non-None + distro_info['name'] = matches.group(3)[::-1] + if matches.group(2): + distro_info['version_id'] = matches.group(2)[::-1] + if matches.group(1): + distro_info['codename'] = matches.group(1)[::-1] + elif line: + distro_info['name'] = line.strip() + return distro_info + + +_distro = LinuxDistribution() + + +def main(): + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + logger.addHandler(logging.StreamHandler(sys.stdout)) + + parser = argparse.ArgumentParser(description="OS distro info tool") + parser.add_argument( + '--json', + '-j', + help="Output in machine readable format", + action="store_true") + args = parser.parse_args() + + if args.json: + logger.info(json.dumps(info(), indent=4, sort_keys=True)) + else: + logger.info('Name: %s', name(pretty=True)) + distribution_version = version(pretty=True) + logger.info('Version: %s', distribution_version) + distribution_codename = codename() + logger.info('Codename: %s', distribution_codename) + + +if __name__ == '__main__': + main() diff --git a/Lib/site-packages/pip/_vendor/html5lib/__init__.py b/Lib/site-packages/pip/_vendor/html5lib/__init__.py new file mode 100644 index 0000000..0491234 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/__init__.py @@ -0,0 +1,35 @@ +""" +HTML parsing library based on the `WHATWG HTML specification +`_. The parser is designed to be compatible with +existing HTML found in the wild and implements well-defined error recovery that +is largely compatible with modern desktop web browsers. + +Example usage:: + + from pip._vendor import html5lib + with open("my_document.html", "rb") as f: + tree = html5lib.parse(f) + +For convenience, this module re-exports the following names: + +* :func:`~.html5parser.parse` +* :func:`~.html5parser.parseFragment` +* :class:`~.html5parser.HTMLParser` +* :func:`~.treebuilders.getTreeBuilder` +* :func:`~.treewalkers.getTreeWalker` +* :func:`~.serializer.serialize` +""" + +from __future__ import absolute_import, division, unicode_literals + +from .html5parser import HTMLParser, parse, parseFragment +from .treebuilders import getTreeBuilder +from .treewalkers import getTreeWalker +from .serializer import serialize + +__all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", + "getTreeWalker", "serialize"] + +# this has to be at the top level, see how setup.py parses this +#: Distribution version number. +__version__ = "1.0.1" diff --git a/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py b/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py new file mode 100644 index 0000000..4c77717 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py @@ -0,0 +1,288 @@ +from __future__ import absolute_import, division, unicode_literals + +import re +import warnings + +from .constants import DataLossWarning + +baseChar = """ +[#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | +[#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E] | [#x0141-#x0148] | +[#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0] | [#x01F4-#x01F5] | +[#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1] | #x0386 | +[#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE] | +[#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3] | +[#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481] | +[#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB] | +[#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | +[#x0561-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | +[#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | +[#x06D0-#x06D3] | #x06D5 | [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | +[#x0958-#x0961] | [#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | +[#x09AA-#x09B0] | #x09B2 | [#x09B6-#x09B9] | [#x09DC-#x09DD] | +[#x09DF-#x09E1] | [#x09F0-#x09F1] | [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | +[#x0A13-#x0A28] | [#x0A2A-#x0A30] | [#x0A32-#x0A33] | [#x0A35-#x0A36] | +[#x0A38-#x0A39] | [#x0A59-#x0A5C] | #x0A5E | [#x0A72-#x0A74] | +[#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] | [#x0A93-#x0AA8] | +[#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | #x0ABD | #x0AE0 | +[#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | [#x0B2A-#x0B30] | +[#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | [#x0B5C-#x0B5D] | +[#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | [#x0B92-#x0B95] | +[#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4] | +[#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | [#x0C05-#x0C0C] | +[#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | +[#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8] | +[#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | [#x0CE0-#x0CE1] | +[#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | [#x0D2A-#x0D39] | +[#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | [#x0E32-#x0E33] | +[#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | [#x0E87-#x0E88] | #x0E8A | +#x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | [#x0EA1-#x0EA3] | #x0EA5 | +#x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0 | [#x0EB2-#x0EB3] | +#x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | [#x0F49-#x0F69] | +[#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103] | +[#x1105-#x1107] | #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C | +#x113E | #x1140 | #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 | +[#x115F-#x1161] | #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] | +[#x1172-#x1173] | #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] | +[#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 | +[#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] | +[#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | +#x1F5D | [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | +[#x1FC2-#x1FC4] | [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | +[#x1FE0-#x1FEC] | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | +[#x212A-#x212B] | #x212E | [#x2180-#x2182] | [#x3041-#x3094] | +[#x30A1-#x30FA] | [#x3105-#x312C] | [#xAC00-#xD7A3]""" + +ideographic = """[#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]""" + +combiningCharacter = """ +[#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486] | [#x0591-#x05A1] | +[#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF | [#x05C1-#x05C2] | #x05C4 | +[#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] | [#x06DD-#x06DF] | +[#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] | [#x0901-#x0903] | +#x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] | [#x0962-#x0963] | +[#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x09C4] | +[#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x0A02 | +#x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | +[#x0A4B-#x0A4D] | [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | +[#x0ABE-#x0AC5] | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | +#x0B3C | [#x0B3E-#x0B43] | [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | +[#x0B56-#x0B57] | [#x0B82-#x0B83] | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | +[#x0BCA-#x0BCD] | #x0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44] | +[#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56] | [#x0C82-#x0C83] | +[#x0CBE-#x0CC4] | [#x0CC6-#x0CC8] | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6] | +[#x0D02-#x0D03] | [#x0D3E-#x0D43] | [#x0D46-#x0D48] | [#x0D4A-#x0D4D] | +#x0D57 | #x0E31 | [#x0E34-#x0E3A] | [#x0E47-#x0E4E] | #x0EB1 | +[#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] | +#x0F35 | #x0F37 | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84] | +[#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97 | [#x0F99-#x0FAD] | +[#x0FB1-#x0FB7] | #x0FB9 | [#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F] | +#x3099 | #x309A""" + +digit = """ +[#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] | [#x0966-#x096F] | +[#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] | [#x0B66-#x0B6F] | +[#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] | [#x0D66-#x0D6F] | +[#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]""" + +extender = """ +#x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | +#[#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]""" + +letter = " | ".join([baseChar, ideographic]) + +# Without the +name = " | ".join([letter, digit, ".", "-", "_", combiningCharacter, + extender]) +nameFirst = " | ".join([letter, "_"]) + +reChar = re.compile(r"#x([\d|A-F]{4,4})") +reCharRange = re.compile(r"\[#x([\d|A-F]{4,4})-#x([\d|A-F]{4,4})\]") + + +def charStringToList(chars): + charRanges = [item.strip() for item in chars.split(" | ")] + rv = [] + for item in charRanges: + foundMatch = False + for regexp in (reChar, reCharRange): + match = regexp.match(item) + if match is not None: + rv.append([hexToInt(item) for item in match.groups()]) + if len(rv[-1]) == 1: + rv[-1] = rv[-1] * 2 + foundMatch = True + break + if not foundMatch: + assert len(item) == 1 + + rv.append([ord(item)] * 2) + rv = normaliseCharList(rv) + return rv + + +def normaliseCharList(charList): + charList = sorted(charList) + for item in charList: + assert item[1] >= item[0] + rv = [] + i = 0 + while i < len(charList): + j = 1 + rv.append(charList[i]) + while i + j < len(charList) and charList[i + j][0] <= rv[-1][1] + 1: + rv[-1][1] = charList[i + j][1] + j += 1 + i += j + return rv + +# We don't really support characters above the BMP :( +max_unicode = int("FFFF", 16) + + +def missingRanges(charList): + rv = [] + if charList[0] != 0: + rv.append([0, charList[0][0] - 1]) + for i, item in enumerate(charList[:-1]): + rv.append([item[1] + 1, charList[i + 1][0] - 1]) + if charList[-1][1] != max_unicode: + rv.append([charList[-1][1] + 1, max_unicode]) + return rv + + +def listToRegexpStr(charList): + rv = [] + for item in charList: + if item[0] == item[1]: + rv.append(escapeRegexp(chr(item[0]))) + else: + rv.append(escapeRegexp(chr(item[0])) + "-" + + escapeRegexp(chr(item[1]))) + return "[%s]" % "".join(rv) + + +def hexToInt(hex_str): + return int(hex_str, 16) + + +def escapeRegexp(string): + specialCharacters = (".", "^", "$", "*", "+", "?", "{", "}", + "[", "]", "|", "(", ")", "-") + for char in specialCharacters: + string = string.replace(char, "\\" + char) + + return string + +# output from the above +nonXmlNameBMPRegexp = re.compile('[\x00-,/:-@\\[-\\^`\\{-\xb6\xb8-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u02cf\u02d2-\u02ff\u0346-\u035f\u0362-\u0385\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482\u0487-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u0590\u05a2\u05ba\u05be\u05c0\u05c3\u05c5-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u063f\u0653-\u065f\u066a-\u066f\u06b8-\u06b9\u06bf\u06cf\u06d4\u06e9\u06ee-\u06ef\u06fa-\u0900\u0904\u093a-\u093b\u094e-\u0950\u0955-\u0957\u0964-\u0965\u0970-\u0980\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09bb\u09bd\u09c5-\u09c6\u09c9-\u09ca\u09ce-\u09d6\u09d8-\u09db\u09de\u09e4-\u09e5\u09f2-\u0a01\u0a03-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a3b\u0a3d\u0a43-\u0a46\u0a49-\u0a4a\u0a4e-\u0a58\u0a5d\u0a5f-\u0a65\u0a75-\u0a80\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abb\u0ac6\u0aca\u0ace-\u0adf\u0ae1-\u0ae5\u0af0-\u0b00\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3b\u0b44-\u0b46\u0b49-\u0b4a\u0b4e-\u0b55\u0b58-\u0b5b\u0b5e\u0b62-\u0b65\u0b70-\u0b81\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0bbd\u0bc3-\u0bc5\u0bc9\u0bce-\u0bd6\u0bd8-\u0be6\u0bf0-\u0c00\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c3d\u0c45\u0c49\u0c4e-\u0c54\u0c57-\u0c5f\u0c62-\u0c65\u0c70-\u0c81\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cbd\u0cc5\u0cc9\u0cce-\u0cd4\u0cd7-\u0cdd\u0cdf\u0ce2-\u0ce5\u0cf0-\u0d01\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d3d\u0d44-\u0d45\u0d49\u0d4e-\u0d56\u0d58-\u0d5f\u0d62-\u0d65\u0d70-\u0e00\u0e2f\u0e3b-\u0e3f\u0e4f\u0e5a-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eba\u0ebe-\u0ebf\u0ec5\u0ec7\u0ece-\u0ecf\u0eda-\u0f17\u0f1a-\u0f1f\u0f2a-\u0f34\u0f36\u0f38\u0f3a-\u0f3d\u0f48\u0f6a-\u0f70\u0f85\u0f8c-\u0f8f\u0f96\u0f98\u0fae-\u0fb0\u0fb8\u0fba-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u20cf\u20dd-\u20e0\u20e2-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3004\u3006\u3008-\u3020\u3030\u3036-\u3040\u3095-\u3098\u309b-\u309c\u309f-\u30a0\u30fb\u30ff-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa + +nonXmlNameFirstBMPRegexp = re.compile('[\x00-@\\[-\\^`\\{-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u0385\u0387\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u0640\u064b-\u0670\u06b8-\u06b9\u06bf\u06cf\u06d4\u06d6-\u06e4\u06e7-\u0904\u093a-\u093c\u093e-\u0957\u0962-\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09db\u09de\u09e2-\u09ef\u09f2-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a58\u0a5d\u0a5f-\u0a71\u0a75-\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abc\u0abe-\u0adf\u0ae1-\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3c\u0b3e-\u0b5b\u0b5e\u0b62-\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c5f\u0c62-\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cdd\u0cdf\u0ce2-\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d5f\u0d62-\u0e00\u0e2f\u0e31\u0e34-\u0e3f\u0e46-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eb1\u0eb4-\u0ebc\u0ebe-\u0ebf\u0ec5-\u0f3f\u0f48\u0f6a-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3006\u3008-\u3020\u302a-\u3040\u3095-\u30a0\u30fb-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa + +# Simpler things +nonPubidCharRegexp = re.compile("[^\x20\x0D\x0Aa-zA-Z0-9\\-'()+,./:=?;!*#@$_%]") + + +class InfosetFilter(object): + replacementRegexp = re.compile(r"U[\dA-F]{5,5}") + + def __init__(self, + dropXmlnsLocalName=False, + dropXmlnsAttrNs=False, + preventDoubleDashComments=False, + preventDashAtCommentEnd=False, + replaceFormFeedCharacters=True, + preventSingleQuotePubid=False): + + self.dropXmlnsLocalName = dropXmlnsLocalName + self.dropXmlnsAttrNs = dropXmlnsAttrNs + + self.preventDoubleDashComments = preventDoubleDashComments + self.preventDashAtCommentEnd = preventDashAtCommentEnd + + self.replaceFormFeedCharacters = replaceFormFeedCharacters + + self.preventSingleQuotePubid = preventSingleQuotePubid + + self.replaceCache = {} + + def coerceAttribute(self, name, namespace=None): + if self.dropXmlnsLocalName and name.startswith("xmlns:"): + warnings.warn("Attributes cannot begin with xmlns", DataLossWarning) + return None + elif (self.dropXmlnsAttrNs and + namespace == "http://www.w3.org/2000/xmlns/"): + warnings.warn("Attributes cannot be in the xml namespace", DataLossWarning) + return None + else: + return self.toXmlName(name) + + def coerceElement(self, name): + return self.toXmlName(name) + + def coerceComment(self, data): + if self.preventDoubleDashComments: + while "--" in data: + warnings.warn("Comments cannot contain adjacent dashes", DataLossWarning) + data = data.replace("--", "- -") + if data.endswith("-"): + warnings.warn("Comments cannot end in a dash", DataLossWarning) + data += " " + return data + + def coerceCharacters(self, data): + if self.replaceFormFeedCharacters: + for _ in range(data.count("\x0C")): + warnings.warn("Text cannot contain U+000C", DataLossWarning) + data = data.replace("\x0C", " ") + # Other non-xml characters + return data + + def coercePubid(self, data): + dataOutput = data + for char in nonPubidCharRegexp.findall(data): + warnings.warn("Coercing non-XML pubid", DataLossWarning) + replacement = self.getReplacementCharacter(char) + dataOutput = dataOutput.replace(char, replacement) + if self.preventSingleQuotePubid and dataOutput.find("'") >= 0: + warnings.warn("Pubid cannot contain single quote", DataLossWarning) + dataOutput = dataOutput.replace("'", self.getReplacementCharacter("'")) + return dataOutput + + def toXmlName(self, name): + nameFirst = name[0] + nameRest = name[1:] + m = nonXmlNameFirstBMPRegexp.match(nameFirst) + if m: + warnings.warn("Coercing non-XML name", DataLossWarning) + nameFirstOutput = self.getReplacementCharacter(nameFirst) + else: + nameFirstOutput = nameFirst + + nameRestOutput = nameRest + replaceChars = set(nonXmlNameBMPRegexp.findall(nameRest)) + for char in replaceChars: + warnings.warn("Coercing non-XML name", DataLossWarning) + replacement = self.getReplacementCharacter(char) + nameRestOutput = nameRestOutput.replace(char, replacement) + return nameFirstOutput + nameRestOutput + + def getReplacementCharacter(self, char): + if char in self.replaceCache: + replacement = self.replaceCache[char] + else: + replacement = self.escapeChar(char) + return replacement + + def fromXmlName(self, name): + for item in set(self.replacementRegexp.findall(name)): + name = name.replace(item, self.unescapeChar(item)) + return name + + def escapeChar(self, char): + replacement = "U%05X" % ord(char) + self.replaceCache[char] = replacement + return replacement + + def unescapeChar(self, charcode): + return chr(int(charcode[1:], 16)) diff --git a/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py b/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py new file mode 100644 index 0000000..a65e55f --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py @@ -0,0 +1,923 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import text_type, binary_type +from pip._vendor.six.moves import http_client, urllib + +import codecs +import re + +from pip._vendor import webencodings + +from .constants import EOF, spaceCharacters, asciiLetters, asciiUppercase +from .constants import _ReparseException +from . import _utils + +from io import StringIO + +try: + from io import BytesIO +except ImportError: + BytesIO = StringIO + +# Non-unicode versions of constants for use in the pre-parser +spaceCharactersBytes = frozenset([item.encode("ascii") for item in spaceCharacters]) +asciiLettersBytes = frozenset([item.encode("ascii") for item in asciiLetters]) +asciiUppercaseBytes = frozenset([item.encode("ascii") for item in asciiUppercase]) +spacesAngleBrackets = spaceCharactersBytes | frozenset([b">", b"<"]) + + +invalid_unicode_no_surrogate = "[\u0001-\u0008\u000B\u000E-\u001F\u007F-\u009F\uFDD0-\uFDEF\uFFFE\uFFFF\U0001FFFE\U0001FFFF\U0002FFFE\U0002FFFF\U0003FFFE\U0003FFFF\U0004FFFE\U0004FFFF\U0005FFFE\U0005FFFF\U0006FFFE\U0006FFFF\U0007FFFE\U0007FFFF\U0008FFFE\U0008FFFF\U0009FFFE\U0009FFFF\U000AFFFE\U000AFFFF\U000BFFFE\U000BFFFF\U000CFFFE\U000CFFFF\U000DFFFE\U000DFFFF\U000EFFFE\U000EFFFF\U000FFFFE\U000FFFFF\U0010FFFE\U0010FFFF]" # noqa + +if _utils.supports_lone_surrogates: + # Use one extra step of indirection and create surrogates with + # eval. Not using this indirection would introduce an illegal + # unicode literal on platforms not supporting such lone + # surrogates. + assert invalid_unicode_no_surrogate[-1] == "]" and invalid_unicode_no_surrogate.count("]") == 1 + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate[:-1] + + eval('"\\uD800-\\uDFFF"') + # pylint:disable=eval-used + "]") +else: + invalid_unicode_re = re.compile(invalid_unicode_no_surrogate) + +non_bmp_invalid_codepoints = set([0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, + 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, + 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, + 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, + 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, + 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, + 0x10FFFE, 0x10FFFF]) + +ascii_punctuation_re = re.compile("[\u0009-\u000D\u0020-\u002F\u003A-\u0040\u005C\u005B-\u0060\u007B-\u007E]") + +# Cache for charsUntil() +charsUntilRegEx = {} + + +class BufferedStream(object): + """Buffering for streams that do not have buffering of their own + + The buffer is implemented as a list of chunks on the assumption that + joining many strings will be slow since it is O(n**2) + """ + + def __init__(self, stream): + self.stream = stream + self.buffer = [] + self.position = [-1, 0] # chunk number, offset + + def tell(self): + pos = 0 + for chunk in self.buffer[:self.position[0]]: + pos += len(chunk) + pos += self.position[1] + return pos + + def seek(self, pos): + assert pos <= self._bufferedBytes() + offset = pos + i = 0 + while len(self.buffer[i]) < offset: + offset -= len(self.buffer[i]) + i += 1 + self.position = [i, offset] + + def read(self, bytes): + if not self.buffer: + return self._readStream(bytes) + elif (self.position[0] == len(self.buffer) and + self.position[1] == len(self.buffer[-1])): + return self._readStream(bytes) + else: + return self._readFromBuffer(bytes) + + def _bufferedBytes(self): + return sum([len(item) for item in self.buffer]) + + def _readStream(self, bytes): + data = self.stream.read(bytes) + self.buffer.append(data) + self.position[0] += 1 + self.position[1] = len(data) + return data + + def _readFromBuffer(self, bytes): + remainingBytes = bytes + rv = [] + bufferIndex = self.position[0] + bufferOffset = self.position[1] + while bufferIndex < len(self.buffer) and remainingBytes != 0: + assert remainingBytes > 0 + bufferedData = self.buffer[bufferIndex] + + if remainingBytes <= len(bufferedData) - bufferOffset: + bytesToRead = remainingBytes + self.position = [bufferIndex, bufferOffset + bytesToRead] + else: + bytesToRead = len(bufferedData) - bufferOffset + self.position = [bufferIndex, len(bufferedData)] + bufferIndex += 1 + rv.append(bufferedData[bufferOffset:bufferOffset + bytesToRead]) + remainingBytes -= bytesToRead + + bufferOffset = 0 + + if remainingBytes: + rv.append(self._readStream(remainingBytes)) + + return b"".join(rv) + + +def HTMLInputStream(source, **kwargs): + # Work around Python bug #20007: read(0) closes the connection. + # http://bugs.python.org/issue20007 + if (isinstance(source, http_client.HTTPResponse) or + # Also check for addinfourl wrapping HTTPResponse + (isinstance(source, urllib.response.addbase) and + isinstance(source.fp, http_client.HTTPResponse))): + isUnicode = False + elif hasattr(source, "read"): + isUnicode = isinstance(source.read(0), text_type) + else: + isUnicode = isinstance(source, text_type) + + if isUnicode: + encodings = [x for x in kwargs if x.endswith("_encoding")] + if encodings: + raise TypeError("Cannot set an encoding with a unicode input, set %r" % encodings) + + return HTMLUnicodeInputStream(source, **kwargs) + else: + return HTMLBinaryInputStream(source, **kwargs) + + +class HTMLUnicodeInputStream(object): + """Provides a unicode stream of characters to the HTMLTokenizer. + + This class takes care of character encoding and removing or replacing + incorrect byte-sequences and also provides column and line tracking. + + """ + + _defaultChunkSize = 10240 + + def __init__(self, source): + """Initialises the HTMLInputStream. + + HTMLInputStream(source, [encoding]) -> Normalized stream from source + for use by html5lib. + + source can be either a file-object, local filename or a string. + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + """ + + if not _utils.supports_lone_surrogates: + # Such platforms will have already checked for such + # surrogate errors, so no need to do this checking. + self.reportCharacterErrors = None + elif len("\U0010FFFF") == 1: + self.reportCharacterErrors = self.characterErrorsUCS4 + else: + self.reportCharacterErrors = self.characterErrorsUCS2 + + # List of where new lines occur + self.newLines = [0] + + self.charEncoding = (lookupEncoding("utf-8"), "certain") + self.dataStream = self.openStream(source) + + self.reset() + + def reset(self): + self.chunk = "" + self.chunkSize = 0 + self.chunkOffset = 0 + self.errors = [] + + # number of (complete) lines in previous chunks + self.prevNumLines = 0 + # number of columns in the last line of the previous chunk + self.prevNumCols = 0 + + # Deal with CR LF and surrogates split over chunk boundaries + self._bufferedCharacter = None + + def openStream(self, source): + """Produces a file object from source. + + source can be either a file object, local filename or a string. + + """ + # Already a file object + if hasattr(source, 'read'): + stream = source + else: + stream = StringIO(source) + + return stream + + def _position(self, offset): + chunk = self.chunk + nLines = chunk.count('\n', 0, offset) + positionLine = self.prevNumLines + nLines + lastLinePos = chunk.rfind('\n', 0, offset) + if lastLinePos == -1: + positionColumn = self.prevNumCols + offset + else: + positionColumn = offset - (lastLinePos + 1) + return (positionLine, positionColumn) + + def position(self): + """Returns (line, col) of the current position in the stream.""" + line, col = self._position(self.chunkOffset) + return (line + 1, col) + + def char(self): + """ Read one character from the stream or queue if available. Return + EOF when EOF is reached. + """ + # Read a new chunk from the input stream if necessary + if self.chunkOffset >= self.chunkSize: + if not self.readChunk(): + return EOF + + chunkOffset = self.chunkOffset + char = self.chunk[chunkOffset] + self.chunkOffset = chunkOffset + 1 + + return char + + def readChunk(self, chunkSize=None): + if chunkSize is None: + chunkSize = self._defaultChunkSize + + self.prevNumLines, self.prevNumCols = self._position(self.chunkSize) + + self.chunk = "" + self.chunkSize = 0 + self.chunkOffset = 0 + + data = self.dataStream.read(chunkSize) + + # Deal with CR LF and surrogates broken across chunks + if self._bufferedCharacter: + data = self._bufferedCharacter + data + self._bufferedCharacter = None + elif not data: + # We have no more data, bye-bye stream + return False + + if len(data) > 1: + lastv = ord(data[-1]) + if lastv == 0x0D or 0xD800 <= lastv <= 0xDBFF: + self._bufferedCharacter = data[-1] + data = data[:-1] + + if self.reportCharacterErrors: + self.reportCharacterErrors(data) + + # Replace invalid characters + data = data.replace("\r\n", "\n") + data = data.replace("\r", "\n") + + self.chunk = data + self.chunkSize = len(data) + + return True + + def characterErrorsUCS4(self, data): + for _ in range(len(invalid_unicode_re.findall(data))): + self.errors.append("invalid-codepoint") + + def characterErrorsUCS2(self, data): + # Someone picked the wrong compile option + # You lose + skip = False + for match in invalid_unicode_re.finditer(data): + if skip: + continue + codepoint = ord(match.group()) + pos = match.start() + # Pretty sure there should be endianness issues here + if _utils.isSurrogatePair(data[pos:pos + 2]): + # We have a surrogate pair! + char_val = _utils.surrogatePairToCodepoint(data[pos:pos + 2]) + if char_val in non_bmp_invalid_codepoints: + self.errors.append("invalid-codepoint") + skip = True + elif (codepoint >= 0xD800 and codepoint <= 0xDFFF and + pos == len(data) - 1): + self.errors.append("invalid-codepoint") + else: + skip = False + self.errors.append("invalid-codepoint") + + def charsUntil(self, characters, opposite=False): + """ Returns a string of characters from the stream up to but not + including any character in 'characters' or EOF. 'characters' must be + a container that supports the 'in' method and iteration over its + characters. + """ + + # Use a cache of regexps to find the required characters + try: + chars = charsUntilRegEx[(characters, opposite)] + except KeyError: + if __debug__: + for c in characters: + assert(ord(c) < 128) + regex = "".join(["\\x%02x" % ord(c) for c in characters]) + if not opposite: + regex = "^%s" % regex + chars = charsUntilRegEx[(characters, opposite)] = re.compile("[%s]+" % regex) + + rv = [] + + while True: + # Find the longest matching prefix + m = chars.match(self.chunk, self.chunkOffset) + if m is None: + # If nothing matched, and it wasn't because we ran out of chunk, + # then stop + if self.chunkOffset != self.chunkSize: + break + else: + end = m.end() + # If not the whole chunk matched, return everything + # up to the part that didn't match + if end != self.chunkSize: + rv.append(self.chunk[self.chunkOffset:end]) + self.chunkOffset = end + break + # If the whole remainder of the chunk matched, + # use it all and read the next chunk + rv.append(self.chunk[self.chunkOffset:]) + if not self.readChunk(): + # Reached EOF + break + + r = "".join(rv) + return r + + def unget(self, char): + # Only one character is allowed to be ungotten at once - it must + # be consumed again before any further call to unget + if char is not None: + if self.chunkOffset == 0: + # unget is called quite rarely, so it's a good idea to do + # more work here if it saves a bit of work in the frequently + # called char and charsUntil. + # So, just prepend the ungotten character onto the current + # chunk: + self.chunk = char + self.chunk + self.chunkSize += 1 + else: + self.chunkOffset -= 1 + assert self.chunk[self.chunkOffset] == char + + +class HTMLBinaryInputStream(HTMLUnicodeInputStream): + """Provides a unicode stream of characters to the HTMLTokenizer. + + This class takes care of character encoding and removing or replacing + incorrect byte-sequences and also provides column and line tracking. + + """ + + def __init__(self, source, override_encoding=None, transport_encoding=None, + same_origin_parent_encoding=None, likely_encoding=None, + default_encoding="windows-1252", useChardet=True): + """Initialises the HTMLInputStream. + + HTMLInputStream(source, [encoding]) -> Normalized stream from source + for use by html5lib. + + source can be either a file-object, local filename or a string. + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + """ + # Raw Stream - for unicode objects this will encode to utf-8 and set + # self.charEncoding as appropriate + self.rawStream = self.openStream(source) + + HTMLUnicodeInputStream.__init__(self, self.rawStream) + + # Encoding Information + # Number of bytes to use when looking for a meta element with + # encoding information + self.numBytesMeta = 1024 + # Number of bytes to use when using detecting encoding using chardet + self.numBytesChardet = 100 + # Things from args + self.override_encoding = override_encoding + self.transport_encoding = transport_encoding + self.same_origin_parent_encoding = same_origin_parent_encoding + self.likely_encoding = likely_encoding + self.default_encoding = default_encoding + + # Determine encoding + self.charEncoding = self.determineEncoding(useChardet) + assert self.charEncoding[0] is not None + + # Call superclass + self.reset() + + def reset(self): + self.dataStream = self.charEncoding[0].codec_info.streamreader(self.rawStream, 'replace') + HTMLUnicodeInputStream.reset(self) + + def openStream(self, source): + """Produces a file object from source. + + source can be either a file object, local filename or a string. + + """ + # Already a file object + if hasattr(source, 'read'): + stream = source + else: + stream = BytesIO(source) + + try: + stream.seek(stream.tell()) + except: # pylint:disable=bare-except + stream = BufferedStream(stream) + + return stream + + def determineEncoding(self, chardet=True): + # BOMs take precedence over everything + # This will also read past the BOM if present + charEncoding = self.detectBOM(), "certain" + if charEncoding[0] is not None: + return charEncoding + + # If we've been overriden, we've been overriden + charEncoding = lookupEncoding(self.override_encoding), "certain" + if charEncoding[0] is not None: + return charEncoding + + # Now check the transport layer + charEncoding = lookupEncoding(self.transport_encoding), "certain" + if charEncoding[0] is not None: + return charEncoding + + # Look for meta elements with encoding information + charEncoding = self.detectEncodingMeta(), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Parent document encoding + charEncoding = lookupEncoding(self.same_origin_parent_encoding), "tentative" + if charEncoding[0] is not None and not charEncoding[0].name.startswith("utf-16"): + return charEncoding + + # "likely" encoding + charEncoding = lookupEncoding(self.likely_encoding), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Guess with chardet, if available + if chardet: + try: + from pip._vendor.chardet.universaldetector import UniversalDetector + except ImportError: + pass + else: + buffers = [] + detector = UniversalDetector() + while not detector.done: + buffer = self.rawStream.read(self.numBytesChardet) + assert isinstance(buffer, bytes) + if not buffer: + break + buffers.append(buffer) + detector.feed(buffer) + detector.close() + encoding = lookupEncoding(detector.result['encoding']) + self.rawStream.seek(0) + if encoding is not None: + return encoding, "tentative" + + # Try the default encoding + charEncoding = lookupEncoding(self.default_encoding), "tentative" + if charEncoding[0] is not None: + return charEncoding + + # Fallback to html5lib's default if even that hasn't worked + return lookupEncoding("windows-1252"), "tentative" + + def changeEncoding(self, newEncoding): + assert self.charEncoding[1] != "certain" + newEncoding = lookupEncoding(newEncoding) + if newEncoding is None: + return + if newEncoding.name in ("utf-16be", "utf-16le"): + newEncoding = lookupEncoding("utf-8") + assert newEncoding is not None + elif newEncoding == self.charEncoding[0]: + self.charEncoding = (self.charEncoding[0], "certain") + else: + self.rawStream.seek(0) + self.charEncoding = (newEncoding, "certain") + self.reset() + raise _ReparseException("Encoding changed from %s to %s" % (self.charEncoding[0], newEncoding)) + + def detectBOM(self): + """Attempts to detect at BOM at the start of the stream. If + an encoding can be determined from the BOM return the name of the + encoding otherwise return None""" + bomDict = { + codecs.BOM_UTF8: 'utf-8', + codecs.BOM_UTF16_LE: 'utf-16le', codecs.BOM_UTF16_BE: 'utf-16be', + codecs.BOM_UTF32_LE: 'utf-32le', codecs.BOM_UTF32_BE: 'utf-32be' + } + + # Go to beginning of file and read in 4 bytes + string = self.rawStream.read(4) + assert isinstance(string, bytes) + + # Try detecting the BOM using bytes from the string + encoding = bomDict.get(string[:3]) # UTF-8 + seek = 3 + if not encoding: + # Need to detect UTF-32 before UTF-16 + encoding = bomDict.get(string) # UTF-32 + seek = 4 + if not encoding: + encoding = bomDict.get(string[:2]) # UTF-16 + seek = 2 + + # Set the read position past the BOM if one was found, otherwise + # set it to the start of the stream + if encoding: + self.rawStream.seek(seek) + return lookupEncoding(encoding) + else: + self.rawStream.seek(0) + return None + + def detectEncodingMeta(self): + """Report the encoding declared by the meta element + """ + buffer = self.rawStream.read(self.numBytesMeta) + assert isinstance(buffer, bytes) + parser = EncodingParser(buffer) + self.rawStream.seek(0) + encoding = parser.getEncoding() + + if encoding is not None and encoding.name in ("utf-16be", "utf-16le"): + encoding = lookupEncoding("utf-8") + + return encoding + + +class EncodingBytes(bytes): + """String-like object with an associated position and various extra methods + If the position is ever greater than the string length then an exception is + raised""" + def __new__(self, value): + assert isinstance(value, bytes) + return bytes.__new__(self, value.lower()) + + def __init__(self, value): + # pylint:disable=unused-argument + self._position = -1 + + def __iter__(self): + return self + + def __next__(self): + p = self._position = self._position + 1 + if p >= len(self): + raise StopIteration + elif p < 0: + raise TypeError + return self[p:p + 1] + + def next(self): + # Py2 compat + return self.__next__() + + def previous(self): + p = self._position + if p >= len(self): + raise StopIteration + elif p < 0: + raise TypeError + self._position = p = p - 1 + return self[p:p + 1] + + def setPosition(self, position): + if self._position >= len(self): + raise StopIteration + self._position = position + + def getPosition(self): + if self._position >= len(self): + raise StopIteration + if self._position >= 0: + return self._position + else: + return None + + position = property(getPosition, setPosition) + + def getCurrentByte(self): + return self[self.position:self.position + 1] + + currentByte = property(getCurrentByte) + + def skip(self, chars=spaceCharactersBytes): + """Skip past a list of characters""" + p = self.position # use property for the error-checking + while p < len(self): + c = self[p:p + 1] + if c not in chars: + self._position = p + return c + p += 1 + self._position = p + return None + + def skipUntil(self, chars): + p = self.position + while p < len(self): + c = self[p:p + 1] + if c in chars: + self._position = p + return c + p += 1 + self._position = p + return None + + def matchBytes(self, bytes): + """Look for a sequence of bytes at the start of a string. If the bytes + are found return True and advance the position to the byte after the + match. Otherwise return False and leave the position alone""" + p = self.position + data = self[p:p + len(bytes)] + rv = data.startswith(bytes) + if rv: + self.position += len(bytes) + return rv + + def jumpTo(self, bytes): + """Look for the next sequence of bytes matching a given sequence. If + a match is found advance the position to the last byte of the match""" + newPosition = self[self.position:].find(bytes) + if newPosition > -1: + # XXX: This is ugly, but I can't see a nicer way to fix this. + if self._position == -1: + self._position = 0 + self._position += (newPosition + len(bytes) - 1) + return True + else: + raise StopIteration + + +class EncodingParser(object): + """Mini parser for detecting character encoding from meta elements""" + + def __init__(self, data): + """string - the data to work on for encoding detection""" + self.data = EncodingBytes(data) + self.encoding = None + + def getEncoding(self): + methodDispatch = ( + (b"") + + def handleMeta(self): + if self.data.currentByte not in spaceCharactersBytes: + # if we have ") + + def getAttribute(self): + """Return a name,value pair for the next attribute in the stream, + if one is found, or None""" + data = self.data + # Step 1 (skip chars) + c = data.skip(spaceCharactersBytes | frozenset([b"/"])) + assert c is None or len(c) == 1 + # Step 2 + if c in (b">", None): + return None + # Step 3 + attrName = [] + attrValue = [] + # Step 4 attribute name + while True: + if c == b"=" and attrName: + break + elif c in spaceCharactersBytes: + # Step 6! + c = data.skip() + break + elif c in (b"/", b">"): + return b"".join(attrName), b"" + elif c in asciiUppercaseBytes: + attrName.append(c.lower()) + elif c is None: + return None + else: + attrName.append(c) + # Step 5 + c = next(data) + # Step 7 + if c != b"=": + data.previous() + return b"".join(attrName), b"" + # Step 8 + next(data) + # Step 9 + c = data.skip() + # Step 10 + if c in (b"'", b'"'): + # 10.1 + quoteChar = c + while True: + # 10.2 + c = next(data) + # 10.3 + if c == quoteChar: + next(data) + return b"".join(attrName), b"".join(attrValue) + # 10.4 + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + # 10.5 + else: + attrValue.append(c) + elif c == b">": + return b"".join(attrName), b"" + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + elif c is None: + return None + else: + attrValue.append(c) + # Step 11 + while True: + c = next(data) + if c in spacesAngleBrackets: + return b"".join(attrName), b"".join(attrValue) + elif c in asciiUppercaseBytes: + attrValue.append(c.lower()) + elif c is None: + return None + else: + attrValue.append(c) + + +class ContentAttrParser(object): + def __init__(self, data): + assert isinstance(data, bytes) + self.data = data + + def parse(self): + try: + # Check if the attr name is charset + # otherwise return + self.data.jumpTo(b"charset") + self.data.position += 1 + self.data.skip() + if not self.data.currentByte == b"=": + # If there is no = sign keep looking for attrs + return None + self.data.position += 1 + self.data.skip() + # Look for an encoding between matching quote marks + if self.data.currentByte in (b'"', b"'"): + quoteMark = self.data.currentByte + self.data.position += 1 + oldPosition = self.data.position + if self.data.jumpTo(quoteMark): + return self.data[oldPosition:self.data.position] + else: + return None + else: + # Unquoted value + oldPosition = self.data.position + try: + self.data.skipUntil(spaceCharactersBytes) + return self.data[oldPosition:self.data.position] + except StopIteration: + # Return the whole remaining value + return self.data[oldPosition:] + except StopIteration: + return None + + +def lookupEncoding(encoding): + """Return the python codec name corresponding to an encoding or None if the + string doesn't correspond to a valid encoding.""" + if isinstance(encoding, binary_type): + try: + encoding = encoding.decode("ascii") + except UnicodeDecodeError: + return None + + if encoding is not None: + try: + return webencodings.lookup(encoding) + except AttributeError: + return None + else: + return None diff --git a/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py b/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py new file mode 100644 index 0000000..178f6e7 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py @@ -0,0 +1,1721 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import unichr as chr + +from collections import deque + +from .constants import spaceCharacters +from .constants import entities +from .constants import asciiLetters, asciiUpper2Lower +from .constants import digits, hexDigits, EOF +from .constants import tokenTypes, tagTokenTypes +from .constants import replacementCharacters + +from ._inputstream import HTMLInputStream + +from ._trie import Trie + +entitiesTrie = Trie(entities) + + +class HTMLTokenizer(object): + """ This class takes care of tokenizing HTML. + + * self.currentToken + Holds the token that is currently being processed. + + * self.state + Holds a reference to the method to be invoked... XXX + + * self.stream + Points to HTMLInputStream object. + """ + + def __init__(self, stream, parser=None, **kwargs): + + self.stream = HTMLInputStream(stream, **kwargs) + self.parser = parser + + # Setup the initial tokenizer state + self.escapeFlag = False + self.lastFourChars = [] + self.state = self.dataState + self.escape = False + + # The current token being created + self.currentToken = None + super(HTMLTokenizer, self).__init__() + + def __iter__(self): + """ This is where the magic happens. + + We do our usually processing through the states and when we have a token + to return we yield the token which pauses processing until the next token + is requested. + """ + self.tokenQueue = deque([]) + # Start processing. When EOF is reached self.state will return False + # instead of True and the loop will terminate. + while self.state(): + while self.stream.errors: + yield {"type": tokenTypes["ParseError"], "data": self.stream.errors.pop(0)} + while self.tokenQueue: + yield self.tokenQueue.popleft() + + def consumeNumberEntity(self, isHex): + """This function returns either U+FFFD or the character based on the + decimal or hexadecimal representation. It also discards ";" if present. + If not present self.tokenQueue.append({"type": tokenTypes["ParseError"]}) is invoked. + """ + + allowed = digits + radix = 10 + if isHex: + allowed = hexDigits + radix = 16 + + charStack = [] + + # Consume all the characters that are in range while making sure we + # don't hit an EOF. + c = self.stream.char() + while c in allowed and c is not EOF: + charStack.append(c) + c = self.stream.char() + + # Convert the set of characters consumed to an int. + charAsInt = int("".join(charStack), radix) + + # Certain characters get replaced with others + if charAsInt in replacementCharacters: + char = replacementCharacters[charAsInt] + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + elif ((0xD800 <= charAsInt <= 0xDFFF) or + (charAsInt > 0x10FFFF)): + char = "\uFFFD" + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + else: + # Should speed up this check somehow (e.g. move the set to a constant) + if ((0x0001 <= charAsInt <= 0x0008) or + (0x000E <= charAsInt <= 0x001F) or + (0x007F <= charAsInt <= 0x009F) or + (0xFDD0 <= charAsInt <= 0xFDEF) or + charAsInt in frozenset([0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, + 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, + 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, + 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, + 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, + 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, + 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, + 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, + 0xFFFFF, 0x10FFFE, 0x10FFFF])): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "illegal-codepoint-for-numeric-entity", + "datavars": {"charAsInt": charAsInt}}) + try: + # Try/except needed as UCS-2 Python builds' unichar only works + # within the BMP. + char = chr(charAsInt) + except ValueError: + v = charAsInt - 0x10000 + char = chr(0xD800 | (v >> 10)) + chr(0xDC00 | (v & 0x3FF)) + + # Discard the ; if present. Otherwise, put it back on the queue and + # invoke parseError on parser. + if c != ";": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "numeric-entity-without-semicolon"}) + self.stream.unget(c) + + return char + + def consumeEntity(self, allowedChar=None, fromAttribute=False): + # Initialise to the default output for when no entity is matched + output = "&" + + charStack = [self.stream.char()] + if (charStack[0] in spaceCharacters or charStack[0] in (EOF, "<", "&") or + (allowedChar is not None and allowedChar == charStack[0])): + self.stream.unget(charStack[0]) + + elif charStack[0] == "#": + # Read the next character to see if it's hex or decimal + hex = False + charStack.append(self.stream.char()) + if charStack[-1] in ("x", "X"): + hex = True + charStack.append(self.stream.char()) + + # charStack[-1] should be the first digit + if (hex and charStack[-1] in hexDigits) \ + or (not hex and charStack[-1] in digits): + # At least one digit found, so consume the whole number + self.stream.unget(charStack[-1]) + output = self.consumeNumberEntity(hex) + else: + # No digits found + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "expected-numeric-entity"}) + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + + else: + # At this point in the process might have named entity. Entities + # are stored in the global variable "entities". + # + # Consume characters and compare to these to a substring of the + # entity names in the list until the substring no longer matches. + while (charStack[-1] is not EOF): + if not entitiesTrie.has_keys_with_prefix("".join(charStack)): + break + charStack.append(self.stream.char()) + + # At this point we have a string that starts with some characters + # that may match an entity + # Try to find the longest entity the string will match to take care + # of ¬i for instance. + try: + entityName = entitiesTrie.longest_prefix("".join(charStack[:-1])) + entityLength = len(entityName) + except KeyError: + entityName = None + + if entityName is not None: + if entityName[-1] != ";": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "named-entity-without-semicolon"}) + if (entityName[-1] != ";" and fromAttribute and + (charStack[entityLength] in asciiLetters or + charStack[entityLength] in digits or + charStack[entityLength] == "=")): + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + else: + output = entities[entityName] + self.stream.unget(charStack.pop()) + output += "".join(charStack[entityLength:]) + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-named-entity"}) + self.stream.unget(charStack.pop()) + output = "&" + "".join(charStack) + + if fromAttribute: + self.currentToken["data"][-1][1] += output + else: + if output in spaceCharacters: + tokenType = "SpaceCharacters" + else: + tokenType = "Characters" + self.tokenQueue.append({"type": tokenTypes[tokenType], "data": output}) + + def processEntityInAttribute(self, allowedChar): + """This method replaces the need for "entityInAttributeValueState". + """ + self.consumeEntity(allowedChar=allowedChar, fromAttribute=True) + + def emitCurrentToken(self): + """This method is a generic handler for emitting the tags. It also sets + the state to "data" because that's what's needed after a token has been + emitted. + """ + token = self.currentToken + # Add token to the queue to be yielded + if (token["type"] in tagTokenTypes): + token["name"] = token["name"].translate(asciiUpper2Lower) + if token["type"] == tokenTypes["EndTag"]: + if token["data"]: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "attributes-in-end-tag"}) + if token["selfClosing"]: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "self-closing-flag-on-end-tag"}) + self.tokenQueue.append(token) + self.state = self.dataState + + # Below are the various tokenizer states worked out. + def dataState(self): + data = self.stream.char() + if data == "&": + self.state = self.entityDataState + elif data == "<": + self.state = self.tagOpenState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\u0000"}) + elif data is EOF: + # Tokenization ends. + return False + elif data in spaceCharacters: + # Directly after emitting a token you switch back to the "data + # state". At that point spaceCharacters are important so they are + # emitted separately. + self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": + data + self.stream.charsUntil(spaceCharacters, True)}) + # No need to update lastFourChars here, since the first space will + # have already been appended to lastFourChars and will have broken + # any sequences + else: + chars = self.stream.charsUntil(("&", "<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def entityDataState(self): + self.consumeEntity() + self.state = self.dataState + return True + + def rcdataState(self): + data = self.stream.char() + if data == "&": + self.state = self.characterReferenceInRcdata + elif data == "<": + self.state = self.rcdataLessThanSignState + elif data == EOF: + # Tokenization ends. + return False + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data in spaceCharacters: + # Directly after emitting a token you switch back to the "data + # state". At that point spaceCharacters are important so they are + # emitted separately. + self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": + data + self.stream.charsUntil(spaceCharacters, True)}) + # No need to update lastFourChars here, since the first space will + # have already been appended to lastFourChars and will have broken + # any sequences + else: + chars = self.stream.charsUntil(("&", "<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def characterReferenceInRcdata(self): + self.consumeEntity() + self.state = self.rcdataState + return True + + def rawtextState(self): + data = self.stream.char() + if data == "<": + self.state = self.rawtextLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + # Tokenization ends. + return False + else: + chars = self.stream.charsUntil(("<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def scriptDataState(self): + data = self.stream.char() + if data == "<": + self.state = self.scriptDataLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + # Tokenization ends. + return False + else: + chars = self.stream.charsUntil(("<", "\u0000")) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + chars}) + return True + + def plaintextState(self): + data = self.stream.char() + if data == EOF: + # Tokenization ends. + return False + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": + data + self.stream.charsUntil("\u0000")}) + return True + + def tagOpenState(self): + data = self.stream.char() + if data == "!": + self.state = self.markupDeclarationOpenState + elif data == "/": + self.state = self.closeTagOpenState + elif data in asciiLetters: + self.currentToken = {"type": tokenTypes["StartTag"], + "name": data, "data": [], + "selfClosing": False, + "selfClosingAcknowledged": False} + self.state = self.tagNameState + elif data == ">": + # XXX In theory it could be something besides a tag name. But + # do we really care? + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name-but-got-right-bracket"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<>"}) + self.state = self.dataState + elif data == "?": + # XXX In theory it could be something besides a tag name. But + # do we really care? + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name-but-got-question-mark"}) + self.stream.unget(data) + self.state = self.bogusCommentState + else: + # XXX + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-tag-name"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.dataState + return True + + def closeTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.currentToken = {"type": tokenTypes["EndTag"], "name": data, + "data": [], "selfClosing": False} + self.state = self.tagNameState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-closing-tag-but-got-right-bracket"}) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-closing-tag-but-got-eof"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "": + self.emitCurrentToken() + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-tag-name"}) + self.state = self.dataState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] += "\uFFFD" + else: + self.currentToken["name"] += data + # (Don't use charsUntil here, because tag names are + # very short and it's faster to not do anything fancy) + return True + + def rcdataLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.temporaryBuffer = "" + self.state = self.rcdataEndTagOpenState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.rcdataState + return True + + def rcdataEndTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.temporaryBuffer += data + self.state = self.rcdataEndTagNameState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) + self.state = self.scriptDataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataEscapedState + elif data == EOF: + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataEscapedState + return True + + def scriptDataEscapedLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.temporaryBuffer = "" + self.state = self.scriptDataEscapedEndTagOpenState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<" + data}) + self.temporaryBuffer = data + self.state = self.scriptDataDoubleEscapeStartState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.stream.unget(data) + self.state = self.scriptDataEscapedState + return True + + def scriptDataEscapedEndTagOpenState(self): + data = self.stream.char() + if data in asciiLetters: + self.temporaryBuffer = data + self.state = self.scriptDataEscapedEndTagNameState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: + self.currentToken = {"type": tokenTypes["EndTag"], + "name": self.temporaryBuffer, + "data": [], "selfClosing": False} + self.emitCurrentToken() + self.state = self.dataState + elif data in asciiLetters: + self.temporaryBuffer += data + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": ""))): + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + if self.temporaryBuffer.lower() == "script": + self.state = self.scriptDataDoubleEscapedState + else: + self.state = self.scriptDataEscapedState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.temporaryBuffer += data + else: + self.stream.unget(data) + self.state = self.scriptDataEscapedState + return True + + def scriptDataDoubleEscapedState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + self.state = self.scriptDataDoubleEscapedDashState + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + return True + + def scriptDataDoubleEscapedDashState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + self.state = self.scriptDataDoubleEscapedDashDashState + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataDoubleEscapedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapedDashDashState(self): + data = self.stream.char() + if data == "-": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) + elif data == "<": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) + self.state = self.scriptDataDoubleEscapedLessThanSignState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) + self.state = self.scriptDataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": "\uFFFD"}) + self.state = self.scriptDataDoubleEscapedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-script-in-script"}) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapedLessThanSignState(self): + data = self.stream.char() + if data == "/": + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "/"}) + self.temporaryBuffer = "" + self.state = self.scriptDataDoubleEscapeEndState + else: + self.stream.unget(data) + self.state = self.scriptDataDoubleEscapedState + return True + + def scriptDataDoubleEscapeEndState(self): + data = self.stream.char() + if data in (spaceCharacters | frozenset(("/", ">"))): + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + if self.temporaryBuffer.lower() == "script": + self.state = self.scriptDataEscapedState + else: + self.state = self.scriptDataDoubleEscapedState + elif data in asciiLetters: + self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) + self.temporaryBuffer += data + else: + self.stream.unget(data) + self.state = self.scriptDataDoubleEscapedState + return True + + def beforeAttributeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data in asciiLetters: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == ">": + self.emitCurrentToken() + elif data == "/": + self.state = self.selfClosingStartTagState + elif data in ("'", '"', "=", "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "invalid-character-in-attribute-name"}) + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"].append(["\uFFFD", ""]) + self.state = self.attributeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-name-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + return True + + def attributeNameState(self): + data = self.stream.char() + leavingThisState = True + emitToken = False + if data == "=": + self.state = self.beforeAttributeValueState + elif data in asciiLetters: + self.currentToken["data"][-1][0] += data +\ + self.stream.charsUntil(asciiLetters, True) + leavingThisState = False + elif data == ">": + # XXX If we emit here the attributes are converted to a dict + # without being checked and when the code below runs we error + # because data is a dict not a list + emitToken = True + elif data in spaceCharacters: + self.state = self.afterAttributeNameState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][0] += "\uFFFD" + leavingThisState = False + elif data in ("'", '"', "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "invalid-character-in-attribute-name"}) + self.currentToken["data"][-1][0] += data + leavingThisState = False + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "eof-in-attribute-name"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][0] += data + leavingThisState = False + + if leavingThisState: + # Attributes are not dropped at this stage. That happens when the + # start tag token is emitted so values can still be safely appended + # to attributes, but we do want to report the parse error in time. + self.currentToken["data"][-1][0] = ( + self.currentToken["data"][-1][0].translate(asciiUpper2Lower)) + for name, _ in self.currentToken["data"][:-1]: + if self.currentToken["data"][-1][0] == name: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "duplicate-attribute"}) + break + # XXX Fix for above XXX + if emitToken: + self.emitCurrentToken() + return True + + def afterAttributeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data == "=": + self.state = self.beforeAttributeValueState + elif data == ">": + self.emitCurrentToken() + elif data in asciiLetters: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data == "/": + self.state = self.selfClosingStartTagState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"].append(["\uFFFD", ""]) + self.state = self.attributeNameState + elif data in ("'", '"', "<"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "invalid-character-after-attribute-name"}) + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-end-of-tag-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"].append([data, ""]) + self.state = self.attributeNameState + return True + + def beforeAttributeValueState(self): + data = self.stream.char() + if data in spaceCharacters: + self.stream.charsUntil(spaceCharacters, True) + elif data == "\"": + self.state = self.attributeValueDoubleQuotedState + elif data == "&": + self.state = self.attributeValueUnQuotedState + self.stream.unget(data) + elif data == "'": + self.state = self.attributeValueSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-value-but-got-right-bracket"}) + self.emitCurrentToken() + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + self.state = self.attributeValueUnQuotedState + elif data in ("=", "<", "`"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "equals-in-unquoted-attribute-value"}) + self.currentToken["data"][-1][1] += data + self.state = self.attributeValueUnQuotedState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-attribute-value-but-got-eof"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data + self.state = self.attributeValueUnQuotedState + return True + + def attributeValueDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterAttributeValueState + elif data == "&": + self.processEntityInAttribute('"') + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-double-quote"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data +\ + self.stream.charsUntil(("\"", "&", "\u0000")) + return True + + def attributeValueSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterAttributeValueState + elif data == "&": + self.processEntityInAttribute("'") + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-single-quote"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data +\ + self.stream.charsUntil(("'", "&", "\u0000")) + return True + + def attributeValueUnQuotedState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeAttributeNameState + elif data == "&": + self.processEntityInAttribute(">") + elif data == ">": + self.emitCurrentToken() + elif data in ('"', "'", "=", "<", "`"): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-in-unquoted-attribute-value"}) + self.currentToken["data"][-1][1] += data + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"][-1][1] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-attribute-value-no-quotes"}) + self.state = self.dataState + else: + self.currentToken["data"][-1][1] += data + self.stream.charsUntil( + frozenset(("&", ">", '"', "'", "=", "<", "`", "\u0000")) | spaceCharacters) + return True + + def afterAttributeValueState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeAttributeNameState + elif data == ">": + self.emitCurrentToken() + elif data == "/": + self.state = self.selfClosingStartTagState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-EOF-after-attribute-value"}) + self.stream.unget(data) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-after-attribute-value"}) + self.stream.unget(data) + self.state = self.beforeAttributeNameState + return True + + def selfClosingStartTagState(self): + data = self.stream.char() + if data == ">": + self.currentToken["selfClosing"] = True + self.emitCurrentToken() + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": + "unexpected-EOF-after-solidus-in-tag"}) + self.stream.unget(data) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-character-after-solidus-in-tag"}) + self.stream.unget(data) + self.state = self.beforeAttributeNameState + return True + + def bogusCommentState(self): + # Make a new comment token and give it as value all the characters + # until the first > or EOF (charsUntil checks for EOF automatically) + # and emit it. + data = self.stream.charsUntil(">") + data = data.replace("\u0000", "\uFFFD") + self.tokenQueue.append( + {"type": tokenTypes["Comment"], "data": data}) + + # Eat the character directly after the bogus comment which is either a + # ">" or an EOF. + self.stream.char() + self.state = self.dataState + return True + + def markupDeclarationOpenState(self): + charStack = [self.stream.char()] + if charStack[-1] == "-": + charStack.append(self.stream.char()) + if charStack[-1] == "-": + self.currentToken = {"type": tokenTypes["Comment"], "data": ""} + self.state = self.commentStartState + return True + elif charStack[-1] in ('d', 'D'): + matched = True + for expected in (('o', 'O'), ('c', 'C'), ('t', 'T'), + ('y', 'Y'), ('p', 'P'), ('e', 'E')): + charStack.append(self.stream.char()) + if charStack[-1] not in expected: + matched = False + break + if matched: + self.currentToken = {"type": tokenTypes["Doctype"], + "name": "", + "publicId": None, "systemId": None, + "correct": True} + self.state = self.doctypeState + return True + elif (charStack[-1] == "[" and + self.parser is not None and + self.parser.tree.openElements and + self.parser.tree.openElements[-1].namespace != self.parser.tree.defaultNamespace): + matched = True + for expected in ["C", "D", "A", "T", "A", "["]: + charStack.append(self.stream.char()) + if charStack[-1] != expected: + matched = False + break + if matched: + self.state = self.cdataSectionState + return True + + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-dashes-or-doctype"}) + + while charStack: + self.stream.unget(charStack.pop()) + self.state = self.bogusCommentState + return True + + def commentStartState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentStartDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "incorrect-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += data + self.state = self.commentState + return True + + def commentStartDashState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "-\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "incorrect-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "-" + data + self.state = self.commentState + return True + + def commentState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "\uFFFD" + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "eof-in-comment"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += data + \ + self.stream.charsUntil(("-", "\u0000")) + return True + + def commentEndDashState(self): + data = self.stream.char() + if data == "-": + self.state = self.commentEndState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "-\uFFFD" + self.state = self.commentState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-end-dash"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "-" + data + self.state = self.commentState + return True + + def commentEndState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "--\uFFFD" + self.state = self.commentState + elif data == "!": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-bang-after-double-dash-in-comment"}) + self.state = self.commentEndBangState + elif data == "-": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-dash-after-double-dash-in-comment"}) + self.currentToken["data"] += data + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-double-dash"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + # XXX + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-comment"}) + self.currentToken["data"] += "--" + data + self.state = self.commentState + return True + + def commentEndBangState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "-": + self.currentToken["data"] += "--!" + self.state = self.commentEndDashState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["data"] += "--!\uFFFD" + self.state = self.commentState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-comment-end-bang-state"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["data"] += "--!" + data + self.state = self.commentState + return True + + def doctypeState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-eof"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "need-space-after-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypeNameState + return True + + def beforeDoctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-right-bracket"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] = "\uFFFD" + self.state = self.doctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-doctype-name-but-got-eof"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["name"] = data + self.state = self.doctypeNameState + return True + + def doctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.state = self.afterDoctypeNameState + elif data == ">": + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["name"] += "\uFFFD" + self.state = self.doctypeNameState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype-name"}) + self.currentToken["correct"] = False + self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["name"] += data + return True + + def afterDoctypeNameState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.currentToken["correct"] = False + self.stream.unget(data) + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + if data in ("p", "P"): + matched = True + for expected in (("u", "U"), ("b", "B"), ("l", "L"), + ("i", "I"), ("c", "C")): + data = self.stream.char() + if data not in expected: + matched = False + break + if matched: + self.state = self.afterDoctypePublicKeywordState + return True + elif data in ("s", "S"): + matched = True + for expected in (("y", "Y"), ("s", "S"), ("t", "T"), + ("e", "E"), ("m", "M")): + data = self.stream.char() + if data not in expected: + matched = False + break + if matched: + self.state = self.afterDoctypeSystemKeywordState + return True + + # All the characters read before the current 'data' will be + # [a-zA-Z], so they're garbage in the bogus doctype and can be + # discarded; only the latest character might be '>' or EOF + # and needs to be ungetted + self.stream.unget(data) + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "expected-space-or-right-bracket-in-doctype", "datavars": + {"data": data}}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + + return True + + def afterDoctypePublicKeywordState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypePublicIdentifierState + elif data in ("'", '"'): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypePublicIdentifierState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.stream.unget(data) + self.state = self.beforeDoctypePublicIdentifierState + return True + + def beforeDoctypePublicIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == "\"": + self.currentToken["publicId"] = "" + self.state = self.doctypePublicIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["publicId"] = "" + self.state = self.doctypePublicIdentifierSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def doctypePublicIdentifierDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterDoctypePublicIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["publicId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["publicId"] += data + return True + + def doctypePublicIdentifierSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterDoctypePublicIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["publicId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["publicId"] += data + return True + + def afterDoctypePublicIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.betweenDoctypePublicAndSystemIdentifiersState + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == '"': + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def betweenDoctypePublicAndSystemIdentifiersState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data == '"': + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data == EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def afterDoctypeSystemKeywordState(self): + data = self.stream.char() + if data in spaceCharacters: + self.state = self.beforeDoctypeSystemIdentifierState + elif data in ("'", '"'): + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.stream.unget(data) + self.state = self.beforeDoctypeSystemIdentifierState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.stream.unget(data) + self.state = self.beforeDoctypeSystemIdentifierState + return True + + def beforeDoctypeSystemIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == "\"": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierDoubleQuotedState + elif data == "'": + self.currentToken["systemId"] = "" + self.state = self.doctypeSystemIdentifierSingleQuotedState + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.currentToken["correct"] = False + self.state = self.bogusDoctypeState + return True + + def doctypeSystemIdentifierDoubleQuotedState(self): + data = self.stream.char() + if data == "\"": + self.state = self.afterDoctypeSystemIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["systemId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["systemId"] += data + return True + + def doctypeSystemIdentifierSingleQuotedState(self): + data = self.stream.char() + if data == "'": + self.state = self.afterDoctypeSystemIdentifierState + elif data == "\u0000": + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + self.currentToken["systemId"] += "\uFFFD" + elif data == ">": + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-end-of-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.currentToken["systemId"] += data + return True + + def afterDoctypeSystemIdentifierState(self): + data = self.stream.char() + if data in spaceCharacters: + pass + elif data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "eof-in-doctype"}) + self.currentToken["correct"] = False + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": + "unexpected-char-in-doctype"}) + self.state = self.bogusDoctypeState + return True + + def bogusDoctypeState(self): + data = self.stream.char() + if data == ">": + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + elif data is EOF: + # XXX EMIT + self.stream.unget(data) + self.tokenQueue.append(self.currentToken) + self.state = self.dataState + else: + pass + return True + + def cdataSectionState(self): + data = [] + while True: + data.append(self.stream.charsUntil("]")) + data.append(self.stream.charsUntil(">")) + char = self.stream.char() + if char == EOF: + break + else: + assert char == ">" + if data[-1][-2:] == "]]": + data[-1] = data[-1][:-2] + break + else: + data.append(char) + + data = "".join(data) # pylint:disable=redefined-variable-type + # Deal with null here rather than in the parser + nullCount = data.count("\u0000") + if nullCount > 0: + for _ in range(nullCount): + self.tokenQueue.append({"type": tokenTypes["ParseError"], + "data": "invalid-codepoint"}) + data = data.replace("\u0000", "\uFFFD") + if data: + self.tokenQueue.append({"type": tokenTypes["Characters"], + "data": data}) + self.state = self.dataState + return True diff --git a/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py b/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py new file mode 100644 index 0000000..a5ba4bf --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py @@ -0,0 +1,14 @@ +from __future__ import absolute_import, division, unicode_literals + +from .py import Trie as PyTrie + +Trie = PyTrie + +# pylint:disable=wrong-import-position +try: + from .datrie import Trie as DATrie +except ImportError: + pass +else: + Trie = DATrie +# pylint:enable=wrong-import-position diff --git a/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py b/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py new file mode 100644 index 0000000..6b71975 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py @@ -0,0 +1,40 @@ +from __future__ import absolute_import, division, unicode_literals + +try: + from collections.abc import Mapping +except ImportError: # Python 2.7 + from collections import Mapping + + +class Trie(Mapping): + """Abstract base class for tries""" + + def keys(self, prefix=None): + # pylint:disable=arguments-differ + keys = super(Trie, self).keys() + + if prefix is None: + return set(keys) + + return {x for x in keys if x.startswith(prefix)} + + def has_keys_with_prefix(self, prefix): + for key in self.keys(): + if key.startswith(prefix): + return True + + return False + + def longest_prefix(self, prefix): + if prefix in self: + return prefix + + for i in range(1, len(prefix) + 1): + if prefix[:-i] in self: + return prefix[:-i] + + raise KeyError(prefix) + + def longest_prefix_item(self, prefix): + lprefix = self.longest_prefix(prefix) + return (lprefix, self[lprefix]) diff --git a/Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py b/Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py new file mode 100644 index 0000000..e2e5f86 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/_trie/datrie.py @@ -0,0 +1,44 @@ +from __future__ import absolute_import, division, unicode_literals + +from datrie import Trie as DATrie +from pip._vendor.six import text_type + +from ._base import Trie as ABCTrie + + +class Trie(ABCTrie): + def __init__(self, data): + chars = set() + for key in data.keys(): + if not isinstance(key, text_type): + raise TypeError("All keys must be strings") + for char in key: + chars.add(char) + + self._data = DATrie("".join(chars)) + for key, value in data.items(): + self._data[key] = value + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + raise NotImplementedError() + + def __getitem__(self, key): + return self._data[key] + + def keys(self, prefix=None): + return self._data.keys(prefix) + + def has_keys_with_prefix(self, prefix): + return self._data.has_keys_with_prefix(prefix) + + def longest_prefix(self, prefix): + return self._data.longest_prefix(prefix) + + def longest_prefix_item(self, prefix): + return self._data.longest_prefix_item(prefix) diff --git a/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py b/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py new file mode 100644 index 0000000..c178b21 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py @@ -0,0 +1,67 @@ +from __future__ import absolute_import, division, unicode_literals +from pip._vendor.six import text_type + +from bisect import bisect_left + +from ._base import Trie as ABCTrie + + +class Trie(ABCTrie): + def __init__(self, data): + if not all(isinstance(x, text_type) for x in data.keys()): + raise TypeError("All keys must be strings") + + self._data = data + self._keys = sorted(data.keys()) + self._cachestr = "" + self._cachepoints = (0, len(data)) + + def __contains__(self, key): + return key in self._data + + def __len__(self): + return len(self._data) + + def __iter__(self): + return iter(self._data) + + def __getitem__(self, key): + return self._data[key] + + def keys(self, prefix=None): + if prefix is None or prefix == "" or not self._keys: + return set(self._keys) + + if prefix.startswith(self._cachestr): + lo, hi = self._cachepoints + start = i = bisect_left(self._keys, prefix, lo, hi) + else: + start = i = bisect_left(self._keys, prefix) + + keys = set() + if start == len(self._keys): + return keys + + while self._keys[i].startswith(prefix): + keys.add(self._keys[i]) + i += 1 + + self._cachestr = prefix + self._cachepoints = (start, i) + + return keys + + def has_keys_with_prefix(self, prefix): + if prefix in self._data: + return True + + if prefix.startswith(self._cachestr): + lo, hi = self._cachepoints + i = bisect_left(self._keys, prefix, lo, hi) + else: + i = bisect_left(self._keys, prefix) + + if i == len(self._keys): + return False + + return self._keys[i].startswith(prefix) diff --git a/Lib/site-packages/pip/_vendor/html5lib/_utils.py b/Lib/site-packages/pip/_vendor/html5lib/_utils.py new file mode 100644 index 0000000..0703afb --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/_utils.py @@ -0,0 +1,124 @@ +from __future__ import absolute_import, division, unicode_literals + +from types import ModuleType + +from pip._vendor.six import text_type + +try: + import xml.etree.cElementTree as default_etree +except ImportError: + import xml.etree.ElementTree as default_etree + + +__all__ = ["default_etree", "MethodDispatcher", "isSurrogatePair", + "surrogatePairToCodepoint", "moduleFactoryFactory", + "supports_lone_surrogates"] + + +# Platforms not supporting lone surrogates (\uD800-\uDFFF) should be +# caught by the below test. In general this would be any platform +# using UTF-16 as its encoding of unicode strings, such as +# Jython. This is because UTF-16 itself is based on the use of such +# surrogates, and there is no mechanism to further escape such +# escapes. +try: + _x = eval('"\\uD800"') # pylint:disable=eval-used + if not isinstance(_x, text_type): + # We need this with u"" because of http://bugs.jython.org/issue2039 + _x = eval('u"\\uD800"') # pylint:disable=eval-used + assert isinstance(_x, text_type) +except: # pylint:disable=bare-except + supports_lone_surrogates = False +else: + supports_lone_surrogates = True + + +class MethodDispatcher(dict): + """Dict with 2 special properties: + + On initiation, keys that are lists, sets or tuples are converted to + multiple keys so accessing any one of the items in the original + list-like object returns the matching value + + md = MethodDispatcher({("foo", "bar"):"baz"}) + md["foo"] == "baz" + + A default value which can be set through the default attribute. + """ + + def __init__(self, items=()): + # Using _dictEntries instead of directly assigning to self is about + # twice as fast. Please do careful performance testing before changing + # anything here. + _dictEntries = [] + for name, value in items: + if isinstance(name, (list, tuple, frozenset, set)): + for item in name: + _dictEntries.append((item, value)) + else: + _dictEntries.append((name, value)) + dict.__init__(self, _dictEntries) + assert len(self) == len(_dictEntries) + self.default = None + + def __getitem__(self, key): + return dict.get(self, key, self.default) + + +# Some utility functions to deal with weirdness around UCS2 vs UCS4 +# python builds + +def isSurrogatePair(data): + return (len(data) == 2 and + ord(data[0]) >= 0xD800 and ord(data[0]) <= 0xDBFF and + ord(data[1]) >= 0xDC00 and ord(data[1]) <= 0xDFFF) + + +def surrogatePairToCodepoint(data): + char_val = (0x10000 + (ord(data[0]) - 0xD800) * 0x400 + + (ord(data[1]) - 0xDC00)) + return char_val + +# Module Factory Factory (no, this isn't Java, I know) +# Here to stop this being duplicated all over the place. + + +def moduleFactoryFactory(factory): + moduleCache = {} + + def moduleFactory(baseModule, *args, **kwargs): + if isinstance(ModuleType.__name__, type("")): + name = "_%s_factory" % baseModule.__name__ + else: + name = b"_%s_factory" % baseModule.__name__ + + kwargs_tuple = tuple(kwargs.items()) + + try: + return moduleCache[name][args][kwargs_tuple] + except KeyError: + mod = ModuleType(name) + objs = factory(baseModule, *args, **kwargs) + mod.__dict__.update(objs) + if "name" not in moduleCache: + moduleCache[name] = {} + if "args" not in moduleCache[name]: + moduleCache[name][args] = {} + if "kwargs" not in moduleCache[name][args]: + moduleCache[name][args][kwargs_tuple] = {} + moduleCache[name][args][kwargs_tuple] = mod + return mod + + return moduleFactory + + +def memoize(func): + cache = {} + + def wrapped(*args, **kwargs): + key = (tuple(args), tuple(kwargs.items())) + if key not in cache: + cache[key] = func(*args, **kwargs) + return cache[key] + + return wrapped diff --git a/Lib/site-packages/pip/_vendor/html5lib/constants.py b/Lib/site-packages/pip/_vendor/html5lib/constants.py new file mode 100644 index 0000000..1ff8041 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/constants.py @@ -0,0 +1,2947 @@ +from __future__ import absolute_import, division, unicode_literals + +import string + +EOF = None + +E = { + "null-character": + "Null character in input stream, replaced with U+FFFD.", + "invalid-codepoint": + "Invalid codepoint in stream.", + "incorrectly-placed-solidus": + "Solidus (/) incorrectly placed in tag.", + "incorrect-cr-newline-entity": + "Incorrect CR newline entity, replaced with LF.", + "illegal-windows-1252-entity": + "Entity used with illegal number (windows-1252 reference).", + "cant-convert-numeric-entity": + "Numeric entity couldn't be converted to character " + "(codepoint U+%(charAsInt)08x).", + "illegal-codepoint-for-numeric-entity": + "Numeric entity represents an illegal codepoint: " + "U+%(charAsInt)08x.", + "numeric-entity-without-semicolon": + "Numeric entity didn't end with ';'.", + "expected-numeric-entity-but-got-eof": + "Numeric entity expected. Got end of file instead.", + "expected-numeric-entity": + "Numeric entity expected but none found.", + "named-entity-without-semicolon": + "Named entity didn't end with ';'.", + "expected-named-entity": + "Named entity expected. Got none.", + "attributes-in-end-tag": + "End tag contains unexpected attributes.", + 'self-closing-flag-on-end-tag': + "End tag contains unexpected self-closing flag.", + "expected-tag-name-but-got-right-bracket": + "Expected tag name. Got '>' instead.", + "expected-tag-name-but-got-question-mark": + "Expected tag name. Got '?' instead. (HTML doesn't " + "support processing instructions.)", + "expected-tag-name": + "Expected tag name. Got something else instead", + "expected-closing-tag-but-got-right-bracket": + "Expected closing tag. Got '>' instead. Ignoring ''.", + "expected-closing-tag-but-got-eof": + "Expected closing tag. Unexpected end of file.", + "expected-closing-tag-but-got-char": + "Expected closing tag. Unexpected character '%(data)s' found.", + "eof-in-tag-name": + "Unexpected end of file in the tag name.", + "expected-attribute-name-but-got-eof": + "Unexpected end of file. Expected attribute name instead.", + "eof-in-attribute-name": + "Unexpected end of file in attribute name.", + "invalid-character-in-attribute-name": + "Invalid character in attribute name", + "duplicate-attribute": + "Dropped duplicate attribute on tag.", + "expected-end-of-tag-name-but-got-eof": + "Unexpected end of file. Expected = or end of tag.", + "expected-attribute-value-but-got-eof": + "Unexpected end of file. Expected attribute value.", + "expected-attribute-value-but-got-right-bracket": + "Expected attribute value. Got '>' instead.", + 'equals-in-unquoted-attribute-value': + "Unexpected = in unquoted attribute", + 'unexpected-character-in-unquoted-attribute-value': + "Unexpected character in unquoted attribute", + "invalid-character-after-attribute-name": + "Unexpected character after attribute name.", + "unexpected-character-after-attribute-value": + "Unexpected character after attribute value.", + "eof-in-attribute-value-double-quote": + "Unexpected end of file in attribute value (\").", + "eof-in-attribute-value-single-quote": + "Unexpected end of file in attribute value (').", + "eof-in-attribute-value-no-quotes": + "Unexpected end of file in attribute value.", + "unexpected-EOF-after-solidus-in-tag": + "Unexpected end of file in tag. Expected >", + "unexpected-character-after-solidus-in-tag": + "Unexpected character after / in tag. Expected >", + "expected-dashes-or-doctype": + "Expected '--' or 'DOCTYPE'. Not found.", + "unexpected-bang-after-double-dash-in-comment": + "Unexpected ! after -- in comment", + "unexpected-space-after-double-dash-in-comment": + "Unexpected space after -- in comment", + "incorrect-comment": + "Incorrect comment.", + "eof-in-comment": + "Unexpected end of file in comment.", + "eof-in-comment-end-dash": + "Unexpected end of file in comment (-)", + "unexpected-dash-after-double-dash-in-comment": + "Unexpected '-' after '--' found in comment.", + "eof-in-comment-double-dash": + "Unexpected end of file in comment (--).", + "eof-in-comment-end-space-state": + "Unexpected end of file in comment.", + "eof-in-comment-end-bang-state": + "Unexpected end of file in comment.", + "unexpected-char-in-comment": + "Unexpected character in comment found.", + "need-space-after-doctype": + "No space after literal string 'DOCTYPE'.", + "expected-doctype-name-but-got-right-bracket": + "Unexpected > character. Expected DOCTYPE name.", + "expected-doctype-name-but-got-eof": + "Unexpected end of file. Expected DOCTYPE name.", + "eof-in-doctype-name": + "Unexpected end of file in DOCTYPE name.", + "eof-in-doctype": + "Unexpected end of file in DOCTYPE.", + "expected-space-or-right-bracket-in-doctype": + "Expected space or '>'. Got '%(data)s'", + "unexpected-end-of-doctype": + "Unexpected end of DOCTYPE.", + "unexpected-char-in-doctype": + "Unexpected character in DOCTYPE.", + "eof-in-innerhtml": + "XXX innerHTML EOF", + "unexpected-doctype": + "Unexpected DOCTYPE. Ignored.", + "non-html-root": + "html needs to be the first start tag.", + "expected-doctype-but-got-eof": + "Unexpected End of file. Expected DOCTYPE.", + "unknown-doctype": + "Erroneous DOCTYPE.", + "expected-doctype-but-got-chars": + "Unexpected non-space characters. Expected DOCTYPE.", + "expected-doctype-but-got-start-tag": + "Unexpected start tag (%(name)s). Expected DOCTYPE.", + "expected-doctype-but-got-end-tag": + "Unexpected end tag (%(name)s). Expected DOCTYPE.", + "end-tag-after-implied-root": + "Unexpected end tag (%(name)s) after the (implied) root element.", + "expected-named-closing-tag-but-got-eof": + "Unexpected end of file. Expected end tag (%(name)s).", + "two-heads-are-not-better-than-one": + "Unexpected start tag head in existing head. Ignored.", + "unexpected-end-tag": + "Unexpected end tag (%(name)s). Ignored.", + "unexpected-start-tag-out-of-my-head": + "Unexpected start tag (%(name)s) that can be in head. Moved.", + "unexpected-start-tag": + "Unexpected start tag (%(name)s).", + "missing-end-tag": + "Missing end tag (%(name)s).", + "missing-end-tags": + "Missing end tags (%(name)s).", + "unexpected-start-tag-implies-end-tag": + "Unexpected start tag (%(startName)s) " + "implies end tag (%(endName)s).", + "unexpected-start-tag-treated-as": + "Unexpected start tag (%(originalName)s). Treated as %(newName)s.", + "deprecated-tag": + "Unexpected start tag %(name)s. Don't use it!", + "unexpected-start-tag-ignored": + "Unexpected start tag %(name)s. Ignored.", + "expected-one-end-tag-but-got-another": + "Unexpected end tag (%(gotName)s). " + "Missing end tag (%(expectedName)s).", + "end-tag-too-early": + "End tag (%(name)s) seen too early. Expected other end tag.", + "end-tag-too-early-named": + "Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s).", + "end-tag-too-early-ignored": + "End tag (%(name)s) seen too early. Ignored.", + "adoption-agency-1.1": + "End tag (%(name)s) violates step 1, " + "paragraph 1 of the adoption agency algorithm.", + "adoption-agency-1.2": + "End tag (%(name)s) violates step 1, " + "paragraph 2 of the adoption agency algorithm.", + "adoption-agency-1.3": + "End tag (%(name)s) violates step 1, " + "paragraph 3 of the adoption agency algorithm.", + "adoption-agency-4.4": + "End tag (%(name)s) violates step 4, " + "paragraph 4 of the adoption agency algorithm.", + "unexpected-end-tag-treated-as": + "Unexpected end tag (%(originalName)s). Treated as %(newName)s.", + "no-end-tag": + "This element (%(name)s) has no end tag.", + "unexpected-implied-end-tag-in-table": + "Unexpected implied end tag (%(name)s) in the table phase.", + "unexpected-implied-end-tag-in-table-body": + "Unexpected implied end tag (%(name)s) in the table body phase.", + "unexpected-char-implies-table-voodoo": + "Unexpected non-space characters in " + "table context caused voodoo mode.", + "unexpected-hidden-input-in-table": + "Unexpected input with type hidden in table context.", + "unexpected-form-in-table": + "Unexpected form in table context.", + "unexpected-start-tag-implies-table-voodoo": + "Unexpected start tag (%(name)s) in " + "table context caused voodoo mode.", + "unexpected-end-tag-implies-table-voodoo": + "Unexpected end tag (%(name)s) in " + "table context caused voodoo mode.", + "unexpected-cell-in-table-body": + "Unexpected table cell start tag (%(name)s) " + "in the table body phase.", + "unexpected-cell-end-tag": + "Got table cell end tag (%(name)s) " + "while required end tags are missing.", + "unexpected-end-tag-in-table-body": + "Unexpected end tag (%(name)s) in the table body phase. Ignored.", + "unexpected-implied-end-tag-in-table-row": + "Unexpected implied end tag (%(name)s) in the table row phase.", + "unexpected-end-tag-in-table-row": + "Unexpected end tag (%(name)s) in the table row phase. Ignored.", + "unexpected-select-in-select": + "Unexpected select start tag in the select phase " + "treated as select end tag.", + "unexpected-input-in-select": + "Unexpected input start tag in the select phase.", + "unexpected-start-tag-in-select": + "Unexpected start tag token (%(name)s in the select phase. " + "Ignored.", + "unexpected-end-tag-in-select": + "Unexpected end tag (%(name)s) in the select phase. Ignored.", + "unexpected-table-element-start-tag-in-select-in-table": + "Unexpected table element start tag (%(name)s) in the select in table phase.", + "unexpected-table-element-end-tag-in-select-in-table": + "Unexpected table element end tag (%(name)s) in the select in table phase.", + "unexpected-char-after-body": + "Unexpected non-space characters in the after body phase.", + "unexpected-start-tag-after-body": + "Unexpected start tag token (%(name)s)" + " in the after body phase.", + "unexpected-end-tag-after-body": + "Unexpected end tag token (%(name)s)" + " in the after body phase.", + "unexpected-char-in-frameset": + "Unexpected characters in the frameset phase. Characters ignored.", + "unexpected-start-tag-in-frameset": + "Unexpected start tag token (%(name)s)" + " in the frameset phase. Ignored.", + "unexpected-frameset-in-frameset-innerhtml": + "Unexpected end tag token (frameset) " + "in the frameset phase (innerHTML).", + "unexpected-end-tag-in-frameset": + "Unexpected end tag token (%(name)s)" + " in the frameset phase. Ignored.", + "unexpected-char-after-frameset": + "Unexpected non-space characters in the " + "after frameset phase. Ignored.", + "unexpected-start-tag-after-frameset": + "Unexpected start tag (%(name)s)" + " in the after frameset phase. Ignored.", + "unexpected-end-tag-after-frameset": + "Unexpected end tag (%(name)s)" + " in the after frameset phase. Ignored.", + "unexpected-end-tag-after-body-innerhtml": + "Unexpected end tag after body(innerHtml)", + "expected-eof-but-got-char": + "Unexpected non-space characters. Expected end of file.", + "expected-eof-but-got-start-tag": + "Unexpected start tag (%(name)s)" + ". Expected end of file.", + "expected-eof-but-got-end-tag": + "Unexpected end tag (%(name)s)" + ". Expected end of file.", + "eof-in-table": + "Unexpected end of file. Expected table content.", + "eof-in-select": + "Unexpected end of file. Expected select content.", + "eof-in-frameset": + "Unexpected end of file. Expected frameset content.", + "eof-in-script-in-script": + "Unexpected end of file. Expected script content.", + "eof-in-foreign-lands": + "Unexpected end of file. Expected foreign content", + "non-void-element-with-trailing-solidus": + "Trailing solidus not allowed on element %(name)s", + "unexpected-html-element-in-foreign-content": + "Element %(name)s not allowed in a non-html context", + "unexpected-end-tag-before-html": + "Unexpected end tag (%(name)s) before html.", + "unexpected-inhead-noscript-tag": + "Element %(name)s not allowed in a inhead-noscript context", + "eof-in-head-noscript": + "Unexpected end of file. Expected inhead-noscript content", + "char-in-head-noscript": + "Unexpected non-space character. Expected inhead-noscript content", + "XXX-undefined-error": + "Undefined error (this sucks and should be fixed)", +} + +namespaces = { + "html": "http://www.w3.org/1999/xhtml", + "mathml": "http://www.w3.org/1998/Math/MathML", + "svg": "http://www.w3.org/2000/svg", + "xlink": "http://www.w3.org/1999/xlink", + "xml": "http://www.w3.org/XML/1998/namespace", + "xmlns": "http://www.w3.org/2000/xmlns/" +} + +scopingElements = frozenset([ + (namespaces["html"], "applet"), + (namespaces["html"], "caption"), + (namespaces["html"], "html"), + (namespaces["html"], "marquee"), + (namespaces["html"], "object"), + (namespaces["html"], "table"), + (namespaces["html"], "td"), + (namespaces["html"], "th"), + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext"), + (namespaces["mathml"], "annotation-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title"), +]) + +formattingElements = frozenset([ + (namespaces["html"], "a"), + (namespaces["html"], "b"), + (namespaces["html"], "big"), + (namespaces["html"], "code"), + (namespaces["html"], "em"), + (namespaces["html"], "font"), + (namespaces["html"], "i"), + (namespaces["html"], "nobr"), + (namespaces["html"], "s"), + (namespaces["html"], "small"), + (namespaces["html"], "strike"), + (namespaces["html"], "strong"), + (namespaces["html"], "tt"), + (namespaces["html"], "u") +]) + +specialElements = frozenset([ + (namespaces["html"], "address"), + (namespaces["html"], "applet"), + (namespaces["html"], "area"), + (namespaces["html"], "article"), + (namespaces["html"], "aside"), + (namespaces["html"], "base"), + (namespaces["html"], "basefont"), + (namespaces["html"], "bgsound"), + (namespaces["html"], "blockquote"), + (namespaces["html"], "body"), + (namespaces["html"], "br"), + (namespaces["html"], "button"), + (namespaces["html"], "caption"), + (namespaces["html"], "center"), + (namespaces["html"], "col"), + (namespaces["html"], "colgroup"), + (namespaces["html"], "command"), + (namespaces["html"], "dd"), + (namespaces["html"], "details"), + (namespaces["html"], "dir"), + (namespaces["html"], "div"), + (namespaces["html"], "dl"), + (namespaces["html"], "dt"), + (namespaces["html"], "embed"), + (namespaces["html"], "fieldset"), + (namespaces["html"], "figure"), + (namespaces["html"], "footer"), + (namespaces["html"], "form"), + (namespaces["html"], "frame"), + (namespaces["html"], "frameset"), + (namespaces["html"], "h1"), + (namespaces["html"], "h2"), + (namespaces["html"], "h3"), + (namespaces["html"], "h4"), + (namespaces["html"], "h5"), + (namespaces["html"], "h6"), + (namespaces["html"], "head"), + (namespaces["html"], "header"), + (namespaces["html"], "hr"), + (namespaces["html"], "html"), + (namespaces["html"], "iframe"), + # Note that image is commented out in the spec as "this isn't an + # element that can end up on the stack, so it doesn't matter," + (namespaces["html"], "image"), + (namespaces["html"], "img"), + (namespaces["html"], "input"), + (namespaces["html"], "isindex"), + (namespaces["html"], "li"), + (namespaces["html"], "link"), + (namespaces["html"], "listing"), + (namespaces["html"], "marquee"), + (namespaces["html"], "menu"), + (namespaces["html"], "meta"), + (namespaces["html"], "nav"), + (namespaces["html"], "noembed"), + (namespaces["html"], "noframes"), + (namespaces["html"], "noscript"), + (namespaces["html"], "object"), + (namespaces["html"], "ol"), + (namespaces["html"], "p"), + (namespaces["html"], "param"), + (namespaces["html"], "plaintext"), + (namespaces["html"], "pre"), + (namespaces["html"], "script"), + (namespaces["html"], "section"), + (namespaces["html"], "select"), + (namespaces["html"], "style"), + (namespaces["html"], "table"), + (namespaces["html"], "tbody"), + (namespaces["html"], "td"), + (namespaces["html"], "textarea"), + (namespaces["html"], "tfoot"), + (namespaces["html"], "th"), + (namespaces["html"], "thead"), + (namespaces["html"], "title"), + (namespaces["html"], "tr"), + (namespaces["html"], "ul"), + (namespaces["html"], "wbr"), + (namespaces["html"], "xmp"), + (namespaces["svg"], "foreignObject") +]) + +htmlIntegrationPointElements = frozenset([ + (namespaces["mathml"], "annotation-xml"), + (namespaces["svg"], "foreignObject"), + (namespaces["svg"], "desc"), + (namespaces["svg"], "title") +]) + +mathmlTextIntegrationPointElements = frozenset([ + (namespaces["mathml"], "mi"), + (namespaces["mathml"], "mo"), + (namespaces["mathml"], "mn"), + (namespaces["mathml"], "ms"), + (namespaces["mathml"], "mtext") +]) + +adjustSVGAttributes = { + "attributename": "attributeName", + "attributetype": "attributeType", + "basefrequency": "baseFrequency", + "baseprofile": "baseProfile", + "calcmode": "calcMode", + "clippathunits": "clipPathUnits", + "contentscripttype": "contentScriptType", + "contentstyletype": "contentStyleType", + "diffuseconstant": "diffuseConstant", + "edgemode": "edgeMode", + "externalresourcesrequired": "externalResourcesRequired", + "filterres": "filterRes", + "filterunits": "filterUnits", + "glyphref": "glyphRef", + "gradienttransform": "gradientTransform", + "gradientunits": "gradientUnits", + "kernelmatrix": "kernelMatrix", + "kernelunitlength": "kernelUnitLength", + "keypoints": "keyPoints", + "keysplines": "keySplines", + "keytimes": "keyTimes", + "lengthadjust": "lengthAdjust", + "limitingconeangle": "limitingConeAngle", + "markerheight": "markerHeight", + "markerunits": "markerUnits", + "markerwidth": "markerWidth", + "maskcontentunits": "maskContentUnits", + "maskunits": "maskUnits", + "numoctaves": "numOctaves", + "pathlength": "pathLength", + "patterncontentunits": "patternContentUnits", + "patterntransform": "patternTransform", + "patternunits": "patternUnits", + "pointsatx": "pointsAtX", + "pointsaty": "pointsAtY", + "pointsatz": "pointsAtZ", + "preservealpha": "preserveAlpha", + "preserveaspectratio": "preserveAspectRatio", + "primitiveunits": "primitiveUnits", + "refx": "refX", + "refy": "refY", + "repeatcount": "repeatCount", + "repeatdur": "repeatDur", + "requiredextensions": "requiredExtensions", + "requiredfeatures": "requiredFeatures", + "specularconstant": "specularConstant", + "specularexponent": "specularExponent", + "spreadmethod": "spreadMethod", + "startoffset": "startOffset", + "stddeviation": "stdDeviation", + "stitchtiles": "stitchTiles", + "surfacescale": "surfaceScale", + "systemlanguage": "systemLanguage", + "tablevalues": "tableValues", + "targetx": "targetX", + "targety": "targetY", + "textlength": "textLength", + "viewbox": "viewBox", + "viewtarget": "viewTarget", + "xchannelselector": "xChannelSelector", + "ychannelselector": "yChannelSelector", + "zoomandpan": "zoomAndPan" +} + +adjustMathMLAttributes = {"definitionurl": "definitionURL"} + +adjustForeignAttributes = { + "xlink:actuate": ("xlink", "actuate", namespaces["xlink"]), + "xlink:arcrole": ("xlink", "arcrole", namespaces["xlink"]), + "xlink:href": ("xlink", "href", namespaces["xlink"]), + "xlink:role": ("xlink", "role", namespaces["xlink"]), + "xlink:show": ("xlink", "show", namespaces["xlink"]), + "xlink:title": ("xlink", "title", namespaces["xlink"]), + "xlink:type": ("xlink", "type", namespaces["xlink"]), + "xml:base": ("xml", "base", namespaces["xml"]), + "xml:lang": ("xml", "lang", namespaces["xml"]), + "xml:space": ("xml", "space", namespaces["xml"]), + "xmlns": (None, "xmlns", namespaces["xmlns"]), + "xmlns:xlink": ("xmlns", "xlink", namespaces["xmlns"]) +} + +unadjustForeignAttributes = dict([((ns, local), qname) for qname, (prefix, local, ns) in + adjustForeignAttributes.items()]) + +spaceCharacters = frozenset([ + "\t", + "\n", + "\u000C", + " ", + "\r" +]) + +tableInsertModeElements = frozenset([ + "table", + "tbody", + "tfoot", + "thead", + "tr" +]) + +asciiLowercase = frozenset(string.ascii_lowercase) +asciiUppercase = frozenset(string.ascii_uppercase) +asciiLetters = frozenset(string.ascii_letters) +digits = frozenset(string.digits) +hexDigits = frozenset(string.hexdigits) + +asciiUpper2Lower = dict([(ord(c), ord(c.lower())) + for c in string.ascii_uppercase]) + +# Heading elements need to be ordered +headingElements = ( + "h1", + "h2", + "h3", + "h4", + "h5", + "h6" +) + +voidElements = frozenset([ + "base", + "command", + "event-source", + "link", + "meta", + "hr", + "br", + "img", + "embed", + "param", + "area", + "col", + "input", + "source", + "track" +]) + +cdataElements = frozenset(['title', 'textarea']) + +rcdataElements = frozenset([ + 'style', + 'script', + 'xmp', + 'iframe', + 'noembed', + 'noframes', + 'noscript' +]) + +booleanAttributes = { + "": frozenset(["irrelevant", "itemscope"]), + "style": frozenset(["scoped"]), + "img": frozenset(["ismap"]), + "audio": frozenset(["autoplay", "controls"]), + "video": frozenset(["autoplay", "controls"]), + "script": frozenset(["defer", "async"]), + "details": frozenset(["open"]), + "datagrid": frozenset(["multiple", "disabled"]), + "command": frozenset(["hidden", "disabled", "checked", "default"]), + "hr": frozenset(["noshade"]), + "menu": frozenset(["autosubmit"]), + "fieldset": frozenset(["disabled", "readonly"]), + "option": frozenset(["disabled", "readonly", "selected"]), + "optgroup": frozenset(["disabled", "readonly"]), + "button": frozenset(["disabled", "autofocus"]), + "input": frozenset(["disabled", "readonly", "required", "autofocus", "checked", "ismap"]), + "select": frozenset(["disabled", "readonly", "autofocus", "multiple"]), + "output": frozenset(["disabled", "readonly"]), + "iframe": frozenset(["seamless"]), +} + +# entitiesWindows1252 has to be _ordered_ and needs to have an index. It +# therefore can't be a frozenset. +entitiesWindows1252 = ( + 8364, # 0x80 0x20AC EURO SIGN + 65533, # 0x81 UNDEFINED + 8218, # 0x82 0x201A SINGLE LOW-9 QUOTATION MARK + 402, # 0x83 0x0192 LATIN SMALL LETTER F WITH HOOK + 8222, # 0x84 0x201E DOUBLE LOW-9 QUOTATION MARK + 8230, # 0x85 0x2026 HORIZONTAL ELLIPSIS + 8224, # 0x86 0x2020 DAGGER + 8225, # 0x87 0x2021 DOUBLE DAGGER + 710, # 0x88 0x02C6 MODIFIER LETTER CIRCUMFLEX ACCENT + 8240, # 0x89 0x2030 PER MILLE SIGN + 352, # 0x8A 0x0160 LATIN CAPITAL LETTER S WITH CARON + 8249, # 0x8B 0x2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK + 338, # 0x8C 0x0152 LATIN CAPITAL LIGATURE OE + 65533, # 0x8D UNDEFINED + 381, # 0x8E 0x017D LATIN CAPITAL LETTER Z WITH CARON + 65533, # 0x8F UNDEFINED + 65533, # 0x90 UNDEFINED + 8216, # 0x91 0x2018 LEFT SINGLE QUOTATION MARK + 8217, # 0x92 0x2019 RIGHT SINGLE QUOTATION MARK + 8220, # 0x93 0x201C LEFT DOUBLE QUOTATION MARK + 8221, # 0x94 0x201D RIGHT DOUBLE QUOTATION MARK + 8226, # 0x95 0x2022 BULLET + 8211, # 0x96 0x2013 EN DASH + 8212, # 0x97 0x2014 EM DASH + 732, # 0x98 0x02DC SMALL TILDE + 8482, # 0x99 0x2122 TRADE MARK SIGN + 353, # 0x9A 0x0161 LATIN SMALL LETTER S WITH CARON + 8250, # 0x9B 0x203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + 339, # 0x9C 0x0153 LATIN SMALL LIGATURE OE + 65533, # 0x9D UNDEFINED + 382, # 0x9E 0x017E LATIN SMALL LETTER Z WITH CARON + 376 # 0x9F 0x0178 LATIN CAPITAL LETTER Y WITH DIAERESIS +) + +xmlEntities = frozenset(['lt;', 'gt;', 'amp;', 'apos;', 'quot;']) + +entities = { + "AElig": "\xc6", + "AElig;": "\xc6", + "AMP": "&", + "AMP;": "&", + "Aacute": "\xc1", + "Aacute;": "\xc1", + "Abreve;": "\u0102", + "Acirc": "\xc2", + "Acirc;": "\xc2", + "Acy;": "\u0410", + "Afr;": "\U0001d504", + "Agrave": "\xc0", + "Agrave;": "\xc0", + "Alpha;": "\u0391", + "Amacr;": "\u0100", + "And;": "\u2a53", + "Aogon;": "\u0104", + "Aopf;": "\U0001d538", + "ApplyFunction;": "\u2061", + "Aring": "\xc5", + "Aring;": "\xc5", + "Ascr;": "\U0001d49c", + "Assign;": "\u2254", + "Atilde": "\xc3", + "Atilde;": "\xc3", + "Auml": "\xc4", + "Auml;": "\xc4", + "Backslash;": "\u2216", + "Barv;": "\u2ae7", + "Barwed;": "\u2306", + "Bcy;": "\u0411", + "Because;": "\u2235", + "Bernoullis;": "\u212c", + "Beta;": "\u0392", + "Bfr;": "\U0001d505", + "Bopf;": "\U0001d539", + "Breve;": "\u02d8", + "Bscr;": "\u212c", + "Bumpeq;": "\u224e", + "CHcy;": "\u0427", + "COPY": "\xa9", + "COPY;": "\xa9", + "Cacute;": "\u0106", + "Cap;": "\u22d2", + "CapitalDifferentialD;": "\u2145", + "Cayleys;": "\u212d", + "Ccaron;": "\u010c", + "Ccedil": "\xc7", + "Ccedil;": "\xc7", + "Ccirc;": "\u0108", + "Cconint;": "\u2230", + "Cdot;": "\u010a", + "Cedilla;": "\xb8", + "CenterDot;": "\xb7", + "Cfr;": "\u212d", + "Chi;": "\u03a7", + "CircleDot;": "\u2299", + "CircleMinus;": "\u2296", + "CirclePlus;": "\u2295", + "CircleTimes;": "\u2297", + "ClockwiseContourIntegral;": "\u2232", + "CloseCurlyDoubleQuote;": "\u201d", + "CloseCurlyQuote;": "\u2019", + "Colon;": "\u2237", + "Colone;": "\u2a74", + "Congruent;": "\u2261", + "Conint;": "\u222f", + "ContourIntegral;": "\u222e", + "Copf;": "\u2102", + "Coproduct;": "\u2210", + "CounterClockwiseContourIntegral;": "\u2233", + "Cross;": "\u2a2f", + "Cscr;": "\U0001d49e", + "Cup;": "\u22d3", + "CupCap;": "\u224d", + "DD;": "\u2145", + "DDotrahd;": "\u2911", + "DJcy;": "\u0402", + "DScy;": "\u0405", + "DZcy;": "\u040f", + "Dagger;": "\u2021", + "Darr;": "\u21a1", + "Dashv;": "\u2ae4", + "Dcaron;": "\u010e", + "Dcy;": "\u0414", + "Del;": "\u2207", + "Delta;": "\u0394", + "Dfr;": "\U0001d507", + "DiacriticalAcute;": "\xb4", + "DiacriticalDot;": "\u02d9", + "DiacriticalDoubleAcute;": "\u02dd", + "DiacriticalGrave;": "`", + "DiacriticalTilde;": "\u02dc", + "Diamond;": "\u22c4", + "DifferentialD;": "\u2146", + "Dopf;": "\U0001d53b", + "Dot;": "\xa8", + "DotDot;": "\u20dc", + "DotEqual;": "\u2250", + "DoubleContourIntegral;": "\u222f", + "DoubleDot;": "\xa8", + "DoubleDownArrow;": "\u21d3", + "DoubleLeftArrow;": "\u21d0", + "DoubleLeftRightArrow;": "\u21d4", + "DoubleLeftTee;": "\u2ae4", + "DoubleLongLeftArrow;": "\u27f8", + "DoubleLongLeftRightArrow;": "\u27fa", + "DoubleLongRightArrow;": "\u27f9", + "DoubleRightArrow;": "\u21d2", + "DoubleRightTee;": "\u22a8", + "DoubleUpArrow;": "\u21d1", + "DoubleUpDownArrow;": "\u21d5", + "DoubleVerticalBar;": "\u2225", + "DownArrow;": "\u2193", + "DownArrowBar;": "\u2913", + "DownArrowUpArrow;": "\u21f5", + "DownBreve;": "\u0311", + "DownLeftRightVector;": "\u2950", + "DownLeftTeeVector;": "\u295e", + "DownLeftVector;": "\u21bd", + "DownLeftVectorBar;": "\u2956", + "DownRightTeeVector;": "\u295f", + "DownRightVector;": "\u21c1", + "DownRightVectorBar;": "\u2957", + "DownTee;": "\u22a4", + "DownTeeArrow;": "\u21a7", + "Downarrow;": "\u21d3", + "Dscr;": "\U0001d49f", + "Dstrok;": "\u0110", + "ENG;": "\u014a", + "ETH": "\xd0", + "ETH;": "\xd0", + "Eacute": "\xc9", + "Eacute;": "\xc9", + "Ecaron;": "\u011a", + "Ecirc": "\xca", + "Ecirc;": "\xca", + "Ecy;": "\u042d", + "Edot;": "\u0116", + "Efr;": "\U0001d508", + "Egrave": "\xc8", + "Egrave;": "\xc8", + "Element;": "\u2208", + "Emacr;": "\u0112", + "EmptySmallSquare;": "\u25fb", + "EmptyVerySmallSquare;": "\u25ab", + "Eogon;": "\u0118", + "Eopf;": "\U0001d53c", + "Epsilon;": "\u0395", + "Equal;": "\u2a75", + "EqualTilde;": "\u2242", + "Equilibrium;": "\u21cc", + "Escr;": "\u2130", + "Esim;": "\u2a73", + "Eta;": "\u0397", + "Euml": "\xcb", + "Euml;": "\xcb", + "Exists;": "\u2203", + "ExponentialE;": "\u2147", + "Fcy;": "\u0424", + "Ffr;": "\U0001d509", + "FilledSmallSquare;": "\u25fc", + "FilledVerySmallSquare;": "\u25aa", + "Fopf;": "\U0001d53d", + "ForAll;": "\u2200", + "Fouriertrf;": "\u2131", + "Fscr;": "\u2131", + "GJcy;": "\u0403", + "GT": ">", + "GT;": ">", + "Gamma;": "\u0393", + "Gammad;": "\u03dc", + "Gbreve;": "\u011e", + "Gcedil;": "\u0122", + "Gcirc;": "\u011c", + "Gcy;": "\u0413", + "Gdot;": "\u0120", + "Gfr;": "\U0001d50a", + "Gg;": "\u22d9", + "Gopf;": "\U0001d53e", + "GreaterEqual;": "\u2265", + "GreaterEqualLess;": "\u22db", + "GreaterFullEqual;": "\u2267", + "GreaterGreater;": "\u2aa2", + "GreaterLess;": "\u2277", + "GreaterSlantEqual;": "\u2a7e", + "GreaterTilde;": "\u2273", + "Gscr;": "\U0001d4a2", + "Gt;": "\u226b", + "HARDcy;": "\u042a", + "Hacek;": "\u02c7", + "Hat;": "^", + "Hcirc;": "\u0124", + "Hfr;": "\u210c", + "HilbertSpace;": "\u210b", + "Hopf;": "\u210d", + "HorizontalLine;": "\u2500", + "Hscr;": "\u210b", + "Hstrok;": "\u0126", + "HumpDownHump;": "\u224e", + "HumpEqual;": "\u224f", + "IEcy;": "\u0415", + "IJlig;": "\u0132", + "IOcy;": "\u0401", + "Iacute": "\xcd", + "Iacute;": "\xcd", + "Icirc": "\xce", + "Icirc;": "\xce", + "Icy;": "\u0418", + "Idot;": "\u0130", + "Ifr;": "\u2111", + "Igrave": "\xcc", + "Igrave;": "\xcc", + "Im;": "\u2111", + "Imacr;": "\u012a", + "ImaginaryI;": "\u2148", + "Implies;": "\u21d2", + "Int;": "\u222c", + "Integral;": "\u222b", + "Intersection;": "\u22c2", + "InvisibleComma;": "\u2063", + "InvisibleTimes;": "\u2062", + "Iogon;": "\u012e", + "Iopf;": "\U0001d540", + "Iota;": "\u0399", + "Iscr;": "\u2110", + "Itilde;": "\u0128", + "Iukcy;": "\u0406", + "Iuml": "\xcf", + "Iuml;": "\xcf", + "Jcirc;": "\u0134", + "Jcy;": "\u0419", + "Jfr;": "\U0001d50d", + "Jopf;": "\U0001d541", + "Jscr;": "\U0001d4a5", + "Jsercy;": "\u0408", + "Jukcy;": "\u0404", + "KHcy;": "\u0425", + "KJcy;": "\u040c", + "Kappa;": "\u039a", + "Kcedil;": "\u0136", + "Kcy;": "\u041a", + "Kfr;": "\U0001d50e", + "Kopf;": "\U0001d542", + "Kscr;": "\U0001d4a6", + "LJcy;": "\u0409", + "LT": "<", + "LT;": "<", + "Lacute;": "\u0139", + "Lambda;": "\u039b", + "Lang;": "\u27ea", + "Laplacetrf;": "\u2112", + "Larr;": "\u219e", + "Lcaron;": "\u013d", + "Lcedil;": "\u013b", + "Lcy;": "\u041b", + "LeftAngleBracket;": "\u27e8", + "LeftArrow;": "\u2190", + "LeftArrowBar;": "\u21e4", + "LeftArrowRightArrow;": "\u21c6", + "LeftCeiling;": "\u2308", + "LeftDoubleBracket;": "\u27e6", + "LeftDownTeeVector;": "\u2961", + "LeftDownVector;": "\u21c3", + "LeftDownVectorBar;": "\u2959", + "LeftFloor;": "\u230a", + "LeftRightArrow;": "\u2194", + "LeftRightVector;": "\u294e", + "LeftTee;": "\u22a3", + "LeftTeeArrow;": "\u21a4", + "LeftTeeVector;": "\u295a", + "LeftTriangle;": "\u22b2", + "LeftTriangleBar;": "\u29cf", + "LeftTriangleEqual;": "\u22b4", + "LeftUpDownVector;": "\u2951", + "LeftUpTeeVector;": "\u2960", + "LeftUpVector;": "\u21bf", + "LeftUpVectorBar;": "\u2958", + "LeftVector;": "\u21bc", + "LeftVectorBar;": "\u2952", + "Leftarrow;": "\u21d0", + "Leftrightarrow;": "\u21d4", + "LessEqualGreater;": "\u22da", + "LessFullEqual;": "\u2266", + "LessGreater;": "\u2276", + "LessLess;": "\u2aa1", + "LessSlantEqual;": "\u2a7d", + "LessTilde;": "\u2272", + "Lfr;": "\U0001d50f", + "Ll;": "\u22d8", + "Lleftarrow;": "\u21da", + "Lmidot;": "\u013f", + "LongLeftArrow;": "\u27f5", + "LongLeftRightArrow;": "\u27f7", + "LongRightArrow;": "\u27f6", + "Longleftarrow;": "\u27f8", + "Longleftrightarrow;": "\u27fa", + "Longrightarrow;": "\u27f9", + "Lopf;": "\U0001d543", + "LowerLeftArrow;": "\u2199", + "LowerRightArrow;": "\u2198", + "Lscr;": "\u2112", + "Lsh;": "\u21b0", + "Lstrok;": "\u0141", + "Lt;": "\u226a", + "Map;": "\u2905", + "Mcy;": "\u041c", + "MediumSpace;": "\u205f", + "Mellintrf;": "\u2133", + "Mfr;": "\U0001d510", + "MinusPlus;": "\u2213", + "Mopf;": "\U0001d544", + "Mscr;": "\u2133", + "Mu;": "\u039c", + "NJcy;": "\u040a", + "Nacute;": "\u0143", + "Ncaron;": "\u0147", + "Ncedil;": "\u0145", + "Ncy;": "\u041d", + "NegativeMediumSpace;": "\u200b", + "NegativeThickSpace;": "\u200b", + "NegativeThinSpace;": "\u200b", + "NegativeVeryThinSpace;": "\u200b", + "NestedGreaterGreater;": "\u226b", + "NestedLessLess;": "\u226a", + "NewLine;": "\n", + "Nfr;": "\U0001d511", + "NoBreak;": "\u2060", + "NonBreakingSpace;": "\xa0", + "Nopf;": "\u2115", + "Not;": "\u2aec", + "NotCongruent;": "\u2262", + "NotCupCap;": "\u226d", + "NotDoubleVerticalBar;": "\u2226", + "NotElement;": "\u2209", + "NotEqual;": "\u2260", + "NotEqualTilde;": "\u2242\u0338", + "NotExists;": "\u2204", + "NotGreater;": "\u226f", + "NotGreaterEqual;": "\u2271", + "NotGreaterFullEqual;": "\u2267\u0338", + "NotGreaterGreater;": "\u226b\u0338", + "NotGreaterLess;": "\u2279", + "NotGreaterSlantEqual;": "\u2a7e\u0338", + "NotGreaterTilde;": "\u2275", + "NotHumpDownHump;": "\u224e\u0338", + "NotHumpEqual;": "\u224f\u0338", + "NotLeftTriangle;": "\u22ea", + "NotLeftTriangleBar;": "\u29cf\u0338", + "NotLeftTriangleEqual;": "\u22ec", + "NotLess;": "\u226e", + "NotLessEqual;": "\u2270", + "NotLessGreater;": "\u2278", + "NotLessLess;": "\u226a\u0338", + "NotLessSlantEqual;": "\u2a7d\u0338", + "NotLessTilde;": "\u2274", + "NotNestedGreaterGreater;": "\u2aa2\u0338", + "NotNestedLessLess;": "\u2aa1\u0338", + "NotPrecedes;": "\u2280", + "NotPrecedesEqual;": "\u2aaf\u0338", + "NotPrecedesSlantEqual;": "\u22e0", + "NotReverseElement;": "\u220c", + "NotRightTriangle;": "\u22eb", + "NotRightTriangleBar;": "\u29d0\u0338", + "NotRightTriangleEqual;": "\u22ed", + "NotSquareSubset;": "\u228f\u0338", + "NotSquareSubsetEqual;": "\u22e2", + "NotSquareSuperset;": "\u2290\u0338", + "NotSquareSupersetEqual;": "\u22e3", + "NotSubset;": "\u2282\u20d2", + "NotSubsetEqual;": "\u2288", + "NotSucceeds;": "\u2281", + "NotSucceedsEqual;": "\u2ab0\u0338", + "NotSucceedsSlantEqual;": "\u22e1", + "NotSucceedsTilde;": "\u227f\u0338", + "NotSuperset;": "\u2283\u20d2", + "NotSupersetEqual;": "\u2289", + "NotTilde;": "\u2241", + "NotTildeEqual;": "\u2244", + "NotTildeFullEqual;": "\u2247", + "NotTildeTilde;": "\u2249", + "NotVerticalBar;": "\u2224", + "Nscr;": "\U0001d4a9", + "Ntilde": "\xd1", + "Ntilde;": "\xd1", + "Nu;": "\u039d", + "OElig;": "\u0152", + "Oacute": "\xd3", + "Oacute;": "\xd3", + "Ocirc": "\xd4", + "Ocirc;": "\xd4", + "Ocy;": "\u041e", + "Odblac;": "\u0150", + "Ofr;": "\U0001d512", + "Ograve": "\xd2", + "Ograve;": "\xd2", + "Omacr;": "\u014c", + "Omega;": "\u03a9", + "Omicron;": "\u039f", + "Oopf;": "\U0001d546", + "OpenCurlyDoubleQuote;": "\u201c", + "OpenCurlyQuote;": "\u2018", + "Or;": "\u2a54", + "Oscr;": "\U0001d4aa", + "Oslash": "\xd8", + "Oslash;": "\xd8", + "Otilde": "\xd5", + "Otilde;": "\xd5", + "Otimes;": "\u2a37", + "Ouml": "\xd6", + "Ouml;": "\xd6", + "OverBar;": "\u203e", + "OverBrace;": "\u23de", + "OverBracket;": "\u23b4", + "OverParenthesis;": "\u23dc", + "PartialD;": "\u2202", + "Pcy;": "\u041f", + "Pfr;": "\U0001d513", + "Phi;": "\u03a6", + "Pi;": "\u03a0", + "PlusMinus;": "\xb1", + "Poincareplane;": "\u210c", + "Popf;": "\u2119", + "Pr;": "\u2abb", + "Precedes;": "\u227a", + "PrecedesEqual;": "\u2aaf", + "PrecedesSlantEqual;": "\u227c", + "PrecedesTilde;": "\u227e", + "Prime;": "\u2033", + "Product;": "\u220f", + "Proportion;": "\u2237", + "Proportional;": "\u221d", + "Pscr;": "\U0001d4ab", + "Psi;": "\u03a8", + "QUOT": "\"", + "QUOT;": "\"", + "Qfr;": "\U0001d514", + "Qopf;": "\u211a", + "Qscr;": "\U0001d4ac", + "RBarr;": "\u2910", + "REG": "\xae", + "REG;": "\xae", + "Racute;": "\u0154", + "Rang;": "\u27eb", + "Rarr;": "\u21a0", + "Rarrtl;": "\u2916", + "Rcaron;": "\u0158", + "Rcedil;": "\u0156", + "Rcy;": "\u0420", + "Re;": "\u211c", + "ReverseElement;": "\u220b", + "ReverseEquilibrium;": "\u21cb", + "ReverseUpEquilibrium;": "\u296f", + "Rfr;": "\u211c", + "Rho;": "\u03a1", + "RightAngleBracket;": "\u27e9", + "RightArrow;": "\u2192", + "RightArrowBar;": "\u21e5", + "RightArrowLeftArrow;": "\u21c4", + "RightCeiling;": "\u2309", + "RightDoubleBracket;": "\u27e7", + "RightDownTeeVector;": "\u295d", + "RightDownVector;": "\u21c2", + "RightDownVectorBar;": "\u2955", + "RightFloor;": "\u230b", + "RightTee;": "\u22a2", + "RightTeeArrow;": "\u21a6", + "RightTeeVector;": "\u295b", + "RightTriangle;": "\u22b3", + "RightTriangleBar;": "\u29d0", + "RightTriangleEqual;": "\u22b5", + "RightUpDownVector;": "\u294f", + "RightUpTeeVector;": "\u295c", + "RightUpVector;": "\u21be", + "RightUpVectorBar;": "\u2954", + "RightVector;": "\u21c0", + "RightVectorBar;": "\u2953", + "Rightarrow;": "\u21d2", + "Ropf;": "\u211d", + "RoundImplies;": "\u2970", + "Rrightarrow;": "\u21db", + "Rscr;": "\u211b", + "Rsh;": "\u21b1", + "RuleDelayed;": "\u29f4", + "SHCHcy;": "\u0429", + "SHcy;": "\u0428", + "SOFTcy;": "\u042c", + "Sacute;": "\u015a", + "Sc;": "\u2abc", + "Scaron;": "\u0160", + "Scedil;": "\u015e", + "Scirc;": "\u015c", + "Scy;": "\u0421", + "Sfr;": "\U0001d516", + "ShortDownArrow;": "\u2193", + "ShortLeftArrow;": "\u2190", + "ShortRightArrow;": "\u2192", + "ShortUpArrow;": "\u2191", + "Sigma;": "\u03a3", + "SmallCircle;": "\u2218", + "Sopf;": "\U0001d54a", + "Sqrt;": "\u221a", + "Square;": "\u25a1", + "SquareIntersection;": "\u2293", + "SquareSubset;": "\u228f", + "SquareSubsetEqual;": "\u2291", + "SquareSuperset;": "\u2290", + "SquareSupersetEqual;": "\u2292", + "SquareUnion;": "\u2294", + "Sscr;": "\U0001d4ae", + "Star;": "\u22c6", + "Sub;": "\u22d0", + "Subset;": "\u22d0", + "SubsetEqual;": "\u2286", + "Succeeds;": "\u227b", + "SucceedsEqual;": "\u2ab0", + "SucceedsSlantEqual;": "\u227d", + "SucceedsTilde;": "\u227f", + "SuchThat;": "\u220b", + "Sum;": "\u2211", + "Sup;": "\u22d1", + "Superset;": "\u2283", + "SupersetEqual;": "\u2287", + "Supset;": "\u22d1", + "THORN": "\xde", + "THORN;": "\xde", + "TRADE;": "\u2122", + "TSHcy;": "\u040b", + "TScy;": "\u0426", + "Tab;": "\t", + "Tau;": "\u03a4", + "Tcaron;": "\u0164", + "Tcedil;": "\u0162", + "Tcy;": "\u0422", + "Tfr;": "\U0001d517", + "Therefore;": "\u2234", + "Theta;": "\u0398", + "ThickSpace;": "\u205f\u200a", + "ThinSpace;": "\u2009", + "Tilde;": "\u223c", + "TildeEqual;": "\u2243", + "TildeFullEqual;": "\u2245", + "TildeTilde;": "\u2248", + "Topf;": "\U0001d54b", + "TripleDot;": "\u20db", + "Tscr;": "\U0001d4af", + "Tstrok;": "\u0166", + "Uacute": "\xda", + "Uacute;": "\xda", + "Uarr;": "\u219f", + "Uarrocir;": "\u2949", + "Ubrcy;": "\u040e", + "Ubreve;": "\u016c", + "Ucirc": "\xdb", + "Ucirc;": "\xdb", + "Ucy;": "\u0423", + "Udblac;": "\u0170", + "Ufr;": "\U0001d518", + "Ugrave": "\xd9", + "Ugrave;": "\xd9", + "Umacr;": "\u016a", + "UnderBar;": "_", + "UnderBrace;": "\u23df", + "UnderBracket;": "\u23b5", + "UnderParenthesis;": "\u23dd", + "Union;": "\u22c3", + "UnionPlus;": "\u228e", + "Uogon;": "\u0172", + "Uopf;": "\U0001d54c", + "UpArrow;": "\u2191", + "UpArrowBar;": "\u2912", + "UpArrowDownArrow;": "\u21c5", + "UpDownArrow;": "\u2195", + "UpEquilibrium;": "\u296e", + "UpTee;": "\u22a5", + "UpTeeArrow;": "\u21a5", + "Uparrow;": "\u21d1", + "Updownarrow;": "\u21d5", + "UpperLeftArrow;": "\u2196", + "UpperRightArrow;": "\u2197", + "Upsi;": "\u03d2", + "Upsilon;": "\u03a5", + "Uring;": "\u016e", + "Uscr;": "\U0001d4b0", + "Utilde;": "\u0168", + "Uuml": "\xdc", + "Uuml;": "\xdc", + "VDash;": "\u22ab", + "Vbar;": "\u2aeb", + "Vcy;": "\u0412", + "Vdash;": "\u22a9", + "Vdashl;": "\u2ae6", + "Vee;": "\u22c1", + "Verbar;": "\u2016", + "Vert;": "\u2016", + "VerticalBar;": "\u2223", + "VerticalLine;": "|", + "VerticalSeparator;": "\u2758", + "VerticalTilde;": "\u2240", + "VeryThinSpace;": "\u200a", + "Vfr;": "\U0001d519", + "Vopf;": "\U0001d54d", + "Vscr;": "\U0001d4b1", + "Vvdash;": "\u22aa", + "Wcirc;": "\u0174", + "Wedge;": "\u22c0", + "Wfr;": "\U0001d51a", + "Wopf;": "\U0001d54e", + "Wscr;": "\U0001d4b2", + "Xfr;": "\U0001d51b", + "Xi;": "\u039e", + "Xopf;": "\U0001d54f", + "Xscr;": "\U0001d4b3", + "YAcy;": "\u042f", + "YIcy;": "\u0407", + "YUcy;": "\u042e", + "Yacute": "\xdd", + "Yacute;": "\xdd", + "Ycirc;": "\u0176", + "Ycy;": "\u042b", + "Yfr;": "\U0001d51c", + "Yopf;": "\U0001d550", + "Yscr;": "\U0001d4b4", + "Yuml;": "\u0178", + "ZHcy;": "\u0416", + "Zacute;": "\u0179", + "Zcaron;": "\u017d", + "Zcy;": "\u0417", + "Zdot;": "\u017b", + "ZeroWidthSpace;": "\u200b", + "Zeta;": "\u0396", + "Zfr;": "\u2128", + "Zopf;": "\u2124", + "Zscr;": "\U0001d4b5", + "aacute": "\xe1", + "aacute;": "\xe1", + "abreve;": "\u0103", + "ac;": "\u223e", + "acE;": "\u223e\u0333", + "acd;": "\u223f", + "acirc": "\xe2", + "acirc;": "\xe2", + "acute": "\xb4", + "acute;": "\xb4", + "acy;": "\u0430", + "aelig": "\xe6", + "aelig;": "\xe6", + "af;": "\u2061", + "afr;": "\U0001d51e", + "agrave": "\xe0", + "agrave;": "\xe0", + "alefsym;": "\u2135", + "aleph;": "\u2135", + "alpha;": "\u03b1", + "amacr;": "\u0101", + "amalg;": "\u2a3f", + "amp": "&", + "amp;": "&", + "and;": "\u2227", + "andand;": "\u2a55", + "andd;": "\u2a5c", + "andslope;": "\u2a58", + "andv;": "\u2a5a", + "ang;": "\u2220", + "ange;": "\u29a4", + "angle;": "\u2220", + "angmsd;": "\u2221", + "angmsdaa;": "\u29a8", + "angmsdab;": "\u29a9", + "angmsdac;": "\u29aa", + "angmsdad;": "\u29ab", + "angmsdae;": "\u29ac", + "angmsdaf;": "\u29ad", + "angmsdag;": "\u29ae", + "angmsdah;": "\u29af", + "angrt;": "\u221f", + "angrtvb;": "\u22be", + "angrtvbd;": "\u299d", + "angsph;": "\u2222", + "angst;": "\xc5", + "angzarr;": "\u237c", + "aogon;": "\u0105", + "aopf;": "\U0001d552", + "ap;": "\u2248", + "apE;": "\u2a70", + "apacir;": "\u2a6f", + "ape;": "\u224a", + "apid;": "\u224b", + "apos;": "'", + "approx;": "\u2248", + "approxeq;": "\u224a", + "aring": "\xe5", + "aring;": "\xe5", + "ascr;": "\U0001d4b6", + "ast;": "*", + "asymp;": "\u2248", + "asympeq;": "\u224d", + "atilde": "\xe3", + "atilde;": "\xe3", + "auml": "\xe4", + "auml;": "\xe4", + "awconint;": "\u2233", + "awint;": "\u2a11", + "bNot;": "\u2aed", + "backcong;": "\u224c", + "backepsilon;": "\u03f6", + "backprime;": "\u2035", + "backsim;": "\u223d", + "backsimeq;": "\u22cd", + "barvee;": "\u22bd", + "barwed;": "\u2305", + "barwedge;": "\u2305", + "bbrk;": "\u23b5", + "bbrktbrk;": "\u23b6", + "bcong;": "\u224c", + "bcy;": "\u0431", + "bdquo;": "\u201e", + "becaus;": "\u2235", + "because;": "\u2235", + "bemptyv;": "\u29b0", + "bepsi;": "\u03f6", + "bernou;": "\u212c", + "beta;": "\u03b2", + "beth;": "\u2136", + "between;": "\u226c", + "bfr;": "\U0001d51f", + "bigcap;": "\u22c2", + "bigcirc;": "\u25ef", + "bigcup;": "\u22c3", + "bigodot;": "\u2a00", + "bigoplus;": "\u2a01", + "bigotimes;": "\u2a02", + "bigsqcup;": "\u2a06", + "bigstar;": "\u2605", + "bigtriangledown;": "\u25bd", + "bigtriangleup;": "\u25b3", + "biguplus;": "\u2a04", + "bigvee;": "\u22c1", + "bigwedge;": "\u22c0", + "bkarow;": "\u290d", + "blacklozenge;": "\u29eb", + "blacksquare;": "\u25aa", + "blacktriangle;": "\u25b4", + "blacktriangledown;": "\u25be", + "blacktriangleleft;": "\u25c2", + "blacktriangleright;": "\u25b8", + "blank;": "\u2423", + "blk12;": "\u2592", + "blk14;": "\u2591", + "blk34;": "\u2593", + "block;": "\u2588", + "bne;": "=\u20e5", + "bnequiv;": "\u2261\u20e5", + "bnot;": "\u2310", + "bopf;": "\U0001d553", + "bot;": "\u22a5", + "bottom;": "\u22a5", + "bowtie;": "\u22c8", + "boxDL;": "\u2557", + "boxDR;": "\u2554", + "boxDl;": "\u2556", + "boxDr;": "\u2553", + "boxH;": "\u2550", + "boxHD;": "\u2566", + "boxHU;": "\u2569", + "boxHd;": "\u2564", + "boxHu;": "\u2567", + "boxUL;": "\u255d", + "boxUR;": "\u255a", + "boxUl;": "\u255c", + "boxUr;": "\u2559", + "boxV;": "\u2551", + "boxVH;": "\u256c", + "boxVL;": "\u2563", + "boxVR;": "\u2560", + "boxVh;": "\u256b", + "boxVl;": "\u2562", + "boxVr;": "\u255f", + "boxbox;": "\u29c9", + "boxdL;": "\u2555", + "boxdR;": "\u2552", + "boxdl;": "\u2510", + "boxdr;": "\u250c", + "boxh;": "\u2500", + "boxhD;": "\u2565", + "boxhU;": "\u2568", + "boxhd;": "\u252c", + "boxhu;": "\u2534", + "boxminus;": "\u229f", + "boxplus;": "\u229e", + "boxtimes;": "\u22a0", + "boxuL;": "\u255b", + "boxuR;": "\u2558", + "boxul;": "\u2518", + "boxur;": "\u2514", + "boxv;": "\u2502", + "boxvH;": "\u256a", + "boxvL;": "\u2561", + "boxvR;": "\u255e", + "boxvh;": "\u253c", + "boxvl;": "\u2524", + "boxvr;": "\u251c", + "bprime;": "\u2035", + "breve;": "\u02d8", + "brvbar": "\xa6", + "brvbar;": "\xa6", + "bscr;": "\U0001d4b7", + "bsemi;": "\u204f", + "bsim;": "\u223d", + "bsime;": "\u22cd", + "bsol;": "\\", + "bsolb;": "\u29c5", + "bsolhsub;": "\u27c8", + "bull;": "\u2022", + "bullet;": "\u2022", + "bump;": "\u224e", + "bumpE;": "\u2aae", + "bumpe;": "\u224f", + "bumpeq;": "\u224f", + "cacute;": "\u0107", + "cap;": "\u2229", + "capand;": "\u2a44", + "capbrcup;": "\u2a49", + "capcap;": "\u2a4b", + "capcup;": "\u2a47", + "capdot;": "\u2a40", + "caps;": "\u2229\ufe00", + "caret;": "\u2041", + "caron;": "\u02c7", + "ccaps;": "\u2a4d", + "ccaron;": "\u010d", + "ccedil": "\xe7", + "ccedil;": "\xe7", + "ccirc;": "\u0109", + "ccups;": "\u2a4c", + "ccupssm;": "\u2a50", + "cdot;": "\u010b", + "cedil": "\xb8", + "cedil;": "\xb8", + "cemptyv;": "\u29b2", + "cent": "\xa2", + "cent;": "\xa2", + "centerdot;": "\xb7", + "cfr;": "\U0001d520", + "chcy;": "\u0447", + "check;": "\u2713", + "checkmark;": "\u2713", + "chi;": "\u03c7", + "cir;": "\u25cb", + "cirE;": "\u29c3", + "circ;": "\u02c6", + "circeq;": "\u2257", + "circlearrowleft;": "\u21ba", + "circlearrowright;": "\u21bb", + "circledR;": "\xae", + "circledS;": "\u24c8", + "circledast;": "\u229b", + "circledcirc;": "\u229a", + "circleddash;": "\u229d", + "cire;": "\u2257", + "cirfnint;": "\u2a10", + "cirmid;": "\u2aef", + "cirscir;": "\u29c2", + "clubs;": "\u2663", + "clubsuit;": "\u2663", + "colon;": ":", + "colone;": "\u2254", + "coloneq;": "\u2254", + "comma;": ",", + "commat;": "@", + "comp;": "\u2201", + "compfn;": "\u2218", + "complement;": "\u2201", + "complexes;": "\u2102", + "cong;": "\u2245", + "congdot;": "\u2a6d", + "conint;": "\u222e", + "copf;": "\U0001d554", + "coprod;": "\u2210", + "copy": "\xa9", + "copy;": "\xa9", + "copysr;": "\u2117", + "crarr;": "\u21b5", + "cross;": "\u2717", + "cscr;": "\U0001d4b8", + "csub;": "\u2acf", + "csube;": "\u2ad1", + "csup;": "\u2ad0", + "csupe;": "\u2ad2", + "ctdot;": "\u22ef", + "cudarrl;": "\u2938", + "cudarrr;": "\u2935", + "cuepr;": "\u22de", + "cuesc;": "\u22df", + "cularr;": "\u21b6", + "cularrp;": "\u293d", + "cup;": "\u222a", + "cupbrcap;": "\u2a48", + "cupcap;": "\u2a46", + "cupcup;": "\u2a4a", + "cupdot;": "\u228d", + "cupor;": "\u2a45", + "cups;": "\u222a\ufe00", + "curarr;": "\u21b7", + "curarrm;": "\u293c", + "curlyeqprec;": "\u22de", + "curlyeqsucc;": "\u22df", + "curlyvee;": "\u22ce", + "curlywedge;": "\u22cf", + "curren": "\xa4", + "curren;": "\xa4", + "curvearrowleft;": "\u21b6", + "curvearrowright;": "\u21b7", + "cuvee;": "\u22ce", + "cuwed;": "\u22cf", + "cwconint;": "\u2232", + "cwint;": "\u2231", + "cylcty;": "\u232d", + "dArr;": "\u21d3", + "dHar;": "\u2965", + "dagger;": "\u2020", + "daleth;": "\u2138", + "darr;": "\u2193", + "dash;": "\u2010", + "dashv;": "\u22a3", + "dbkarow;": "\u290f", + "dblac;": "\u02dd", + "dcaron;": "\u010f", + "dcy;": "\u0434", + "dd;": "\u2146", + "ddagger;": "\u2021", + "ddarr;": "\u21ca", + "ddotseq;": "\u2a77", + "deg": "\xb0", + "deg;": "\xb0", + "delta;": "\u03b4", + "demptyv;": "\u29b1", + "dfisht;": "\u297f", + "dfr;": "\U0001d521", + "dharl;": "\u21c3", + "dharr;": "\u21c2", + "diam;": "\u22c4", + "diamond;": "\u22c4", + "diamondsuit;": "\u2666", + "diams;": "\u2666", + "die;": "\xa8", + "digamma;": "\u03dd", + "disin;": "\u22f2", + "div;": "\xf7", + "divide": "\xf7", + "divide;": "\xf7", + "divideontimes;": "\u22c7", + "divonx;": "\u22c7", + "djcy;": "\u0452", + "dlcorn;": "\u231e", + "dlcrop;": "\u230d", + "dollar;": "$", + "dopf;": "\U0001d555", + "dot;": "\u02d9", + "doteq;": "\u2250", + "doteqdot;": "\u2251", + "dotminus;": "\u2238", + "dotplus;": "\u2214", + "dotsquare;": "\u22a1", + "doublebarwedge;": "\u2306", + "downarrow;": "\u2193", + "downdownarrows;": "\u21ca", + "downharpoonleft;": "\u21c3", + "downharpoonright;": "\u21c2", + "drbkarow;": "\u2910", + "drcorn;": "\u231f", + "drcrop;": "\u230c", + "dscr;": "\U0001d4b9", + "dscy;": "\u0455", + "dsol;": "\u29f6", + "dstrok;": "\u0111", + "dtdot;": "\u22f1", + "dtri;": "\u25bf", + "dtrif;": "\u25be", + "duarr;": "\u21f5", + "duhar;": "\u296f", + "dwangle;": "\u29a6", + "dzcy;": "\u045f", + "dzigrarr;": "\u27ff", + "eDDot;": "\u2a77", + "eDot;": "\u2251", + "eacute": "\xe9", + "eacute;": "\xe9", + "easter;": "\u2a6e", + "ecaron;": "\u011b", + "ecir;": "\u2256", + "ecirc": "\xea", + "ecirc;": "\xea", + "ecolon;": "\u2255", + "ecy;": "\u044d", + "edot;": "\u0117", + "ee;": "\u2147", + "efDot;": "\u2252", + "efr;": "\U0001d522", + "eg;": "\u2a9a", + "egrave": "\xe8", + "egrave;": "\xe8", + "egs;": "\u2a96", + "egsdot;": "\u2a98", + "el;": "\u2a99", + "elinters;": "\u23e7", + "ell;": "\u2113", + "els;": "\u2a95", + "elsdot;": "\u2a97", + "emacr;": "\u0113", + "empty;": "\u2205", + "emptyset;": "\u2205", + "emptyv;": "\u2205", + "emsp13;": "\u2004", + "emsp14;": "\u2005", + "emsp;": "\u2003", + "eng;": "\u014b", + "ensp;": "\u2002", + "eogon;": "\u0119", + "eopf;": "\U0001d556", + "epar;": "\u22d5", + "eparsl;": "\u29e3", + "eplus;": "\u2a71", + "epsi;": "\u03b5", + "epsilon;": "\u03b5", + "epsiv;": "\u03f5", + "eqcirc;": "\u2256", + "eqcolon;": "\u2255", + "eqsim;": "\u2242", + "eqslantgtr;": "\u2a96", + "eqslantless;": "\u2a95", + "equals;": "=", + "equest;": "\u225f", + "equiv;": "\u2261", + "equivDD;": "\u2a78", + "eqvparsl;": "\u29e5", + "erDot;": "\u2253", + "erarr;": "\u2971", + "escr;": "\u212f", + "esdot;": "\u2250", + "esim;": "\u2242", + "eta;": "\u03b7", + "eth": "\xf0", + "eth;": "\xf0", + "euml": "\xeb", + "euml;": "\xeb", + "euro;": "\u20ac", + "excl;": "!", + "exist;": "\u2203", + "expectation;": "\u2130", + "exponentiale;": "\u2147", + "fallingdotseq;": "\u2252", + "fcy;": "\u0444", + "female;": "\u2640", + "ffilig;": "\ufb03", + "fflig;": "\ufb00", + "ffllig;": "\ufb04", + "ffr;": "\U0001d523", + "filig;": "\ufb01", + "fjlig;": "fj", + "flat;": "\u266d", + "fllig;": "\ufb02", + "fltns;": "\u25b1", + "fnof;": "\u0192", + "fopf;": "\U0001d557", + "forall;": "\u2200", + "fork;": "\u22d4", + "forkv;": "\u2ad9", + "fpartint;": "\u2a0d", + "frac12": "\xbd", + "frac12;": "\xbd", + "frac13;": "\u2153", + "frac14": "\xbc", + "frac14;": "\xbc", + "frac15;": "\u2155", + "frac16;": "\u2159", + "frac18;": "\u215b", + "frac23;": "\u2154", + "frac25;": "\u2156", + "frac34": "\xbe", + "frac34;": "\xbe", + "frac35;": "\u2157", + "frac38;": "\u215c", + "frac45;": "\u2158", + "frac56;": "\u215a", + "frac58;": "\u215d", + "frac78;": "\u215e", + "frasl;": "\u2044", + "frown;": "\u2322", + "fscr;": "\U0001d4bb", + "gE;": "\u2267", + "gEl;": "\u2a8c", + "gacute;": "\u01f5", + "gamma;": "\u03b3", + "gammad;": "\u03dd", + "gap;": "\u2a86", + "gbreve;": "\u011f", + "gcirc;": "\u011d", + "gcy;": "\u0433", + "gdot;": "\u0121", + "ge;": "\u2265", + "gel;": "\u22db", + "geq;": "\u2265", + "geqq;": "\u2267", + "geqslant;": "\u2a7e", + "ges;": "\u2a7e", + "gescc;": "\u2aa9", + "gesdot;": "\u2a80", + "gesdoto;": "\u2a82", + "gesdotol;": "\u2a84", + "gesl;": "\u22db\ufe00", + "gesles;": "\u2a94", + "gfr;": "\U0001d524", + "gg;": "\u226b", + "ggg;": "\u22d9", + "gimel;": "\u2137", + "gjcy;": "\u0453", + "gl;": "\u2277", + "glE;": "\u2a92", + "gla;": "\u2aa5", + "glj;": "\u2aa4", + "gnE;": "\u2269", + "gnap;": "\u2a8a", + "gnapprox;": "\u2a8a", + "gne;": "\u2a88", + "gneq;": "\u2a88", + "gneqq;": "\u2269", + "gnsim;": "\u22e7", + "gopf;": "\U0001d558", + "grave;": "`", + "gscr;": "\u210a", + "gsim;": "\u2273", + "gsime;": "\u2a8e", + "gsiml;": "\u2a90", + "gt": ">", + "gt;": ">", + "gtcc;": "\u2aa7", + "gtcir;": "\u2a7a", + "gtdot;": "\u22d7", + "gtlPar;": "\u2995", + "gtquest;": "\u2a7c", + "gtrapprox;": "\u2a86", + "gtrarr;": "\u2978", + "gtrdot;": "\u22d7", + "gtreqless;": "\u22db", + "gtreqqless;": "\u2a8c", + "gtrless;": "\u2277", + "gtrsim;": "\u2273", + "gvertneqq;": "\u2269\ufe00", + "gvnE;": "\u2269\ufe00", + "hArr;": "\u21d4", + "hairsp;": "\u200a", + "half;": "\xbd", + "hamilt;": "\u210b", + "hardcy;": "\u044a", + "harr;": "\u2194", + "harrcir;": "\u2948", + "harrw;": "\u21ad", + "hbar;": "\u210f", + "hcirc;": "\u0125", + "hearts;": "\u2665", + "heartsuit;": "\u2665", + "hellip;": "\u2026", + "hercon;": "\u22b9", + "hfr;": "\U0001d525", + "hksearow;": "\u2925", + "hkswarow;": "\u2926", + "hoarr;": "\u21ff", + "homtht;": "\u223b", + "hookleftarrow;": "\u21a9", + "hookrightarrow;": "\u21aa", + "hopf;": "\U0001d559", + "horbar;": "\u2015", + "hscr;": "\U0001d4bd", + "hslash;": "\u210f", + "hstrok;": "\u0127", + "hybull;": "\u2043", + "hyphen;": "\u2010", + "iacute": "\xed", + "iacute;": "\xed", + "ic;": "\u2063", + "icirc": "\xee", + "icirc;": "\xee", + "icy;": "\u0438", + "iecy;": "\u0435", + "iexcl": "\xa1", + "iexcl;": "\xa1", + "iff;": "\u21d4", + "ifr;": "\U0001d526", + "igrave": "\xec", + "igrave;": "\xec", + "ii;": "\u2148", + "iiiint;": "\u2a0c", + "iiint;": "\u222d", + "iinfin;": "\u29dc", + "iiota;": "\u2129", + "ijlig;": "\u0133", + "imacr;": "\u012b", + "image;": "\u2111", + "imagline;": "\u2110", + "imagpart;": "\u2111", + "imath;": "\u0131", + "imof;": "\u22b7", + "imped;": "\u01b5", + "in;": "\u2208", + "incare;": "\u2105", + "infin;": "\u221e", + "infintie;": "\u29dd", + "inodot;": "\u0131", + "int;": "\u222b", + "intcal;": "\u22ba", + "integers;": "\u2124", + "intercal;": "\u22ba", + "intlarhk;": "\u2a17", + "intprod;": "\u2a3c", + "iocy;": "\u0451", + "iogon;": "\u012f", + "iopf;": "\U0001d55a", + "iota;": "\u03b9", + "iprod;": "\u2a3c", + "iquest": "\xbf", + "iquest;": "\xbf", + "iscr;": "\U0001d4be", + "isin;": "\u2208", + "isinE;": "\u22f9", + "isindot;": "\u22f5", + "isins;": "\u22f4", + "isinsv;": "\u22f3", + "isinv;": "\u2208", + "it;": "\u2062", + "itilde;": "\u0129", + "iukcy;": "\u0456", + "iuml": "\xef", + "iuml;": "\xef", + "jcirc;": "\u0135", + "jcy;": "\u0439", + "jfr;": "\U0001d527", + "jmath;": "\u0237", + "jopf;": "\U0001d55b", + "jscr;": "\U0001d4bf", + "jsercy;": "\u0458", + "jukcy;": "\u0454", + "kappa;": "\u03ba", + "kappav;": "\u03f0", + "kcedil;": "\u0137", + "kcy;": "\u043a", + "kfr;": "\U0001d528", + "kgreen;": "\u0138", + "khcy;": "\u0445", + "kjcy;": "\u045c", + "kopf;": "\U0001d55c", + "kscr;": "\U0001d4c0", + "lAarr;": "\u21da", + "lArr;": "\u21d0", + "lAtail;": "\u291b", + "lBarr;": "\u290e", + "lE;": "\u2266", + "lEg;": "\u2a8b", + "lHar;": "\u2962", + "lacute;": "\u013a", + "laemptyv;": "\u29b4", + "lagran;": "\u2112", + "lambda;": "\u03bb", + "lang;": "\u27e8", + "langd;": "\u2991", + "langle;": "\u27e8", + "lap;": "\u2a85", + "laquo": "\xab", + "laquo;": "\xab", + "larr;": "\u2190", + "larrb;": "\u21e4", + "larrbfs;": "\u291f", + "larrfs;": "\u291d", + "larrhk;": "\u21a9", + "larrlp;": "\u21ab", + "larrpl;": "\u2939", + "larrsim;": "\u2973", + "larrtl;": "\u21a2", + "lat;": "\u2aab", + "latail;": "\u2919", + "late;": "\u2aad", + "lates;": "\u2aad\ufe00", + "lbarr;": "\u290c", + "lbbrk;": "\u2772", + "lbrace;": "{", + "lbrack;": "[", + "lbrke;": "\u298b", + "lbrksld;": "\u298f", + "lbrkslu;": "\u298d", + "lcaron;": "\u013e", + "lcedil;": "\u013c", + "lceil;": "\u2308", + "lcub;": "{", + "lcy;": "\u043b", + "ldca;": "\u2936", + "ldquo;": "\u201c", + "ldquor;": "\u201e", + "ldrdhar;": "\u2967", + "ldrushar;": "\u294b", + "ldsh;": "\u21b2", + "le;": "\u2264", + "leftarrow;": "\u2190", + "leftarrowtail;": "\u21a2", + "leftharpoondown;": "\u21bd", + "leftharpoonup;": "\u21bc", + "leftleftarrows;": "\u21c7", + "leftrightarrow;": "\u2194", + "leftrightarrows;": "\u21c6", + "leftrightharpoons;": "\u21cb", + "leftrightsquigarrow;": "\u21ad", + "leftthreetimes;": "\u22cb", + "leg;": "\u22da", + "leq;": "\u2264", + "leqq;": "\u2266", + "leqslant;": "\u2a7d", + "les;": "\u2a7d", + "lescc;": "\u2aa8", + "lesdot;": "\u2a7f", + "lesdoto;": "\u2a81", + "lesdotor;": "\u2a83", + "lesg;": "\u22da\ufe00", + "lesges;": "\u2a93", + "lessapprox;": "\u2a85", + "lessdot;": "\u22d6", + "lesseqgtr;": "\u22da", + "lesseqqgtr;": "\u2a8b", + "lessgtr;": "\u2276", + "lesssim;": "\u2272", + "lfisht;": "\u297c", + "lfloor;": "\u230a", + "lfr;": "\U0001d529", + "lg;": "\u2276", + "lgE;": "\u2a91", + "lhard;": "\u21bd", + "lharu;": "\u21bc", + "lharul;": "\u296a", + "lhblk;": "\u2584", + "ljcy;": "\u0459", + "ll;": "\u226a", + "llarr;": "\u21c7", + "llcorner;": "\u231e", + "llhard;": "\u296b", + "lltri;": "\u25fa", + "lmidot;": "\u0140", + "lmoust;": "\u23b0", + "lmoustache;": "\u23b0", + "lnE;": "\u2268", + "lnap;": "\u2a89", + "lnapprox;": "\u2a89", + "lne;": "\u2a87", + "lneq;": "\u2a87", + "lneqq;": "\u2268", + "lnsim;": "\u22e6", + "loang;": "\u27ec", + "loarr;": "\u21fd", + "lobrk;": "\u27e6", + "longleftarrow;": "\u27f5", + "longleftrightarrow;": "\u27f7", + "longmapsto;": "\u27fc", + "longrightarrow;": "\u27f6", + "looparrowleft;": "\u21ab", + "looparrowright;": "\u21ac", + "lopar;": "\u2985", + "lopf;": "\U0001d55d", + "loplus;": "\u2a2d", + "lotimes;": "\u2a34", + "lowast;": "\u2217", + "lowbar;": "_", + "loz;": "\u25ca", + "lozenge;": "\u25ca", + "lozf;": "\u29eb", + "lpar;": "(", + "lparlt;": "\u2993", + "lrarr;": "\u21c6", + "lrcorner;": "\u231f", + "lrhar;": "\u21cb", + "lrhard;": "\u296d", + "lrm;": "\u200e", + "lrtri;": "\u22bf", + "lsaquo;": "\u2039", + "lscr;": "\U0001d4c1", + "lsh;": "\u21b0", + "lsim;": "\u2272", + "lsime;": "\u2a8d", + "lsimg;": "\u2a8f", + "lsqb;": "[", + "lsquo;": "\u2018", + "lsquor;": "\u201a", + "lstrok;": "\u0142", + "lt": "<", + "lt;": "<", + "ltcc;": "\u2aa6", + "ltcir;": "\u2a79", + "ltdot;": "\u22d6", + "lthree;": "\u22cb", + "ltimes;": "\u22c9", + "ltlarr;": "\u2976", + "ltquest;": "\u2a7b", + "ltrPar;": "\u2996", + "ltri;": "\u25c3", + "ltrie;": "\u22b4", + "ltrif;": "\u25c2", + "lurdshar;": "\u294a", + "luruhar;": "\u2966", + "lvertneqq;": "\u2268\ufe00", + "lvnE;": "\u2268\ufe00", + "mDDot;": "\u223a", + "macr": "\xaf", + "macr;": "\xaf", + "male;": "\u2642", + "malt;": "\u2720", + "maltese;": "\u2720", + "map;": "\u21a6", + "mapsto;": "\u21a6", + "mapstodown;": "\u21a7", + "mapstoleft;": "\u21a4", + "mapstoup;": "\u21a5", + "marker;": "\u25ae", + "mcomma;": "\u2a29", + "mcy;": "\u043c", + "mdash;": "\u2014", + "measuredangle;": "\u2221", + "mfr;": "\U0001d52a", + "mho;": "\u2127", + "micro": "\xb5", + "micro;": "\xb5", + "mid;": "\u2223", + "midast;": "*", + "midcir;": "\u2af0", + "middot": "\xb7", + "middot;": "\xb7", + "minus;": "\u2212", + "minusb;": "\u229f", + "minusd;": "\u2238", + "minusdu;": "\u2a2a", + "mlcp;": "\u2adb", + "mldr;": "\u2026", + "mnplus;": "\u2213", + "models;": "\u22a7", + "mopf;": "\U0001d55e", + "mp;": "\u2213", + "mscr;": "\U0001d4c2", + "mstpos;": "\u223e", + "mu;": "\u03bc", + "multimap;": "\u22b8", + "mumap;": "\u22b8", + "nGg;": "\u22d9\u0338", + "nGt;": "\u226b\u20d2", + "nGtv;": "\u226b\u0338", + "nLeftarrow;": "\u21cd", + "nLeftrightarrow;": "\u21ce", + "nLl;": "\u22d8\u0338", + "nLt;": "\u226a\u20d2", + "nLtv;": "\u226a\u0338", + "nRightarrow;": "\u21cf", + "nVDash;": "\u22af", + "nVdash;": "\u22ae", + "nabla;": "\u2207", + "nacute;": "\u0144", + "nang;": "\u2220\u20d2", + "nap;": "\u2249", + "napE;": "\u2a70\u0338", + "napid;": "\u224b\u0338", + "napos;": "\u0149", + "napprox;": "\u2249", + "natur;": "\u266e", + "natural;": "\u266e", + "naturals;": "\u2115", + "nbsp": "\xa0", + "nbsp;": "\xa0", + "nbump;": "\u224e\u0338", + "nbumpe;": "\u224f\u0338", + "ncap;": "\u2a43", + "ncaron;": "\u0148", + "ncedil;": "\u0146", + "ncong;": "\u2247", + "ncongdot;": "\u2a6d\u0338", + "ncup;": "\u2a42", + "ncy;": "\u043d", + "ndash;": "\u2013", + "ne;": "\u2260", + "neArr;": "\u21d7", + "nearhk;": "\u2924", + "nearr;": "\u2197", + "nearrow;": "\u2197", + "nedot;": "\u2250\u0338", + "nequiv;": "\u2262", + "nesear;": "\u2928", + "nesim;": "\u2242\u0338", + "nexist;": "\u2204", + "nexists;": "\u2204", + "nfr;": "\U0001d52b", + "ngE;": "\u2267\u0338", + "nge;": "\u2271", + "ngeq;": "\u2271", + "ngeqq;": "\u2267\u0338", + "ngeqslant;": "\u2a7e\u0338", + "nges;": "\u2a7e\u0338", + "ngsim;": "\u2275", + "ngt;": "\u226f", + "ngtr;": "\u226f", + "nhArr;": "\u21ce", + "nharr;": "\u21ae", + "nhpar;": "\u2af2", + "ni;": "\u220b", + "nis;": "\u22fc", + "nisd;": "\u22fa", + "niv;": "\u220b", + "njcy;": "\u045a", + "nlArr;": "\u21cd", + "nlE;": "\u2266\u0338", + "nlarr;": "\u219a", + "nldr;": "\u2025", + "nle;": "\u2270", + "nleftarrow;": "\u219a", + "nleftrightarrow;": "\u21ae", + "nleq;": "\u2270", + "nleqq;": "\u2266\u0338", + "nleqslant;": "\u2a7d\u0338", + "nles;": "\u2a7d\u0338", + "nless;": "\u226e", + "nlsim;": "\u2274", + "nlt;": "\u226e", + "nltri;": "\u22ea", + "nltrie;": "\u22ec", + "nmid;": "\u2224", + "nopf;": "\U0001d55f", + "not": "\xac", + "not;": "\xac", + "notin;": "\u2209", + "notinE;": "\u22f9\u0338", + "notindot;": "\u22f5\u0338", + "notinva;": "\u2209", + "notinvb;": "\u22f7", + "notinvc;": "\u22f6", + "notni;": "\u220c", + "notniva;": "\u220c", + "notnivb;": "\u22fe", + "notnivc;": "\u22fd", + "npar;": "\u2226", + "nparallel;": "\u2226", + "nparsl;": "\u2afd\u20e5", + "npart;": "\u2202\u0338", + "npolint;": "\u2a14", + "npr;": "\u2280", + "nprcue;": "\u22e0", + "npre;": "\u2aaf\u0338", + "nprec;": "\u2280", + "npreceq;": "\u2aaf\u0338", + "nrArr;": "\u21cf", + "nrarr;": "\u219b", + "nrarrc;": "\u2933\u0338", + "nrarrw;": "\u219d\u0338", + "nrightarrow;": "\u219b", + "nrtri;": "\u22eb", + "nrtrie;": "\u22ed", + "nsc;": "\u2281", + "nsccue;": "\u22e1", + "nsce;": "\u2ab0\u0338", + "nscr;": "\U0001d4c3", + "nshortmid;": "\u2224", + "nshortparallel;": "\u2226", + "nsim;": "\u2241", + "nsime;": "\u2244", + "nsimeq;": "\u2244", + "nsmid;": "\u2224", + "nspar;": "\u2226", + "nsqsube;": "\u22e2", + "nsqsupe;": "\u22e3", + "nsub;": "\u2284", + "nsubE;": "\u2ac5\u0338", + "nsube;": "\u2288", + "nsubset;": "\u2282\u20d2", + "nsubseteq;": "\u2288", + "nsubseteqq;": "\u2ac5\u0338", + "nsucc;": "\u2281", + "nsucceq;": "\u2ab0\u0338", + "nsup;": "\u2285", + "nsupE;": "\u2ac6\u0338", + "nsupe;": "\u2289", + "nsupset;": "\u2283\u20d2", + "nsupseteq;": "\u2289", + "nsupseteqq;": "\u2ac6\u0338", + "ntgl;": "\u2279", + "ntilde": "\xf1", + "ntilde;": "\xf1", + "ntlg;": "\u2278", + "ntriangleleft;": "\u22ea", + "ntrianglelefteq;": "\u22ec", + "ntriangleright;": "\u22eb", + "ntrianglerighteq;": "\u22ed", + "nu;": "\u03bd", + "num;": "#", + "numero;": "\u2116", + "numsp;": "\u2007", + "nvDash;": "\u22ad", + "nvHarr;": "\u2904", + "nvap;": "\u224d\u20d2", + "nvdash;": "\u22ac", + "nvge;": "\u2265\u20d2", + "nvgt;": ">\u20d2", + "nvinfin;": "\u29de", + "nvlArr;": "\u2902", + "nvle;": "\u2264\u20d2", + "nvlt;": "<\u20d2", + "nvltrie;": "\u22b4\u20d2", + "nvrArr;": "\u2903", + "nvrtrie;": "\u22b5\u20d2", + "nvsim;": "\u223c\u20d2", + "nwArr;": "\u21d6", + "nwarhk;": "\u2923", + "nwarr;": "\u2196", + "nwarrow;": "\u2196", + "nwnear;": "\u2927", + "oS;": "\u24c8", + "oacute": "\xf3", + "oacute;": "\xf3", + "oast;": "\u229b", + "ocir;": "\u229a", + "ocirc": "\xf4", + "ocirc;": "\xf4", + "ocy;": "\u043e", + "odash;": "\u229d", + "odblac;": "\u0151", + "odiv;": "\u2a38", + "odot;": "\u2299", + "odsold;": "\u29bc", + "oelig;": "\u0153", + "ofcir;": "\u29bf", + "ofr;": "\U0001d52c", + "ogon;": "\u02db", + "ograve": "\xf2", + "ograve;": "\xf2", + "ogt;": "\u29c1", + "ohbar;": "\u29b5", + "ohm;": "\u03a9", + "oint;": "\u222e", + "olarr;": "\u21ba", + "olcir;": "\u29be", + "olcross;": "\u29bb", + "oline;": "\u203e", + "olt;": "\u29c0", + "omacr;": "\u014d", + "omega;": "\u03c9", + "omicron;": "\u03bf", + "omid;": "\u29b6", + "ominus;": "\u2296", + "oopf;": "\U0001d560", + "opar;": "\u29b7", + "operp;": "\u29b9", + "oplus;": "\u2295", + "or;": "\u2228", + "orarr;": "\u21bb", + "ord;": "\u2a5d", + "order;": "\u2134", + "orderof;": "\u2134", + "ordf": "\xaa", + "ordf;": "\xaa", + "ordm": "\xba", + "ordm;": "\xba", + "origof;": "\u22b6", + "oror;": "\u2a56", + "orslope;": "\u2a57", + "orv;": "\u2a5b", + "oscr;": "\u2134", + "oslash": "\xf8", + "oslash;": "\xf8", + "osol;": "\u2298", + "otilde": "\xf5", + "otilde;": "\xf5", + "otimes;": "\u2297", + "otimesas;": "\u2a36", + "ouml": "\xf6", + "ouml;": "\xf6", + "ovbar;": "\u233d", + "par;": "\u2225", + "para": "\xb6", + "para;": "\xb6", + "parallel;": "\u2225", + "parsim;": "\u2af3", + "parsl;": "\u2afd", + "part;": "\u2202", + "pcy;": "\u043f", + "percnt;": "%", + "period;": ".", + "permil;": "\u2030", + "perp;": "\u22a5", + "pertenk;": "\u2031", + "pfr;": "\U0001d52d", + "phi;": "\u03c6", + "phiv;": "\u03d5", + "phmmat;": "\u2133", + "phone;": "\u260e", + "pi;": "\u03c0", + "pitchfork;": "\u22d4", + "piv;": "\u03d6", + "planck;": "\u210f", + "planckh;": "\u210e", + "plankv;": "\u210f", + "plus;": "+", + "plusacir;": "\u2a23", + "plusb;": "\u229e", + "pluscir;": "\u2a22", + "plusdo;": "\u2214", + "plusdu;": "\u2a25", + "pluse;": "\u2a72", + "plusmn": "\xb1", + "plusmn;": "\xb1", + "plussim;": "\u2a26", + "plustwo;": "\u2a27", + "pm;": "\xb1", + "pointint;": "\u2a15", + "popf;": "\U0001d561", + "pound": "\xa3", + "pound;": "\xa3", + "pr;": "\u227a", + "prE;": "\u2ab3", + "prap;": "\u2ab7", + "prcue;": "\u227c", + "pre;": "\u2aaf", + "prec;": "\u227a", + "precapprox;": "\u2ab7", + "preccurlyeq;": "\u227c", + "preceq;": "\u2aaf", + "precnapprox;": "\u2ab9", + "precneqq;": "\u2ab5", + "precnsim;": "\u22e8", + "precsim;": "\u227e", + "prime;": "\u2032", + "primes;": "\u2119", + "prnE;": "\u2ab5", + "prnap;": "\u2ab9", + "prnsim;": "\u22e8", + "prod;": "\u220f", + "profalar;": "\u232e", + "profline;": "\u2312", + "profsurf;": "\u2313", + "prop;": "\u221d", + "propto;": "\u221d", + "prsim;": "\u227e", + "prurel;": "\u22b0", + "pscr;": "\U0001d4c5", + "psi;": "\u03c8", + "puncsp;": "\u2008", + "qfr;": "\U0001d52e", + "qint;": "\u2a0c", + "qopf;": "\U0001d562", + "qprime;": "\u2057", + "qscr;": "\U0001d4c6", + "quaternions;": "\u210d", + "quatint;": "\u2a16", + "quest;": "?", + "questeq;": "\u225f", + "quot": "\"", + "quot;": "\"", + "rAarr;": "\u21db", + "rArr;": "\u21d2", + "rAtail;": "\u291c", + "rBarr;": "\u290f", + "rHar;": "\u2964", + "race;": "\u223d\u0331", + "racute;": "\u0155", + "radic;": "\u221a", + "raemptyv;": "\u29b3", + "rang;": "\u27e9", + "rangd;": "\u2992", + "range;": "\u29a5", + "rangle;": "\u27e9", + "raquo": "\xbb", + "raquo;": "\xbb", + "rarr;": "\u2192", + "rarrap;": "\u2975", + "rarrb;": "\u21e5", + "rarrbfs;": "\u2920", + "rarrc;": "\u2933", + "rarrfs;": "\u291e", + "rarrhk;": "\u21aa", + "rarrlp;": "\u21ac", + "rarrpl;": "\u2945", + "rarrsim;": "\u2974", + "rarrtl;": "\u21a3", + "rarrw;": "\u219d", + "ratail;": "\u291a", + "ratio;": "\u2236", + "rationals;": "\u211a", + "rbarr;": "\u290d", + "rbbrk;": "\u2773", + "rbrace;": "}", + "rbrack;": "]", + "rbrke;": "\u298c", + "rbrksld;": "\u298e", + "rbrkslu;": "\u2990", + "rcaron;": "\u0159", + "rcedil;": "\u0157", + "rceil;": "\u2309", + "rcub;": "}", + "rcy;": "\u0440", + "rdca;": "\u2937", + "rdldhar;": "\u2969", + "rdquo;": "\u201d", + "rdquor;": "\u201d", + "rdsh;": "\u21b3", + "real;": "\u211c", + "realine;": "\u211b", + "realpart;": "\u211c", + "reals;": "\u211d", + "rect;": "\u25ad", + "reg": "\xae", + "reg;": "\xae", + "rfisht;": "\u297d", + "rfloor;": "\u230b", + "rfr;": "\U0001d52f", + "rhard;": "\u21c1", + "rharu;": "\u21c0", + "rharul;": "\u296c", + "rho;": "\u03c1", + "rhov;": "\u03f1", + "rightarrow;": "\u2192", + "rightarrowtail;": "\u21a3", + "rightharpoondown;": "\u21c1", + "rightharpoonup;": "\u21c0", + "rightleftarrows;": "\u21c4", + "rightleftharpoons;": "\u21cc", + "rightrightarrows;": "\u21c9", + "rightsquigarrow;": "\u219d", + "rightthreetimes;": "\u22cc", + "ring;": "\u02da", + "risingdotseq;": "\u2253", + "rlarr;": "\u21c4", + "rlhar;": "\u21cc", + "rlm;": "\u200f", + "rmoust;": "\u23b1", + "rmoustache;": "\u23b1", + "rnmid;": "\u2aee", + "roang;": "\u27ed", + "roarr;": "\u21fe", + "robrk;": "\u27e7", + "ropar;": "\u2986", + "ropf;": "\U0001d563", + "roplus;": "\u2a2e", + "rotimes;": "\u2a35", + "rpar;": ")", + "rpargt;": "\u2994", + "rppolint;": "\u2a12", + "rrarr;": "\u21c9", + "rsaquo;": "\u203a", + "rscr;": "\U0001d4c7", + "rsh;": "\u21b1", + "rsqb;": "]", + "rsquo;": "\u2019", + "rsquor;": "\u2019", + "rthree;": "\u22cc", + "rtimes;": "\u22ca", + "rtri;": "\u25b9", + "rtrie;": "\u22b5", + "rtrif;": "\u25b8", + "rtriltri;": "\u29ce", + "ruluhar;": "\u2968", + "rx;": "\u211e", + "sacute;": "\u015b", + "sbquo;": "\u201a", + "sc;": "\u227b", + "scE;": "\u2ab4", + "scap;": "\u2ab8", + "scaron;": "\u0161", + "sccue;": "\u227d", + "sce;": "\u2ab0", + "scedil;": "\u015f", + "scirc;": "\u015d", + "scnE;": "\u2ab6", + "scnap;": "\u2aba", + "scnsim;": "\u22e9", + "scpolint;": "\u2a13", + "scsim;": "\u227f", + "scy;": "\u0441", + "sdot;": "\u22c5", + "sdotb;": "\u22a1", + "sdote;": "\u2a66", + "seArr;": "\u21d8", + "searhk;": "\u2925", + "searr;": "\u2198", + "searrow;": "\u2198", + "sect": "\xa7", + "sect;": "\xa7", + "semi;": ";", + "seswar;": "\u2929", + "setminus;": "\u2216", + "setmn;": "\u2216", + "sext;": "\u2736", + "sfr;": "\U0001d530", + "sfrown;": "\u2322", + "sharp;": "\u266f", + "shchcy;": "\u0449", + "shcy;": "\u0448", + "shortmid;": "\u2223", + "shortparallel;": "\u2225", + "shy": "\xad", + "shy;": "\xad", + "sigma;": "\u03c3", + "sigmaf;": "\u03c2", + "sigmav;": "\u03c2", + "sim;": "\u223c", + "simdot;": "\u2a6a", + "sime;": "\u2243", + "simeq;": "\u2243", + "simg;": "\u2a9e", + "simgE;": "\u2aa0", + "siml;": "\u2a9d", + "simlE;": "\u2a9f", + "simne;": "\u2246", + "simplus;": "\u2a24", + "simrarr;": "\u2972", + "slarr;": "\u2190", + "smallsetminus;": "\u2216", + "smashp;": "\u2a33", + "smeparsl;": "\u29e4", + "smid;": "\u2223", + "smile;": "\u2323", + "smt;": "\u2aaa", + "smte;": "\u2aac", + "smtes;": "\u2aac\ufe00", + "softcy;": "\u044c", + "sol;": "/", + "solb;": "\u29c4", + "solbar;": "\u233f", + "sopf;": "\U0001d564", + "spades;": "\u2660", + "spadesuit;": "\u2660", + "spar;": "\u2225", + "sqcap;": "\u2293", + "sqcaps;": "\u2293\ufe00", + "sqcup;": "\u2294", + "sqcups;": "\u2294\ufe00", + "sqsub;": "\u228f", + "sqsube;": "\u2291", + "sqsubset;": "\u228f", + "sqsubseteq;": "\u2291", + "sqsup;": "\u2290", + "sqsupe;": "\u2292", + "sqsupset;": "\u2290", + "sqsupseteq;": "\u2292", + "squ;": "\u25a1", + "square;": "\u25a1", + "squarf;": "\u25aa", + "squf;": "\u25aa", + "srarr;": "\u2192", + "sscr;": "\U0001d4c8", + "ssetmn;": "\u2216", + "ssmile;": "\u2323", + "sstarf;": "\u22c6", + "star;": "\u2606", + "starf;": "\u2605", + "straightepsilon;": "\u03f5", + "straightphi;": "\u03d5", + "strns;": "\xaf", + "sub;": "\u2282", + "subE;": "\u2ac5", + "subdot;": "\u2abd", + "sube;": "\u2286", + "subedot;": "\u2ac3", + "submult;": "\u2ac1", + "subnE;": "\u2acb", + "subne;": "\u228a", + "subplus;": "\u2abf", + "subrarr;": "\u2979", + "subset;": "\u2282", + "subseteq;": "\u2286", + "subseteqq;": "\u2ac5", + "subsetneq;": "\u228a", + "subsetneqq;": "\u2acb", + "subsim;": "\u2ac7", + "subsub;": "\u2ad5", + "subsup;": "\u2ad3", + "succ;": "\u227b", + "succapprox;": "\u2ab8", + "succcurlyeq;": "\u227d", + "succeq;": "\u2ab0", + "succnapprox;": "\u2aba", + "succneqq;": "\u2ab6", + "succnsim;": "\u22e9", + "succsim;": "\u227f", + "sum;": "\u2211", + "sung;": "\u266a", + "sup1": "\xb9", + "sup1;": "\xb9", + "sup2": "\xb2", + "sup2;": "\xb2", + "sup3": "\xb3", + "sup3;": "\xb3", + "sup;": "\u2283", + "supE;": "\u2ac6", + "supdot;": "\u2abe", + "supdsub;": "\u2ad8", + "supe;": "\u2287", + "supedot;": "\u2ac4", + "suphsol;": "\u27c9", + "suphsub;": "\u2ad7", + "suplarr;": "\u297b", + "supmult;": "\u2ac2", + "supnE;": "\u2acc", + "supne;": "\u228b", + "supplus;": "\u2ac0", + "supset;": "\u2283", + "supseteq;": "\u2287", + "supseteqq;": "\u2ac6", + "supsetneq;": "\u228b", + "supsetneqq;": "\u2acc", + "supsim;": "\u2ac8", + "supsub;": "\u2ad4", + "supsup;": "\u2ad6", + "swArr;": "\u21d9", + "swarhk;": "\u2926", + "swarr;": "\u2199", + "swarrow;": "\u2199", + "swnwar;": "\u292a", + "szlig": "\xdf", + "szlig;": "\xdf", + "target;": "\u2316", + "tau;": "\u03c4", + "tbrk;": "\u23b4", + "tcaron;": "\u0165", + "tcedil;": "\u0163", + "tcy;": "\u0442", + "tdot;": "\u20db", + "telrec;": "\u2315", + "tfr;": "\U0001d531", + "there4;": "\u2234", + "therefore;": "\u2234", + "theta;": "\u03b8", + "thetasym;": "\u03d1", + "thetav;": "\u03d1", + "thickapprox;": "\u2248", + "thicksim;": "\u223c", + "thinsp;": "\u2009", + "thkap;": "\u2248", + "thksim;": "\u223c", + "thorn": "\xfe", + "thorn;": "\xfe", + "tilde;": "\u02dc", + "times": "\xd7", + "times;": "\xd7", + "timesb;": "\u22a0", + "timesbar;": "\u2a31", + "timesd;": "\u2a30", + "tint;": "\u222d", + "toea;": "\u2928", + "top;": "\u22a4", + "topbot;": "\u2336", + "topcir;": "\u2af1", + "topf;": "\U0001d565", + "topfork;": "\u2ada", + "tosa;": "\u2929", + "tprime;": "\u2034", + "trade;": "\u2122", + "triangle;": "\u25b5", + "triangledown;": "\u25bf", + "triangleleft;": "\u25c3", + "trianglelefteq;": "\u22b4", + "triangleq;": "\u225c", + "triangleright;": "\u25b9", + "trianglerighteq;": "\u22b5", + "tridot;": "\u25ec", + "trie;": "\u225c", + "triminus;": "\u2a3a", + "triplus;": "\u2a39", + "trisb;": "\u29cd", + "tritime;": "\u2a3b", + "trpezium;": "\u23e2", + "tscr;": "\U0001d4c9", + "tscy;": "\u0446", + "tshcy;": "\u045b", + "tstrok;": "\u0167", + "twixt;": "\u226c", + "twoheadleftarrow;": "\u219e", + "twoheadrightarrow;": "\u21a0", + "uArr;": "\u21d1", + "uHar;": "\u2963", + "uacute": "\xfa", + "uacute;": "\xfa", + "uarr;": "\u2191", + "ubrcy;": "\u045e", + "ubreve;": "\u016d", + "ucirc": "\xfb", + "ucirc;": "\xfb", + "ucy;": "\u0443", + "udarr;": "\u21c5", + "udblac;": "\u0171", + "udhar;": "\u296e", + "ufisht;": "\u297e", + "ufr;": "\U0001d532", + "ugrave": "\xf9", + "ugrave;": "\xf9", + "uharl;": "\u21bf", + "uharr;": "\u21be", + "uhblk;": "\u2580", + "ulcorn;": "\u231c", + "ulcorner;": "\u231c", + "ulcrop;": "\u230f", + "ultri;": "\u25f8", + "umacr;": "\u016b", + "uml": "\xa8", + "uml;": "\xa8", + "uogon;": "\u0173", + "uopf;": "\U0001d566", + "uparrow;": "\u2191", + "updownarrow;": "\u2195", + "upharpoonleft;": "\u21bf", + "upharpoonright;": "\u21be", + "uplus;": "\u228e", + "upsi;": "\u03c5", + "upsih;": "\u03d2", + "upsilon;": "\u03c5", + "upuparrows;": "\u21c8", + "urcorn;": "\u231d", + "urcorner;": "\u231d", + "urcrop;": "\u230e", + "uring;": "\u016f", + "urtri;": "\u25f9", + "uscr;": "\U0001d4ca", + "utdot;": "\u22f0", + "utilde;": "\u0169", + "utri;": "\u25b5", + "utrif;": "\u25b4", + "uuarr;": "\u21c8", + "uuml": "\xfc", + "uuml;": "\xfc", + "uwangle;": "\u29a7", + "vArr;": "\u21d5", + "vBar;": "\u2ae8", + "vBarv;": "\u2ae9", + "vDash;": "\u22a8", + "vangrt;": "\u299c", + "varepsilon;": "\u03f5", + "varkappa;": "\u03f0", + "varnothing;": "\u2205", + "varphi;": "\u03d5", + "varpi;": "\u03d6", + "varpropto;": "\u221d", + "varr;": "\u2195", + "varrho;": "\u03f1", + "varsigma;": "\u03c2", + "varsubsetneq;": "\u228a\ufe00", + "varsubsetneqq;": "\u2acb\ufe00", + "varsupsetneq;": "\u228b\ufe00", + "varsupsetneqq;": "\u2acc\ufe00", + "vartheta;": "\u03d1", + "vartriangleleft;": "\u22b2", + "vartriangleright;": "\u22b3", + "vcy;": "\u0432", + "vdash;": "\u22a2", + "vee;": "\u2228", + "veebar;": "\u22bb", + "veeeq;": "\u225a", + "vellip;": "\u22ee", + "verbar;": "|", + "vert;": "|", + "vfr;": "\U0001d533", + "vltri;": "\u22b2", + "vnsub;": "\u2282\u20d2", + "vnsup;": "\u2283\u20d2", + "vopf;": "\U0001d567", + "vprop;": "\u221d", + "vrtri;": "\u22b3", + "vscr;": "\U0001d4cb", + "vsubnE;": "\u2acb\ufe00", + "vsubne;": "\u228a\ufe00", + "vsupnE;": "\u2acc\ufe00", + "vsupne;": "\u228b\ufe00", + "vzigzag;": "\u299a", + "wcirc;": "\u0175", + "wedbar;": "\u2a5f", + "wedge;": "\u2227", + "wedgeq;": "\u2259", + "weierp;": "\u2118", + "wfr;": "\U0001d534", + "wopf;": "\U0001d568", + "wp;": "\u2118", + "wr;": "\u2240", + "wreath;": "\u2240", + "wscr;": "\U0001d4cc", + "xcap;": "\u22c2", + "xcirc;": "\u25ef", + "xcup;": "\u22c3", + "xdtri;": "\u25bd", + "xfr;": "\U0001d535", + "xhArr;": "\u27fa", + "xharr;": "\u27f7", + "xi;": "\u03be", + "xlArr;": "\u27f8", + "xlarr;": "\u27f5", + "xmap;": "\u27fc", + "xnis;": "\u22fb", + "xodot;": "\u2a00", + "xopf;": "\U0001d569", + "xoplus;": "\u2a01", + "xotime;": "\u2a02", + "xrArr;": "\u27f9", + "xrarr;": "\u27f6", + "xscr;": "\U0001d4cd", + "xsqcup;": "\u2a06", + "xuplus;": "\u2a04", + "xutri;": "\u25b3", + "xvee;": "\u22c1", + "xwedge;": "\u22c0", + "yacute": "\xfd", + "yacute;": "\xfd", + "yacy;": "\u044f", + "ycirc;": "\u0177", + "ycy;": "\u044b", + "yen": "\xa5", + "yen;": "\xa5", + "yfr;": "\U0001d536", + "yicy;": "\u0457", + "yopf;": "\U0001d56a", + "yscr;": "\U0001d4ce", + "yucy;": "\u044e", + "yuml": "\xff", + "yuml;": "\xff", + "zacute;": "\u017a", + "zcaron;": "\u017e", + "zcy;": "\u0437", + "zdot;": "\u017c", + "zeetrf;": "\u2128", + "zeta;": "\u03b6", + "zfr;": "\U0001d537", + "zhcy;": "\u0436", + "zigrarr;": "\u21dd", + "zopf;": "\U0001d56b", + "zscr;": "\U0001d4cf", + "zwj;": "\u200d", + "zwnj;": "\u200c", +} + +replacementCharacters = { + 0x0: "\uFFFD", + 0x0d: "\u000D", + 0x80: "\u20AC", + 0x81: "\u0081", + 0x82: "\u201A", + 0x83: "\u0192", + 0x84: "\u201E", + 0x85: "\u2026", + 0x86: "\u2020", + 0x87: "\u2021", + 0x88: "\u02C6", + 0x89: "\u2030", + 0x8A: "\u0160", + 0x8B: "\u2039", + 0x8C: "\u0152", + 0x8D: "\u008D", + 0x8E: "\u017D", + 0x8F: "\u008F", + 0x90: "\u0090", + 0x91: "\u2018", + 0x92: "\u2019", + 0x93: "\u201C", + 0x94: "\u201D", + 0x95: "\u2022", + 0x96: "\u2013", + 0x97: "\u2014", + 0x98: "\u02DC", + 0x99: "\u2122", + 0x9A: "\u0161", + 0x9B: "\u203A", + 0x9C: "\u0153", + 0x9D: "\u009D", + 0x9E: "\u017E", + 0x9F: "\u0178", +} + +tokenTypes = { + "Doctype": 0, + "Characters": 1, + "SpaceCharacters": 2, + "StartTag": 3, + "EndTag": 4, + "EmptyTag": 5, + "Comment": 6, + "ParseError": 7 +} + +tagTokenTypes = frozenset([tokenTypes["StartTag"], tokenTypes["EndTag"], + tokenTypes["EmptyTag"]]) + + +prefixes = dict([(v, k) for k, v in namespaces.items()]) +prefixes["http://www.w3.org/1998/Math/MathML"] = "math" + + +class DataLossWarning(UserWarning): + """Raised when the current tree is unable to represent the input data""" + pass + + +class _ReparseException(Exception): + pass diff --git a/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py b/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py b/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py new file mode 100644 index 0000000..5ba926e --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py @@ -0,0 +1,29 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import base + +from collections import OrderedDict + + +def _attr_key(attr): + """Return an appropriate key for an attribute for sorting + + Attributes have a namespace that can be either ``None`` or a string. We + can't compare the two because they're different types, so we convert + ``None`` to an empty string first. + + """ + return (attr[0][0] or ''), attr[0][1] + + +class Filter(base.Filter): + """Alphabetizes attributes for elements""" + def __iter__(self): + for token in base.Filter.__iter__(self): + if token["type"] in ("StartTag", "EmptyTag"): + attrs = OrderedDict() + for name, value in sorted(token["data"].items(), + key=_attr_key): + attrs[name] = value + token["data"] = attrs + yield token diff --git a/Lib/site-packages/pip/_vendor/html5lib/filters/base.py b/Lib/site-packages/pip/_vendor/html5lib/filters/base.py new file mode 100644 index 0000000..c7dbaed --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/filters/base.py @@ -0,0 +1,12 @@ +from __future__ import absolute_import, division, unicode_literals + + +class Filter(object): + def __init__(self, source): + self.source = source + + def __iter__(self): + return iter(self.source) + + def __getattr__(self, name): + return getattr(self.source, name) diff --git a/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py b/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py new file mode 100644 index 0000000..aefb5c8 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py @@ -0,0 +1,73 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import base + + +class Filter(base.Filter): + """Injects ```` tag into head of document""" + def __init__(self, source, encoding): + """Creates a Filter + + :arg source: the source token stream + + :arg encoding: the encoding to set + + """ + base.Filter.__init__(self, source) + self.encoding = encoding + + def __iter__(self): + state = "pre_head" + meta_found = (self.encoding is None) + pending = [] + + for token in base.Filter.__iter__(self): + type = token["type"] + if type == "StartTag": + if token["name"].lower() == "head": + state = "in_head" + + elif type == "EmptyTag": + if token["name"].lower() == "meta": + # replace charset with actual encoding + has_http_equiv_content_type = False + for (namespace, name), value in token["data"].items(): + if namespace is not None: + continue + elif name.lower() == 'charset': + token["data"][(namespace, name)] = self.encoding + meta_found = True + break + elif name == 'http-equiv' and value.lower() == 'content-type': + has_http_equiv_content_type = True + else: + if has_http_equiv_content_type and (None, "content") in token["data"]: + token["data"][(None, "content")] = 'text/html; charset=%s' % self.encoding + meta_found = True + + elif token["name"].lower() == "head" and not meta_found: + # insert meta into empty head + yield {"type": "StartTag", "name": "head", + "data": token["data"]} + yield {"type": "EmptyTag", "name": "meta", + "data": {(None, "charset"): self.encoding}} + yield {"type": "EndTag", "name": "head"} + meta_found = True + continue + + elif type == "EndTag": + if token["name"].lower() == "head" and pending: + # insert meta into head (if necessary) and flush pending queue + yield pending.pop(0) + if not meta_found: + yield {"type": "EmptyTag", "name": "meta", + "data": {(None, "charset"): self.encoding}} + while pending: + yield pending.pop(0) + meta_found = True + state = "post_head" + + if state == "in_head": + pending.append(token) + else: + yield token diff --git a/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py b/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py new file mode 100644 index 0000000..fcc07ee --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py @@ -0,0 +1,93 @@ +from __future__ import absolute_import, division, unicode_literals + +from pip._vendor.six import text_type + +from . import base +from ..constants import namespaces, voidElements + +from ..constants import spaceCharacters +spaceCharacters = "".join(spaceCharacters) + + +class Filter(base.Filter): + """Lints the token stream for errors + + If it finds any errors, it'll raise an ``AssertionError``. + + """ + def __init__(self, source, require_matching_tags=True): + """Creates a Filter + + :arg source: the source token stream + + :arg require_matching_tags: whether or not to require matching tags + + """ + super(Filter, self).__init__(source) + self.require_matching_tags = require_matching_tags + + def __iter__(self): + open_elements = [] + for token in base.Filter.__iter__(self): + type = token["type"] + if type in ("StartTag", "EmptyTag"): + namespace = token["namespace"] + name = token["name"] + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + assert isinstance(token["data"], dict) + if (not namespace or namespace == namespaces["html"]) and name in voidElements: + assert type == "EmptyTag" + else: + assert type == "StartTag" + if type == "StartTag" and self.require_matching_tags: + open_elements.append((namespace, name)) + for (namespace, name), value in token["data"].items(): + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + assert isinstance(value, text_type) + + elif type == "EndTag": + namespace = token["namespace"] + name = token["name"] + assert namespace is None or isinstance(namespace, text_type) + assert namespace != "" + assert isinstance(name, text_type) + assert name != "" + if (not namespace or namespace == namespaces["html"]) and name in voidElements: + assert False, "Void element reported as EndTag token: %(tag)s" % {"tag": name} + elif self.require_matching_tags: + start = open_elements.pop() + assert start == (namespace, name) + + elif type == "Comment": + data = token["data"] + assert isinstance(data, text_type) + + elif type in ("Characters", "SpaceCharacters"): + data = token["data"] + assert isinstance(data, text_type) + assert data != "" + if type == "SpaceCharacters": + assert data.strip(spaceCharacters) == "" + + elif type == "Doctype": + name = token["name"] + assert name is None or isinstance(name, text_type) + assert token["publicId"] is None or isinstance(name, text_type) + assert token["systemId"] is None or isinstance(name, text_type) + + elif type == "Entity": + assert isinstance(token["name"], text_type) + + elif type == "SerializerError": + assert isinstance(token["data"], text_type) + + else: + assert False, "Unknown token type: %(type)s" % {"type": type} + + yield token diff --git a/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py b/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py new file mode 100644 index 0000000..4a86501 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py @@ -0,0 +1,207 @@ +from __future__ import absolute_import, division, unicode_literals + +from . import base + + +class Filter(base.Filter): + """Removes optional tags from the token stream""" + def slider(self): + previous1 = previous2 = None + for token in self.source: + if previous1 is not None: + yield previous2, previous1, token + previous2 = previous1 + previous1 = token + if previous1 is not None: + yield previous2, previous1, None + + def __iter__(self): + for previous, token, next in self.slider(): + type = token["type"] + if type == "StartTag": + if (token["data"] or + not self.is_optional_start(token["name"], previous, next)): + yield token + elif type == "EndTag": + if not self.is_optional_end(token["name"], next): + yield token + else: + yield token + + def is_optional_start(self, tagname, previous, next): + type = next and next["type"] or None + if tagname in 'html': + # An html element's start tag may be omitted if the first thing + # inside the html element is not a space character or a comment. + return type not in ("Comment", "SpaceCharacters") + elif tagname == 'head': + # A head element's start tag may be omitted if the first thing + # inside the head element is an element. + # XXX: we also omit the start tag if the head element is empty + if type in ("StartTag", "EmptyTag"): + return True + elif type == "EndTag": + return next["name"] == "head" + elif tagname == 'body': + # A body element's start tag may be omitted if the first thing + # inside the body element is not a space character or a comment, + # except if the first thing inside the body element is a script + # or style element and the node immediately preceding the body + # element is a head element whose end tag has been omitted. + if type in ("Comment", "SpaceCharacters"): + return False + elif type == "StartTag": + # XXX: we do not look at the preceding event, so we never omit + # the body element's start tag if it's followed by a script or + # a style element. + return next["name"] not in ('script', 'style') + else: + return True + elif tagname == 'colgroup': + # A colgroup element's start tag may be omitted if the first thing + # inside the colgroup element is a col element, and if the element + # is not immediately preceded by another colgroup element whose + # end tag has been omitted. + if type in ("StartTag", "EmptyTag"): + # XXX: we do not look at the preceding event, so instead we never + # omit the colgroup element's end tag when it is immediately + # followed by another colgroup element. See is_optional_end. + return next["name"] == "col" + else: + return False + elif tagname == 'tbody': + # A tbody element's start tag may be omitted if the first thing + # inside the tbody element is a tr element, and if the element is + # not immediately preceded by a tbody, thead, or tfoot element + # whose end tag has been omitted. + if type == "StartTag": + # omit the thead and tfoot elements' end tag when they are + # immediately followed by a tbody element. See is_optional_end. + if previous and previous['type'] == 'EndTag' and \ + previous['name'] in ('tbody', 'thead', 'tfoot'): + return False + return next["name"] == 'tr' + else: + return False + return False + + def is_optional_end(self, tagname, next): + type = next and next["type"] or None + if tagname in ('html', 'head', 'body'): + # An html element's end tag may be omitted if the html element + # is not immediately followed by a space character or a comment. + return type not in ("Comment", "SpaceCharacters") + elif tagname in ('li', 'optgroup', 'tr'): + # A li element's end tag may be omitted if the li element is + # immediately followed by another li element or if there is + # no more content in the parent element. + # An optgroup element's end tag may be omitted if the optgroup + # element is immediately followed by another optgroup element, + # or if there is no more content in the parent element. + # A tr element's end tag may be omitted if the tr element is + # immediately followed by another tr element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] == tagname + else: + return type == "EndTag" or type is None + elif tagname in ('dt', 'dd'): + # A dt element's end tag may be omitted if the dt element is + # immediately followed by another dt element or a dd element. + # A dd element's end tag may be omitted if the dd element is + # immediately followed by another dd element or a dt element, + # or if there is no more content in the parent element. + if type == "StartTag": + return next["name"] in ('dt', 'dd') + elif tagname == 'dd': + return type == "EndTag" or type is None + else: + return False + elif tagname == 'p': + # A p element's end tag may be omitted if the p element is + # immediately followed by an address, article, aside, + # blockquote, datagrid, dialog, dir, div, dl, fieldset, + # footer, form, h1, h2, h3, h4, h5, h6, header, hr, menu, + # nav, ol, p, pre, section, table, or ul, element, or if + # there is no more content in the parent element. + if type in ("StartTag", "EmptyTag"): + return next["name"] in ('address', 'article', 'aside', + 'blockquote', 'datagrid', 'dialog', + 'dir', 'div', 'dl', 'fieldset', 'footer', + 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', + 'header', 'hr', 'menu', 'nav', 'ol', + 'p', 'pre', 'section', 'table', 'ul') + else: + return type == "EndTag" or type is None + elif tagname == 'option': + # An option element's end tag may be omitted if the option + # element is immediately followed by another option element, + # or if it is immediately followed by an optgroup + # element, or if there is no more content in the parent + # element. + if type == "StartTag": + return next["name"] in ('option', 'optgroup') + else: + return type == "EndTag" or type is None + elif tagname in ('rt', 'rp'): + # An rt element's end tag may be omitted if the rt element is + # immediately followed by an rt or rp element, or if there is + # no more content in the parent element. + # An rp element's end tag may be omitted if the rp element is + # immediately followed by an rt or rp element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] in ('rt', 'rp') + else: + return type == "EndTag" or type is None + elif tagname == 'colgroup': + # A colgroup element's end tag may be omitted if the colgroup + # element is not immediately followed by a space character or + # a comment. + if type in ("Comment", "SpaceCharacters"): + return False + elif type == "StartTag": + # XXX: we also look for an immediately following colgroup + # element. See is_optional_start. + return next["name"] != 'colgroup' + else: + return True + elif tagname in ('thead', 'tbody'): + # A thead element's end tag may be omitted if the thead element + # is immediately followed by a tbody or tfoot element. + # A tbody element's end tag may be omitted if the tbody element + # is immediately followed by a tbody or tfoot element, or if + # there is no more content in the parent element. + # A tfoot element's end tag may be omitted if the tfoot element + # is immediately followed by a tbody element, or if there is no + # more content in the parent element. + # XXX: we never omit the end tag when the following element is + # a tbody. See is_optional_start. + if type == "StartTag": + return next["name"] in ['tbody', 'tfoot'] + elif tagname == 'tbody': + return type == "EndTag" or type is None + else: + return False + elif tagname == 'tfoot': + # A tfoot element's end tag may be omitted if the tfoot element + # is immediately followed by a tbody element, or if there is no + # more content in the parent element. + # XXX: we never omit the end tag when the following element is + # a tbody. See is_optional_start. + if type == "StartTag": + return next["name"] == 'tbody' + else: + return type == "EndTag" or type is None + elif tagname in ('td', 'th'): + # A td element's end tag may be omitted if the td element is + # immediately followed by a td or th element, or if there is + # no more content in the parent element. + # A th element's end tag may be omitted if the th element is + # immediately followed by a td or th element, or if there is + # no more content in the parent element. + if type == "StartTag": + return next["name"] in ('td', 'th') + else: + return type == "EndTag" or type is None + return False diff --git a/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py b/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py new file mode 100644 index 0000000..af8e77b --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py @@ -0,0 +1,896 @@ +from __future__ import absolute_import, division, unicode_literals + +import re +from xml.sax.saxutils import escape, unescape + +from pip._vendor.six.moves import urllib_parse as urlparse + +from . import base +from ..constants import namespaces, prefixes + +__all__ = ["Filter"] + + +allowed_elements = frozenset(( + (namespaces['html'], 'a'), + (namespaces['html'], 'abbr'), + (namespaces['html'], 'acronym'), + (namespaces['html'], 'address'), + (namespaces['html'], 'area'), + (namespaces['html'], 'article'), + (namespaces['html'], 'aside'), + (namespaces['html'], 'audio'), + (namespaces['html'], 'b'), + (namespaces['html'], 'big'), + (namespaces['html'], 'blockquote'), + (namespaces['html'], 'br'), + (namespaces['html'], 'button'), + (namespaces['html'], 'canvas'), + (namespaces['html'], 'caption'), + (namespaces['html'], 'center'), + (namespaces['html'], 'cite'), + (namespaces['html'], 'code'), + (namespaces['html'], 'col'), + (namespaces['html'], 'colgroup'), + (namespaces['html'], 'command'), + (namespaces['html'], 'datagrid'), + (namespaces['html'], 'datalist'), + (namespaces['html'], 'dd'), + (namespaces['html'], 'del'), + (namespaces['html'], 'details'), + (namespaces['html'], 'dfn'), + (namespaces['html'], 'dialog'), + (namespaces['html'], 'dir'), + (namespaces['html'], 'div'), + (namespaces['html'], 'dl'), + (namespaces['html'], 'dt'), + (namespaces['html'], 'em'), + (namespaces['html'], 'event-source'), + (namespaces['html'], 'fieldset'), + (namespaces['html'], 'figcaption'), + (namespaces['html'], 'figure'), + (namespaces['html'], 'footer'), + (namespaces['html'], 'font'), + (namespaces['html'], 'form'), + (namespaces['html'], 'header'), + (namespaces['html'], 'h1'), + (namespaces['html'], 'h2'), + (namespaces['html'], 'h3'), + (namespaces['html'], 'h4'), + (namespaces['html'], 'h5'), + (namespaces['html'], 'h6'), + (namespaces['html'], 'hr'), + (namespaces['html'], 'i'), + (namespaces['html'], 'img'), + (namespaces['html'], 'input'), + (namespaces['html'], 'ins'), + (namespaces['html'], 'keygen'), + (namespaces['html'], 'kbd'), + (namespaces['html'], 'label'), + (namespaces['html'], 'legend'), + (namespaces['html'], 'li'), + (namespaces['html'], 'm'), + (namespaces['html'], 'map'), + (namespaces['html'], 'menu'), + (namespaces['html'], 'meter'), + (namespaces['html'], 'multicol'), + (namespaces['html'], 'nav'), + (namespaces['html'], 'nextid'), + (namespaces['html'], 'ol'), + (namespaces['html'], 'output'), + (namespaces['html'], 'optgroup'), + (namespaces['html'], 'option'), + (namespaces['html'], 'p'), + (namespaces['html'], 'pre'), + (namespaces['html'], 'progress'), + (namespaces['html'], 'q'), + (namespaces['html'], 's'), + (namespaces['html'], 'samp'), + (namespaces['html'], 'section'), + (namespaces['html'], 'select'), + (namespaces['html'], 'small'), + (namespaces['html'], 'sound'), + (namespaces['html'], 'source'), + (namespaces['html'], 'spacer'), + (namespaces['html'], 'span'), + (namespaces['html'], 'strike'), + (namespaces['html'], 'strong'), + (namespaces['html'], 'sub'), + (namespaces['html'], 'sup'), + (namespaces['html'], 'table'), + (namespaces['html'], 'tbody'), + (namespaces['html'], 'td'), + (namespaces['html'], 'textarea'), + (namespaces['html'], 'time'), + (namespaces['html'], 'tfoot'), + (namespaces['html'], 'th'), + (namespaces['html'], 'thead'), + (namespaces['html'], 'tr'), + (namespaces['html'], 'tt'), + (namespaces['html'], 'u'), + (namespaces['html'], 'ul'), + (namespaces['html'], 'var'), + (namespaces['html'], 'video'), + (namespaces['mathml'], 'maction'), + (namespaces['mathml'], 'math'), + (namespaces['mathml'], 'merror'), + (namespaces['mathml'], 'mfrac'), + (namespaces['mathml'], 'mi'), + (namespaces['mathml'], 'mmultiscripts'), + (namespaces['mathml'], 'mn'), + (namespaces['mathml'], 'mo'), + (namespaces['mathml'], 'mover'), + (namespaces['mathml'], 'mpadded'), + (namespaces['mathml'], 'mphantom'), + (namespaces['mathml'], 'mprescripts'), + (namespaces['mathml'], 'mroot'), + (namespaces['mathml'], 'mrow'), + (namespaces['mathml'], 'mspace'), + (namespaces['mathml'], 'msqrt'), + (namespaces['mathml'], 'mstyle'), + (namespaces['mathml'], 'msub'), + (namespaces['mathml'], 'msubsup'), + (namespaces['mathml'], 'msup'), + (namespaces['mathml'], 'mtable'), + (namespaces['mathml'], 'mtd'), + (namespaces['mathml'], 'mtext'), + (namespaces['mathml'], 'mtr'), + (namespaces['mathml'], 'munder'), + (namespaces['mathml'], 'munderover'), + (namespaces['mathml'], 'none'), + (namespaces['svg'], 'a'), + (namespaces['svg'], 'animate'), + (namespaces['svg'], 'animateColor'), + (namespaces['svg'], 'animateMotion'), + (namespaces['svg'], 'animateTransform'), + (namespaces['svg'], 'clipPath'), + (namespaces['svg'], 'circle'), + (namespaces['svg'], 'defs'), + (namespaces['svg'], 'desc'), + (namespaces['svg'], 'ellipse'), + (namespaces['svg'], 'font-face'), + (namespaces['svg'], 'font-face-name'), + (namespaces['svg'], 'font-face-src'), + (namespaces['svg'], 'g'), + (namespaces['svg'], 'glyph'), + (namespaces['svg'], 'hkern'), + (namespaces['svg'], 'linearGradient'), + (namespaces['svg'], 'line'), + (namespaces['svg'], 'marker'), + (namespaces['svg'], 'metadata'), + (namespaces['svg'], 'missing-glyph'), + (namespaces['svg'], 'mpath'), + (namespaces['svg'], 'path'), + (namespaces['svg'], 'polygon'), + (namespaces['svg'], 'polyline'), + (namespaces['svg'], 'radialGradient'), + (namespaces['svg'], 'rect'), + (namespaces['svg'], 'set'), + (namespaces['svg'], 'stop'), + (namespaces['svg'], 'svg'), + (namespaces['svg'], 'switch'), + (namespaces['svg'], 'text'), + (namespaces['svg'], 'title'), + (namespaces['svg'], 'tspan'), + (namespaces['svg'], 'use'), +)) + +allowed_attributes = frozenset(( + # HTML attributes + (None, 'abbr'), + (None, 'accept'), + (None, 'accept-charset'), + (None, 'accesskey'), + (None, 'action'), + (None, 'align'), + (None, 'alt'), + (None, 'autocomplete'), + (None, 'autofocus'), + (None, 'axis'), + (None, 'background'), + (None, 'balance'), + (None, 'bgcolor'), + (None, 'bgproperties'), + (None, 'border'), + (None, 'bordercolor'), + (None, 'bordercolordark'), + (None, 'bordercolorlight'), + (None, 'bottompadding'), + (None, 'cellpadding'), + (None, 'cellspacing'), + (None, 'ch'), + (None, 'challenge'), + (None, 'char'), + (None, 'charoff'), + (None, 'choff'), + (None, 'charset'), + (None, 'checked'), + (None, 'cite'), + (None, 'class'), + (None, 'clear'), + (None, 'color'), + (None, 'cols'), + (None, 'colspan'), + (None, 'compact'), + (None, 'contenteditable'), + (None, 'controls'), + (None, 'coords'), + (None, 'data'), + (None, 'datafld'), + (None, 'datapagesize'), + (None, 'datasrc'), + (None, 'datetime'), + (None, 'default'), + (None, 'delay'), + (None, 'dir'), + (None, 'disabled'), + (None, 'draggable'), + (None, 'dynsrc'), + (None, 'enctype'), + (None, 'end'), + (None, 'face'), + (None, 'for'), + (None, 'form'), + (None, 'frame'), + (None, 'galleryimg'), + (None, 'gutter'), + (None, 'headers'), + (None, 'height'), + (None, 'hidefocus'), + (None, 'hidden'), + (None, 'high'), + (None, 'href'), + (None, 'hreflang'), + (None, 'hspace'), + (None, 'icon'), + (None, 'id'), + (None, 'inputmode'), + (None, 'ismap'), + (None, 'keytype'), + (None, 'label'), + (None, 'leftspacing'), + (None, 'lang'), + (None, 'list'), + (None, 'longdesc'), + (None, 'loop'), + (None, 'loopcount'), + (None, 'loopend'), + (None, 'loopstart'), + (None, 'low'), + (None, 'lowsrc'), + (None, 'max'), + (None, 'maxlength'), + (None, 'media'), + (None, 'method'), + (None, 'min'), + (None, 'multiple'), + (None, 'name'), + (None, 'nohref'), + (None, 'noshade'), + (None, 'nowrap'), + (None, 'open'), + (None, 'optimum'), + (None, 'pattern'), + (None, 'ping'), + (None, 'point-size'), + (None, 'poster'), + (None, 'pqg'), + (None, 'preload'), + (None, 'prompt'), + (None, 'radiogroup'), + (None, 'readonly'), + (None, 'rel'), + (None, 'repeat-max'), + (None, 'repeat-min'), + (None, 'replace'), + (None, 'required'), + (None, 'rev'), + (None, 'rightspacing'), + (None, 'rows'), + (None, 'rowspan'), + (None, 'rules'), + (None, 'scope'), + (None, 'selected'), + (None, 'shape'), + (None, 'size'), + (None, 'span'), + (None, 'src'), + (None, 'start'), + (None, 'step'), + (None, 'style'), + (None, 'summary'), + (None, 'suppress'), + (None, 'tabindex'), + (None, 'target'), + (None, 'template'), + (None, 'title'), + (None, 'toppadding'), + (None, 'type'), + (None, 'unselectable'), + (None, 'usemap'), + (None, 'urn'), + (None, 'valign'), + (None, 'value'), + (None, 'variable'), + (None, 'volume'), + (None, 'vspace'), + (None, 'vrml'), + (None, 'width'), + (None, 'wrap'), + (namespaces['xml'], 'lang'), + # MathML attributes + (None, 'actiontype'), + (None, 'align'), + (None, 'columnalign'), + (None, 'columnalign'), + (None, 'columnalign'), + (None, 'columnlines'), + (None, 'columnspacing'), + (None, 'columnspan'), + (None, 'depth'), + (None, 'display'), + (None, 'displaystyle'), + (None, 'equalcolumns'), + (None, 'equalrows'), + (None, 'fence'), + (None, 'fontstyle'), + (None, 'fontweight'), + (None, 'frame'), + (None, 'height'), + (None, 'linethickness'), + (None, 'lspace'), + (None, 'mathbackground'), + (None, 'mathcolor'), + (None, 'mathvariant'), + (None, 'mathvariant'), + (None, 'maxsize'), + (None, 'minsize'), + (None, 'other'), + (None, 'rowalign'), + (None, 'rowalign'), + (None, 'rowalign'), + (None, 'rowlines'), + (None, 'rowspacing'), + (None, 'rowspan'), + (None, 'rspace'), + (None, 'scriptlevel'), + (None, 'selection'), + (None, 'separator'), + (None, 'stretchy'), + (None, 'width'), + (None, 'width'), + (namespaces['xlink'], 'href'), + (namespaces['xlink'], 'show'), + (namespaces['xlink'], 'type'), + # SVG attributes + (None, 'accent-height'), + (None, 'accumulate'), + (None, 'additive'), + (None, 'alphabetic'), + (None, 'arabic-form'), + (None, 'ascent'), + (None, 'attributeName'), + (None, 'attributeType'), + (None, 'baseProfile'), + (None, 'bbox'), + (None, 'begin'), + (None, 'by'), + (None, 'calcMode'), + (None, 'cap-height'), + (None, 'class'), + (None, 'clip-path'), + (None, 'color'), + (None, 'color-rendering'), + (None, 'content'), + (None, 'cx'), + (None, 'cy'), + (None, 'd'), + (None, 'dx'), + (None, 'dy'), + (None, 'descent'), + (None, 'display'), + (None, 'dur'), + (None, 'end'), + (None, 'fill'), + (None, 'fill-opacity'), + (None, 'fill-rule'), + (None, 'font-family'), + (None, 'font-size'), + (None, 'font-stretch'), + (None, 'font-style'), + (None, 'font-variant'), + (None, 'font-weight'), + (None, 'from'), + (None, 'fx'), + (None, 'fy'), + (None, 'g1'), + (None, 'g2'), + (None, 'glyph-name'), + (None, 'gradientUnits'), + (None, 'hanging'), + (None, 'height'), + (None, 'horiz-adv-x'), + (None, 'horiz-origin-x'), + (None, 'id'), + (None, 'ideographic'), + (None, 'k'), + (None, 'keyPoints'), + (None, 'keySplines'), + (None, 'keyTimes'), + (None, 'lang'), + (None, 'marker-end'), + (None, 'marker-mid'), + (None, 'marker-start'), + (None, 'markerHeight'), + (None, 'markerUnits'), + (None, 'markerWidth'), + (None, 'mathematical'), + (None, 'max'), + (None, 'min'), + (None, 'name'), + (None, 'offset'), + (None, 'opacity'), + (None, 'orient'), + (None, 'origin'), + (None, 'overline-position'), + (None, 'overline-thickness'), + (None, 'panose-1'), + (None, 'path'), + (None, 'pathLength'), + (None, 'points'), + (None, 'preserveAspectRatio'), + (None, 'r'), + (None, 'refX'), + (None, 'refY'), + (None, 'repeatCount'), + (None, 'repeatDur'), + (None, 'requiredExtensions'), + (None, 'requiredFeatures'), + (None, 'restart'), + (None, 'rotate'), + (None, 'rx'), + (None, 'ry'), + (None, 'slope'), + (None, 'stemh'), + (None, 'stemv'), + (None, 'stop-color'), + (None, 'stop-opacity'), + (None, 'strikethrough-position'), + (None, 'strikethrough-thickness'), + (None, 'stroke'), + (None, 'stroke-dasharray'), + (None, 'stroke-dashoffset'), + (None, 'stroke-linecap'), + (None, 'stroke-linejoin'), + (None, 'stroke-miterlimit'), + (None, 'stroke-opacity'), + (None, 'stroke-width'), + (None, 'systemLanguage'), + (None, 'target'), + (None, 'text-anchor'), + (None, 'to'), + (None, 'transform'), + (None, 'type'), + (None, 'u1'), + (None, 'u2'), + (None, 'underline-position'), + (None, 'underline-thickness'), + (None, 'unicode'), + (None, 'unicode-range'), + (None, 'units-per-em'), + (None, 'values'), + (None, 'version'), + (None, 'viewBox'), + (None, 'visibility'), + (None, 'width'), + (None, 'widths'), + (None, 'x'), + (None, 'x-height'), + (None, 'x1'), + (None, 'x2'), + (namespaces['xlink'], 'actuate'), + (namespaces['xlink'], 'arcrole'), + (namespaces['xlink'], 'href'), + (namespaces['xlink'], 'role'), + (namespaces['xlink'], 'show'), + (namespaces['xlink'], 'title'), + (namespaces['xlink'], 'type'), + (namespaces['xml'], 'base'), + (namespaces['xml'], 'lang'), + (namespaces['xml'], 'space'), + (None, 'y'), + (None, 'y1'), + (None, 'y2'), + (None, 'zoomAndPan'), +)) + +attr_val_is_uri = frozenset(( + (None, 'href'), + (None, 'src'), + (None, 'cite'), + (None, 'action'), + (None, 'longdesc'), + (None, 'poster'), + (None, 'background'), + (None, 'datasrc'), + (None, 'dynsrc'), + (None, 'lowsrc'), + (None, 'ping'), + (namespaces['xlink'], 'href'), + (namespaces['xml'], 'base'), +)) + +svg_attr_val_allows_ref = frozenset(( + (None, 'clip-path'), + (None, 'color-profile'), + (None, 'cursor'), + (None, 'fill'), + (None, 'filter'), + (None, 'marker'), + (None, 'marker-start'), + (None, 'marker-mid'), + (None, 'marker-end'), + (None, 'mask'), + (None, 'stroke'), +)) + +svg_allow_local_href = frozenset(( + (None, 'altGlyph'), + (None, 'animate'), + (None, 'animateColor'), + (None, 'animateMotion'), + (None, 'animateTransform'), + (None, 'cursor'), + (None, 'feImage'), + (None, 'filter'), + (None, 'linearGradient'), + (None, 'pattern'), + (None, 'radialGradient'), + (None, 'textpath'), + (None, 'tref'), + (None, 'set'), + (None, 'use') +)) + +allowed_css_properties = frozenset(( + 'azimuth', + 'background-color', + 'border-bottom-color', + 'border-collapse', + 'border-color', + 'border-left-color', + 'border-right-color', + 'border-top-color', + 'clear', + 'color', + 'cursor', + 'direction', + 'display', + 'elevation', + 'float', + 'font', + 'font-family', + 'font-size', + 'font-style', + 'font-variant', + 'font-weight', + 'height', + 'letter-spacing', + 'line-height', + 'overflow', + 'pause', + 'pause-after', + 'pause-before', + 'pitch', + 'pitch-range', + 'richness', + 'speak', + 'speak-header', + 'speak-numeral', + 'speak-punctuation', + 'speech-rate', + 'stress', + 'text-align', + 'text-decoration', + 'text-indent', + 'unicode-bidi', + 'vertical-align', + 'voice-family', + 'volume', + 'white-space', + 'width', +)) + +allowed_css_keywords = frozenset(( + 'auto', + 'aqua', + 'black', + 'block', + 'blue', + 'bold', + 'both', + 'bottom', + 'brown', + 'center', + 'collapse', + 'dashed', + 'dotted', + 'fuchsia', + 'gray', + 'green', + '!important', + 'italic', + 'left', + 'lime', + 'maroon', + 'medium', + 'none', + 'navy', + 'normal', + 'nowrap', + 'olive', + 'pointer', + 'purple', + 'red', + 'right', + 'solid', + 'silver', + 'teal', + 'top', + 'transparent', + 'underline', + 'white', + 'yellow', +)) + +allowed_svg_properties = frozenset(( + 'fill', + 'fill-opacity', + 'fill-rule', + 'stroke', + 'stroke-width', + 'stroke-linecap', + 'stroke-linejoin', + 'stroke-opacity', +)) + +allowed_protocols = frozenset(( + 'ed2k', + 'ftp', + 'http', + 'https', + 'irc', + 'mailto', + 'news', + 'gopher', + 'nntp', + 'telnet', + 'webcal', + 'xmpp', + 'callto', + 'feed', + 'urn', + 'aim', + 'rsync', + 'tag', + 'ssh', + 'sftp', + 'rtsp', + 'afs', + 'data', +)) + +allowed_content_types = frozenset(( + 'image/png', + 'image/jpeg', + 'image/gif', + 'image/webp', + 'image/bmp', + 'text/plain', +)) + + +data_content_type = re.compile(r''' + ^ + # Match a content type / + (?P[-a-zA-Z0-9.]+/[-a-zA-Z0-9.]+) + # Match any character set and encoding + (?:(?:;charset=(?:[-a-zA-Z0-9]+)(?:;(?:base64))?) + |(?:;(?:base64))?(?:;charset=(?:[-a-zA-Z0-9]+))?) + # Assume the rest is data + ,.* + $ + ''', + re.VERBOSE) + + +class Filter(base.Filter): + """Sanitizes token stream of XHTML+MathML+SVG and of inline style attributes""" + def __init__(self, + source, + allowed_elements=allowed_elements, + allowed_attributes=allowed_attributes, + allowed_css_properties=allowed_css_properties, + allowed_css_keywords=allowed_css_keywords, + allowed_svg_properties=allowed_svg_properties, + allowed_protocols=allowed_protocols, + allowed_content_types=allowed_content_types, + attr_val_is_uri=attr_val_is_uri, + svg_attr_val_allows_ref=svg_attr_val_allows_ref, + svg_allow_local_href=svg_allow_local_href): + """Creates a Filter + + :arg allowed_elements: set of elements to allow--everything else will + be escaped + + :arg allowed_attributes: set of attributes to allow in + elements--everything else will be stripped + + :arg allowed_css_properties: set of CSS properties to allow--everything + else will be stripped + + :arg allowed_css_keywords: set of CSS keywords to allow--everything + else will be stripped + + :arg allowed_svg_properties: set of SVG properties to allow--everything + else will be removed + + :arg allowed_protocols: set of allowed protocols for URIs + + :arg allowed_content_types: set of allowed content types for ``data`` URIs. + + :arg attr_val_is_uri: set of attributes that have URI values--values + that have a scheme not listed in ``allowed_protocols`` are removed + + :arg svg_attr_val_allows_ref: set of SVG attributes that can have + references + + :arg svg_allow_local_href: set of SVG elements that can have local + hrefs--these are removed + + """ + super(Filter, self).__init__(source) + self.allowed_elements = allowed_elements + self.allowed_attributes = allowed_attributes + self.allowed_css_properties = allowed_css_properties + self.allowed_css_keywords = allowed_css_keywords + self.allowed_svg_properties = allowed_svg_properties + self.allowed_protocols = allowed_protocols + self.allowed_content_types = allowed_content_types + self.attr_val_is_uri = attr_val_is_uri + self.svg_attr_val_allows_ref = svg_attr_val_allows_ref + self.svg_allow_local_href = svg_allow_local_href + + def __iter__(self): + for token in base.Filter.__iter__(self): + token = self.sanitize_token(token) + if token: + yield token + + # Sanitize the +html+, escaping all elements not in ALLOWED_ELEMENTS, and + # stripping out all attributes not in ALLOWED_ATTRIBUTES. Style attributes + # are parsed, and a restricted set, specified by ALLOWED_CSS_PROPERTIES and + # ALLOWED_CSS_KEYWORDS, are allowed through. attributes in ATTR_VAL_IS_URI + # are scanned, and only URI schemes specified in ALLOWED_PROTOCOLS are + # allowed. + # + # sanitize_html('') + # => <script> do_nasty_stuff() </script> + # sanitize_html('Click here for $100') + # => Click here for $100 + def sanitize_token(self, token): + + # accommodate filters which use token_type differently + token_type = token["type"] + if token_type in ("StartTag", "EndTag", "EmptyTag"): + name = token["name"] + namespace = token["namespace"] + if ((namespace, name) in self.allowed_elements or + (namespace is None and + (namespaces["html"], name) in self.allowed_elements)): + return self.allowed_token(token) + else: + return self.disallowed_token(token) + elif token_type == "Comment": + pass + else: + return token + + def allowed_token(self, token): + if "data" in token: + attrs = token["data"] + attr_names = set(attrs.keys()) + + # Remove forbidden attributes + for to_remove in (attr_names - self.allowed_attributes): + del token["data"][to_remove] + attr_names.remove(to_remove) + + # Remove attributes with disallowed URL values + for attr in (attr_names & self.attr_val_is_uri): + assert attr in attrs + # I don't have a clue where this regexp comes from or why it matches those + # characters, nor why we call unescape. I just know it's always been here. + # Should you be worried by this comment in a sanitizer? Yes. On the other hand, all + # this will do is remove *more* than it otherwise would. + val_unescaped = re.sub("[`\x00-\x20\x7f-\xa0\\s]+", '', + unescape(attrs[attr])).lower() + # remove replacement characters from unescaped characters + val_unescaped = val_unescaped.replace("\ufffd", "") + try: + uri = urlparse.urlparse(val_unescaped) + except ValueError: + uri = None + del attrs[attr] + if uri and uri.scheme: + if uri.scheme not in self.allowed_protocols: + del attrs[attr] + if uri.scheme == 'data': + m = data_content_type.match(uri.path) + if not m: + del attrs[attr] + elif m.group('content_type') not in self.allowed_content_types: + del attrs[attr] + + for attr in self.svg_attr_val_allows_ref: + if attr in attrs: + attrs[attr] = re.sub(r'url\s*\(\s*[^#\s][^)]+?\)', + ' ', + unescape(attrs[attr])) + if (token["name"] in self.svg_allow_local_href and + (namespaces['xlink'], 'href') in attrs and re.search(r'^\s*[^#\s].*', + attrs[(namespaces['xlink'], 'href')])): + del attrs[(namespaces['xlink'], 'href')] + if (None, 'style') in attrs: + attrs[(None, 'style')] = self.sanitize_css(attrs[(None, 'style')]) + token["data"] = attrs + return token + + def disallowed_token(self, token): + token_type = token["type"] + if token_type == "EndTag": + token["data"] = "" % token["name"] + elif token["data"]: + assert token_type in ("StartTag", "EmptyTag") + attrs = [] + for (ns, name), v in token["data"].items(): + attrs.append(' %s="%s"' % (name if ns is None else "%s:%s" % (prefixes[ns], name), escape(v))) + token["data"] = "<%s%s>" % (token["name"], ''.join(attrs)) + else: + token["data"] = "<%s>" % token["name"] + if token.get("selfClosing"): + token["data"] = token["data"][:-1] + "/>" + + token["type"] = "Characters" + + del token["name"] + return token + + def sanitize_css(self, style): + # disallow urls + style = re.compile(r'url\s*\(\s*[^\s)]+?\s*\)\s*').sub(' ', style) + + # gauntlet + if not re.match(r"""^([:,;#%.\sa-zA-Z0-9!]|\w-\w|'[\s\w]+'|"[\s\w]+"|\([\d,\s]+\))*$""", style): + return '' + if not re.match(r"^\s*([-\w]+\s*:[^:;]*(;\s*|$))*$", style): + return '' + + clean = [] + for prop, value in re.findall(r"([-\w]+)\s*:\s*([^:;]*)", style): + if not value: + continue + if prop.lower() in self.allowed_css_properties: + clean.append(prop + ': ' + value + ';') + elif prop.split('-')[0].lower() in ['background', 'border', 'margin', + 'padding']: + for keyword in value.split(): + if keyword not in self.allowed_css_keywords and \ + not re.match(r"^(#[0-9a-fA-F]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|\d{0,2}\.?\d{0,2}(cm|em|ex|in|mm|pc|pt|px|%|,|\))?)$", keyword): # noqa + break + else: + clean.append(prop + ': ' + value + ';') + elif prop.lower() in self.allowed_svg_properties: + clean.append(prop + ': ' + value + ';') + + return ' '.join(clean) diff --git a/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py b/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py new file mode 100644 index 0000000..0d12584 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py @@ -0,0 +1,38 @@ +from __future__ import absolute_import, division, unicode_literals + +import re + +from . import base +from ..constants import rcdataElements, spaceCharacters +spaceCharacters = "".join(spaceCharacters) + +SPACES_REGEX = re.compile("[%s]+" % spaceCharacters) + + +class Filter(base.Filter): + """Collapses whitespace except in pre, textarea, and script elements""" + spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements)) + + def __iter__(self): + preserve = 0 + for token in base.Filter.__iter__(self): + type = token["type"] + if type == "StartTag" \ + and (preserve or token["name"] in self.spacePreserveElements): + preserve += 1 + + elif type == "EndTag" and preserve: + preserve -= 1 + + elif not preserve and type == "SpaceCharacters" and token["data"]: + # Test on token["data"] above to not introduce spaces where there were not + token["data"] = " " + + elif not preserve and type == "Characters": + token["data"] = collapse_spaces(token["data"]) + + yield token + + +def collapse_spaces(text): + return SPACES_REGEX.sub(' ', text) diff --git a/Lib/site-packages/pip/_vendor/html5lib/html5parser.py b/Lib/site-packages/pip/_vendor/html5lib/html5parser.py new file mode 100644 index 0000000..ae41a13 --- /dev/null +++ b/Lib/site-packages/pip/_vendor/html5lib/html5parser.py @@ -0,0 +1,2791 @@ +from __future__ import absolute_import, division, unicode_literals +from pip._vendor.six import with_metaclass, viewkeys + +import types +from collections import OrderedDict + +from . import _inputstream +from . import _tokenizer + +from . import treebuilders +from .treebuilders.base import Marker + +from . import _utils +from .constants import ( + spaceCharacters, asciiUpper2Lower, + specialElements, headingElements, cdataElements, rcdataElements, + tokenTypes, tagTokenTypes, + namespaces, + htmlIntegrationPointElements, mathmlTextIntegrationPointElements, + adjustForeignAttributes as adjustForeignAttributesMap, + adjustMathMLAttributes, adjustSVGAttributes, + E, + _ReparseException +) + + +def parse(doc, treebuilder="etree", namespaceHTMLElements=True, **kwargs): + """Parse an HTML document as a string or file-like object into a tree + + :arg doc: the document to parse as a string or file-like object + + :arg treebuilder: the treebuilder to use when parsing + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :returns: parsed tree + + Example: + + >>> from html5lib.html5parser import parse + >>> parse('

This is a doc

') + + + """ + tb = treebuilders.getTreeBuilder(treebuilder) + p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) + return p.parse(doc, **kwargs) + + +def parseFragment(doc, container="div", treebuilder="etree", namespaceHTMLElements=True, **kwargs): + """Parse an HTML fragment as a string or file-like object into a tree + + :arg doc: the fragment to parse as a string or file-like object + + :arg container: the container context to parse the fragment in + + :arg treebuilder: the treebuilder to use when parsing + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :returns: parsed tree + + Example: + + >>> from html5lib.html5libparser import parseFragment + >>> parseFragment('this is a fragment') + + + """ + tb = treebuilders.getTreeBuilder(treebuilder) + p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) + return p.parseFragment(doc, container=container, **kwargs) + + +def method_decorator_metaclass(function): + class Decorated(type): + def __new__(meta, classname, bases, classDict): + for attributeName, attribute in classDict.items(): + if isinstance(attribute, types.FunctionType): + attribute = function(attribute) + + classDict[attributeName] = attribute + return type.__new__(meta, classname, bases, classDict) + return Decorated + + +class HTMLParser(object): + """HTML parser + + Generates a tree structure from a stream of (possibly malformed) HTML. + + """ + + def __init__(self, tree=None, strict=False, namespaceHTMLElements=True, debug=False): + """ + :arg tree: a treebuilder class controlling the type of tree that will be + returned. Built in treebuilders can be accessed through + html5lib.treebuilders.getTreeBuilder(treeType) + + :arg strict: raise an exception when a parse error is encountered + + :arg namespaceHTMLElements: whether or not to namespace HTML elements + + :arg debug: whether or not to enable debug mode which logs things + + Example: + + >>> from html5lib.html5parser import HTMLParser + >>> parser = HTMLParser() # generates parser with etree builder + >>> parser = HTMLParser('lxml', strict=True) # generates parser with lxml builder which is strict + + """ + + # Raise an exception on the first error encountered + self.strict = strict + + if tree is None: + tree = treebuilders.getTreeBuilder("etree") + self.tree = tree(namespaceHTMLElements) + self.errors = [] + + self.phases = dict([(name, cls(self, self.tree)) for name, cls in + getPhases(debug).items()]) + + def _parse(self, stream, innerHTML=False, container="div", scripting=False, **kwargs): + + self.innerHTMLMode = innerHTML + self.container = container + self.scripting = scripting + self.tokenizer = _tokenizer.HTMLTokenizer(stream, parser=self, **kwargs) + self.reset() + + try: + self.mainLoop() + except _ReparseException: + self.reset() + self.mainLoop() + + def reset(self): + self.tree.reset() + self.firstStartTag = False + self.errors = [] + self.log = [] # only used with debug mode + # "quirks" / "limited quirks" / "no quirks" + self.compatMode = "no quirks" + + if self.innerHTMLMode: + self.innerHTML = self.container.lower() + + if self.innerHTML in cdataElements: + self.tokenizer.state = self.tokenizer.rcdataState + elif self.innerHTML in rcdataElements: + self.tokenizer.state = self.tokenizer.rawtextState + elif self.innerHTML == 'plaintext': + self.tokenizer.state = self.tokenizer.plaintextState + else: + # state already is data state + # self.tokenizer.state = self.tokenizer.dataState + pass + self.phase = self.phases["beforeHtml"] + self.phase.insertHtmlElement() + self.resetInsertionMode() + else: + self.innerHTML = False # pylint:disable=redefined-variable-type + self.phase = self.phases["initial"] + + self.lastPhase = None + + self.beforeRCDataPhase = None + + self.framesetOK = True + + @property + def documentEncoding(self): + """Name of the character encoding that was used to decode the input stream, or + :obj:`None` if that is not determined yet + + """ + if not hasattr(self, 'tokenizer'): + return None + return self.tokenizer.stream.charEncoding[0].name + + def isHTMLIntegrationPoint(self, element): + if (element.name == "annotation-xml" and + element.namespace == namespaces["mathml"]): + return ("encoding" in element.attributes and + element.attributes["encoding"].translate( + asciiUpper2Lower) in + ("text/html", "application/xhtml+xml")) + else: + return (element.namespace, element.name) in htmlIntegrationPointElements + + def isMathMLTextIntegrationPoint(self, element): + return (element.namespace, element.name) in mathmlTextIntegrationPointElements + + def mainLoop(self): + CharactersToken = tokenTypes["Characters"] + SpaceCharactersToken = tokenTypes["SpaceCharacters"] + StartTagToken = tokenTypes["StartTag"] + EndTagToken = tokenTypes["EndTag"] + CommentToken = tokenTypes["Comment"] + DoctypeToken = tokenTypes["Doctype"] + ParseErrorToken = tokenTypes["ParseError"] + + for token in self.normalizedTokens(): + prev_token = None + new_token = token + while new_token is not None: + prev_token = new_token + currentNode = self.tree.openElements[-1] if self.tree.openElements else None + currentNodeNamespace = currentNode.namespace if currentNode else None + currentNodeName = currentNode.name if currentNode else None + + type = new_token["type"] + + if type == ParseErrorToken: + self.parseError(new_token["data"], new_token.get("datavars", {})) + new_token = None + else: + if (len(self.tree.openElements) == 0 or + currentNodeNamespace == self.tree.defaultNamespace or + (self.isMathMLTextIntegrationPoint(currentNode) and + ((type == StartTagToken and + token["name"] not in frozenset(["mglyph", "malignmark"])) or + type in (CharactersToken, SpaceCharactersToken))) or + (currentNodeNamespace == namespaces["mathml"] and + currentNodeName == "annotation-xml" and + type == StartTagToken and + token["name"] == "svg") or + (self.isHTMLIntegrationPoint(currentNode) and + type in (StartTagToken, CharactersToken, SpaceCharactersToken))): + phase = self.phase + else: + phase = self.phases["inForeignContent"] + + if type == CharactersToken: + new_token = phase.processCharacters(new_token) + elif type == SpaceCharactersToken: + new_token = phase.processSpaceCharacters(new_token) + elif type == StartTagToken: + new_token = phase.processStartTag(new_token) + elif type == EndTagToken: + new_token = phase.processEndTag(new_token) + elif type == CommentToken: + new_token = phase.processComment(new_token) + elif type == DoctypeToken: + new_token = phase.processDoctype(new_token) + + if (type == StartTagToken and prev_token["selfClosing"] and + not prev_token["selfClosingAcknowledged"]): + self.parseError("non-void-element-with-trailing-solidus", + {"name": prev_token["name"]}) + + # When the loop finishes it's EOF + reprocess = True + phases = [] + while reprocess: + phases.append(self.phase) + reprocess = self.phase.processEOF() + if reprocess: + assert self.phase not in phases + + def normalizedTokens(self): + for token in self.tokenizer: + yield self.normalizeToken(token) + + def parse(self, stream, *args, **kwargs): + """Parse a HTML document into a well-formed tree + + :arg stream: a file-like object or string containing the HTML to be parsed + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element). + + :arg scripting: treat noscript elements as if JavaScript was turned on + + :returns: parsed tree + + Example: + + >>> from html5lib.html5parser import HTMLParser + >>> parser = HTMLParser() + >>> parser.parse('

This is a doc

') + + + """ + self._parse(stream, False, None, *args, **kwargs) + return self.tree.getDocument() + + def parseFragment(self, stream, *args, **kwargs): + """Parse a HTML fragment into a well-formed tree fragment + + :arg container: name of the element we're setting the innerHTML + property if set to None, default to 'div' + + :arg stream: a file-like object or string containing the HTML to be parsed + + The optional encoding parameter must be a string that indicates + the encoding. If specified, that encoding will be used, + regardless of any BOM or later declaration (such as in a meta + element) + + :arg scripting: treat noscript elements as if JavaScript was turned on + + :returns: parsed tree + + Example: + + >>> from html5lib.html5libparser import HTMLParser + >>> parser = HTMLParser() + >>> parser.parseFragment('this is a fragment') + + + """ + self._parse(stream, True, *args, **kwargs) + return self.tree.getFragment() + + def parseError(self, errorcode="XXX-undefined-error", datavars=None): + # XXX The idea is to make errorcode mandatory. + if datavars is None: + datavars = {} + self.errors.append((self.tokenizer.stream.position(), errorcode, datavars)) + if self.strict: + raise ParseError(E[errorcode] % datavars) + + def normalizeToken(self, token): + # HTML5 specific normalizations to the token stream + if token["type"] == tokenTypes["StartTag"]: + raw = token["data"] + token["data"] = OrderedDict(raw) + if len(raw) > len(token["data"]): + # we had some duplicated attribute, fix so first wins + token["data"].update(raw[::-1]) + + return token + + def adjustMathMLAttributes(self, token): + adjust_attributes(token, adjustMathMLAttributes) + + def adjustSVGAttributes(self, token): + adjust_attributes(token, adjustSVGAttributes) + + def adjustForeignAttributes(self, token): + adjust_attributes(token, adjustForeignAttributesMap) + + def reparseTokenNormal(self, token): + # pylint:disable=unused-argument + self.parser.phase() + + def resetInsertionMode(self): + # The name of this method is mostly historical. (It's also used in the + # specification.) + last = False + newModes = { + "select": "inSelect", + "td": "inCell", + "th": "inCell", + "tr": "inRow", + "tbody": "inTableBody", + "thead": "inTableBody", + "tfoot": "inTableBody", + "caption": "inCaption", + "colgroup": "inColumnGroup", + "table": "inTable", + "head": "inBody", + "body": "inBody", + "frameset": "inFrameset", + "html": "beforeHead" + } + for node in self.tree.openElements[::-1]: + nodeName = node.name + new_phase = None + if node == self.tree.openElements[0]: + assert self.innerHTML + last = True + nodeName = self.innerHTML + # Check for conditions that should only happen in the innerHTML + # case + if nodeName in ("select", "colgroup", "head", "html"): + assert self.innerHTML + + if not last and node.namespace != self.tree.defaultNamespace: + continue + + if nodeName in newModes: + new_phase = self.phases[newModes[nodeName]] + break + elif last: + new_phase = self.phases["inBody"] + break + + self.phase = new_phase + + def parseRCDataRawtext(self, token, contentType): + # Generic RCDATA/RAWTEXT Parsing algorithm + assert contentType in ("RAWTEXT", "RCDATA") + + self.tree.insertElement(token) + + if contentType == "RAWTEXT": + self.tokenizer.state = self.tokenizer.rawtextState + else: + self.tokenizer.state = self.tokenizer.rcdataState + + self.originalPhase = self.phase + + self.phase = self.phases["text"] + + +@_utils.memoize +def getPhases(debug): + def log(function): + """Logger that records which phase processes each token""" + type_names = dict((value, key) for key, value in + tokenTypes.items()) + + def wrapped(self, *args, **kwargs): + if function.__name__.startswith("process") and len(args) > 0: + token = args[0] + try: + info = {"type": type_names[token['type']]} + except: + raise + if token['type'] in tagTokenTypes: + info["name"] = token['name'] + + self.parser.log.append((self.parser.tokenizer.state.__name__, + self.parser.phase.__class__.__name__, + self.__class__.__name__, + function.__name__, + info)) + return function(self, *args, **kwargs) + else: + return function(self, *args, **kwargs) + return wrapped + + def getMetaclass(use_metaclass, metaclass_func): + if use_metaclass: + return method_decorator_metaclass(metaclass_func) + else: + return type + + # pylint:disable=unused-argument + class Phase(with_metaclass(getMetaclass(debug, log))): + """Base class for helper object that implements each phase of processing + """ + + def __init__(self, parser, tree): + self.parser = parser + self.tree = tree + + def processEOF(self): + raise NotImplementedError + + def processComment(self, token): + # For most phases the following is correct. Where it's not it will be + # overridden. + self.tree.insertComment(token, self.tree.openElements[-1]) + + def processDoctype(self, token): + self.parser.parseError("unexpected-doctype") + + def processCharacters(self, token): + self.tree.insertText(token["data"]) + + def processSpaceCharacters(self, token): + self.tree.insertText(token["data"]) + + def processStartTag(self, token): + return self.startTagHandler[token["name"]](token) + + def startTagHtml(self, token): + if not self.parser.firstStartTag and token["name"] == "html": + self.parser.parseError("non-html-root") + # XXX Need a check here to see if the first start tag token emitted is + # this token... If it's not, invoke self.parser.parseError(). + for attr, value in token["data"].items(): + if attr not in self.tree.openElements[0].attributes: + self.tree.openElements[0].attributes[attr] = value + self.parser.firstStartTag = False + + def processEndTag(self, token): + return self.endTagHandler[token["name"]](token) + + class InitialPhase(Phase): + def processSpaceCharacters(self, token): + pass + + def processComment(self, token): + self.tree.insertComment(token, self.tree.document) + + def processDoctype(self, token): + name = token["name"] + publicId = token["publicId"] + systemId = token["systemId"] + correct = token["correct"] + + if (name != "html" or publicId is not None or + systemId is not None and systemId != "about:legacy-compat"): + self.parser.parseError("unknown-doctype") + + if publicId is None: + publicId = "" + + self.tree.insertDoctype(token) + + if publicId != "": + publicId = publicId.translate(asciiUpper2Lower) + + if (not correct or token["name"] != "html" or + publicId.startswith( + ("+//silmaril//dtd html pro v0r11 19970101//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", + "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//")) or + publicId in ("-//w3o//dtd w3 html strict 3.0//en//", + "-/w3c/dtd html 4.0 transitional/en", + "html") or + publicId.startswith( + ("-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//")) and + systemId is None or + systemId and systemId.lower() == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"): + self.parser.compatMode = "quirks" + elif (publicId.startswith( + ("-//w3c//dtd xhtml 1.0 frameset//", + "-//w3c//dtd xhtml 1.0 transitional//")) or + publicId.startswith( + ("-//w3c//dtd html 4.01 frameset//", + "-//w3c//dtd html 4.01 transitional//")) and + systemId is not None): + self.parser.compatMode = "limited quirks" + + self.parser.phase = self.parser.phases["beforeHtml"] + + def anythingElse(self): + self.parser.compatMode = "quirks" + self.parser.phase = self.parser.phases["beforeHtml"] + + def processCharacters(self, token): + self.parser.parseError("expected-doctype-but-got-chars") + self.anythingElse() + return token + + def processStartTag(self, token): + self.parser.parseError("expected-doctype-but-got-start-tag", + {"name": token["name"]}) + self.anythingElse() + return token + + def processEndTag(self, token): + self.parser.parseError("expected-doctype-but-got-end-tag", + {"name": token["name"]}) + self.anythingElse() + return token + + def processEOF(self): + self.parser.parseError("expected-doctype-but-got-eof") + self.anythingElse() + return True + + class BeforeHtmlPhase(Phase): + # helper methods + def insertHtmlElement(self): + self.tree.insertRoot(impliedTagToken("html", "StartTag")) + self.parser.phase = self.parser.phases["beforeHead"] + + # other + def processEOF(self): + self.insertHtmlElement() + return True + + def processComment(self, token): + self.tree.insertComment(token, self.tree.document) + + def processSpaceCharacters(self, token): + pass + + def processCharacters(self, token): + self.insertHtmlElement() + return token + + def processStartTag(self, token): + if token["name"] == "html": + self.parser.firstStartTag = True + self.insertHtmlElement() + return token + + def processEndTag(self, token): + if token["name"] not in ("head", "body", "html", "br"): + self.parser.parseError("unexpected-end-tag-before-html", + {"name": token["name"]}) + else: + self.insertHtmlElement() + return token + + class BeforeHeadPhase(Phase): + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + ("head", self.startTagHead) + ]) + self.startTagHandler.default = self.startTagOther + + self.endTagHandler = _utils.MethodDispatcher([ + (("head", "body", "html", "br"), self.endTagImplyHead) + ]) + self.endTagHandler.default = self.endTagOther + + def processEOF(self): + self.startTagHead(impliedTagToken("head", "StartTag")) + return True + + def processSpaceCharacters(self, token): + pass + + def processCharacters(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagHead(self, token): + self.tree.insertElement(token) + self.tree.headPointer = self.tree.openElements[-1] + self.parser.phase = self.parser.phases["inHead"] + + def startTagOther(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def endTagImplyHead(self, token): + self.startTagHead(impliedTagToken("head", "StartTag")) + return token + + def endTagOther(self, token): + self.parser.parseError("end-tag-after-implied-root", + {"name": token["name"]}) + + class InHeadPhase(Phase): + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + ("title", self.startTagTitle), + (("noframes", "style"), self.startTagNoFramesStyle), + ("noscript", self.startTagNoscript), + ("script", self.startTagScript), + (("base", "basefont", "bgsound", "command", "link"), + self.startTagBaseLinkCommand), + ("meta", self.startTagMeta), + ("head", self.startTagHead) + ]) + self.startTagHandler.default = self.startTagOther + + self.endTagHandler = _utils.MethodDispatcher([ + ("head", self.endTagHead), + (("br", "html", "body"), self.endTagHtmlBodyBr) + ]) + self.endTagHandler.default = self.endTagOther + + # the real thing + def processEOF(self): + self.anythingElse() + return True + + def processCharacters(self, token): + self.anythingElse() + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagHead(self, token): + self.parser.parseError("two-heads-are-not-better-than-one") + + def startTagBaseLinkCommand(self, token): + self.tree.insertElement(token) + self.tree.openElements.pop() + token["selfClosingAcknowledged"] = True + + def startTagMeta(self, token): + self.tree.insertElement(token) + self.tree.openElements.pop() + token["selfClosingAcknowledged"] = True + + attributes = token["data"] + if self.parser.tokenizer.stream.charEncoding[1] == "tentative": + if "charset" in attributes: + self.parser.tokenizer.stream.changeEncoding(attributes["charset"]) + elif ("content" in attributes and + "http-equiv" in attributes and + attributes["http-equiv"].lower() == "content-type"): + # Encoding it as UTF-8 here is a hack, as really we should pass + # the abstract Unicode string, and just use the + # ContentAttrParser on that, but using UTF-8 allows all chars + # to be encoded and as a ASCII-superset works. + data = _inputstream.EncodingBytes(attributes["content"].encode("utf-8")) + parser = _inputstream.ContentAttrParser(data) + codec = parser.parse() + self.parser.tokenizer.stream.changeEncoding(codec) + + def startTagTitle(self, token): + self.parser.parseRCDataRawtext(token, "RCDATA") + + def startTagNoFramesStyle(self, token): + # Need to decide whether to implement the scripting-disabled case + self.parser.parseRCDataRawtext(token, "RAWTEXT") + + def startTagNoscript(self, token): + if self.parser.scripting: + self.parser.parseRCDataRawtext(token, "RAWTEXT") + else: + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inHeadNoscript"] + + def startTagScript(self, token): + self.tree.insertElement(token) + self.parser.tokenizer.state = self.parser.tokenizer.scriptDataState + self.parser.originalPhase = self.parser.phase + self.parser.phase = self.parser.phases["text"] + + def startTagOther(self, token): + self.anythingElse() + return token + + def endTagHead(self, token): + node = self.parser.tree.openElements.pop() + assert node.name == "head", "Expected head got %s" % node.name + self.parser.phase = self.parser.phases["afterHead"] + + def endTagHtmlBodyBr(self, token): + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + self.endTagHead(impliedTagToken("head")) + + class InHeadNoscriptPhase(Phase): + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + (("basefont", "bgsound", "link", "meta", "noframes", "style"), self.startTagBaseLinkCommand), + (("head", "noscript"), self.startTagHeadNoscript), + ]) + self.startTagHandler.default = self.startTagOther + + self.endTagHandler = _utils.MethodDispatcher([ + ("noscript", self.endTagNoscript), + ("br", self.endTagBr), + ]) + self.endTagHandler.default = self.endTagOther + + def processEOF(self): + self.parser.parseError("eof-in-head-noscript") + self.anythingElse() + return True + + def processComment(self, token): + return self.parser.phases["inHead"].processComment(token) + + def processCharacters(self, token): + self.parser.parseError("char-in-head-noscript") + self.anythingElse() + return token + + def processSpaceCharacters(self, token): + return self.parser.phases["inHead"].processSpaceCharacters(token) + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagBaseLinkCommand(self, token): + return self.parser.phases["inHead"].processStartTag(token) + + def startTagHeadNoscript(self, token): + self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) + + def startTagOther(self, token): + self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) + self.anythingElse() + return token + + def endTagNoscript(self, token): + node = self.parser.tree.openElements.pop() + assert node.name == "noscript", "Expected noscript got %s" % node.name + self.parser.phase = self.parser.phases["inHead"] + + def endTagBr(self, token): + self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + # Caller must raise parse error first! + self.endTagNoscript(impliedTagToken("noscript")) + + class AfterHeadPhase(Phase): + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + ("body", self.startTagBody), + ("frameset", self.startTagFrameset), + (("base", "basefont", "bgsound", "link", "meta", "noframes", "script", + "style", "title"), + self.startTagFromHead), + ("head", self.startTagHead) + ]) + self.startTagHandler.default = self.startTagOther + self.endTagHandler = _utils.MethodDispatcher([(("body", "html", "br"), + self.endTagHtmlBodyBr)]) + self.endTagHandler.default = self.endTagOther + + def processEOF(self): + self.anythingElse() + return True + + def processCharacters(self, token): + self.anythingElse() + return token + + def startTagHtml(self, token): + return self.parser.phases["inBody"].processStartTag(token) + + def startTagBody(self, token): + self.parser.framesetOK = False + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inBody"] + + def startTagFrameset(self, token): + self.tree.insertElement(token) + self.parser.phase = self.parser.phases["inFrameset"] + + def startTagFromHead(self, token): + self.parser.parseError("unexpected-start-tag-out-of-my-head", + {"name": token["name"]}) + self.tree.openElements.append(self.tree.headPointer) + self.parser.phases["inHead"].processStartTag(token) + for node in self.tree.openElements[::-1]: + if node.name == "head": + self.tree.openElements.remove(node) + break + + def startTagHead(self, token): + self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) + + def startTagOther(self, token): + self.anythingElse() + return token + + def endTagHtmlBodyBr(self, token): + self.anythingElse() + return token + + def endTagOther(self, token): + self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) + + def anythingElse(self): + self.tree.insertElement(impliedTagToken("body", "StartTag")) + self.parser.phase = self.parser.phases["inBody"] + self.parser.framesetOK = True + + class InBodyPhase(Phase): + # http://www.whatwg.org/specs/web-apps/current-work/#parsing-main-inbody + # the really-really-really-very crazy mode + def __init__(self, parser, tree): + Phase.__init__(self, parser, tree) + + # Set this to the default handler + self.processSpaceCharacters = self.processSpaceCharactersNonPre + + self.startTagHandler = _utils.MethodDispatcher([ + ("html", self.startTagHtml), + (("base", "basefont", "bgsound", "command", "link", "meta", + "script", "style", "title"), + self.startTagProcessInHead), + ("body", self.startTagBody), + ("frameset", self.startTagFrameset), + (("address", "article", "aside", "blockquote", "center", "details", + "dir", "div", "dl", "fieldset", "figcaption", "figure", + "footer", "header", "hgroup", "main", "menu", "nav", "ol", "p", + "section", "summary", "ul"), + self.startTagCloseP), + (headingElements, self.startTagHeading), + (("pre", "listing"), self.startTagPreListing), + ("form", self.startTagForm), + (("li", "dd", "dt"), self.startTagListItem), + ("plaintext", self.startTagPlaintext), + ("a", self.startTagA), + (("b", "big", "code", "em", "font", "i", "s", "small", "strike", + "strong", "tt", "u"), self.startTagFormatting), + ("nobr", self.startTagNobr), + ("button", self.startTagButton), + (("applet", "marquee", "object"), self.startTagAppletMarqueeObject), + ("xmp", self.startTagXmp), + ("table", self.startTagTable), + (("area", "br", "embed", "img", "keygen", "wbr"), + self.startTagVoidFormatting), + (("param", "source", "track"), self.startTagParamSource), + ("input", self.startTagInput), + ("hr", self.startTagHr), + ("image", self.startTagImage), + ("isindex", self.startTagIsIndex), + ("textarea", self.startTagTextarea), + ("iframe", self.startTagIFrame), + ("noscript", self.startTagNoscript), + (("noembed", "noframes"), self.startTagRawtext), + ("select", self.startTagSelect), + (("rp", "rt"), self.startTagRpRt), + (("option", "optgroup"), self.startTagOpt), + (("math"), self.startTagMath), + (("svg"), self.startTagSvg), + (("caption", "col", "colgroup", "frame", "head", + "tbody", "td", "tfoot", "th", "thead", + "tr"), self.startTagMisplaced) + ]) + self.startTagHandler.default = self.startTagOther + + self.endTagHandler = _utils.MethodDispatcher([ + ("body", self.endTagBody), + ("html", self.endTagHtml), + (("address", "article", "aside", "blockquote", "button", "center", + "details", "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure", + "footer", "header", "hgroup", "listing", "main", "menu", "nav", "ol", "pre", + "section", "summary", "ul"), self.endTagBlock), + ("form", self.endTagForm), + ("p", self.endTagP), + (("dd", "dt", "li"), self.endTagListItem), + (headingElements, self.endTagHeading), + (("a", "b", "big", "code", "em", "font", "i", "nobr", "s", "small", + "strike", "strong", "tt", "u"), self.endTagFormatting), + (("applet", "marquee", "object"), self.endTagAppletMarqueeObject), + ("br", self.endTagBr), + ]) + self.endTagHandler.default = self.endTagOther + + def isMatchingFormattingElement(self, node1, node2): + return (node1.name == node2.name and + node1.namespace == node2.namespace and + node1.attributes == node2.attributes) + + # helper + def addFormattingElement(self, token): + self.tree.insertElement(token) + element = self.tree.openElements[-1] + + matchingElements = [] + for node in self.tree.activeFormattingElements[::-1]: + if node is Marker: + break + elif self.isMatchingFormattingElement(node, element): + matchingElements.append(node) + + assert len(matchingElements) <= 3 + if len(matchingElements) == 3: + self.tree.activeFormattingElements.remove(matchingElements[-1]) + self.tree.activeFormattingElements.append(element) + + # the real deal + def processEOF(self): + allowed_elements = frozenset(("dd", "dt", "li", "p", "tbody", "td", + "tfoot", "th", "thead", "tr", "body", + "html")) + for node in self.tree.openElements[::-1]: + if node.name not in allowed_elements: + self.parser.parseError("expected-closing-tag-but-got-eof") + break + # Stop parsing + + def processSpaceCharactersDropNewline(self, token): + # Sometimes (start of
, , and 

q~bj$yc+VV*ksZHyn*TK|8 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

~fBn_MM8Qt$ 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