Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 88

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 218

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 219

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 220
PK!"nn4version/40d39961466b12b36285c10a47f16a90731e5b71.zipnuIwPK |bL phar-io-version-45a2ec5/UTcB[PK |bL>?G" phar-io-version-45a2ec5/.gitignoreUTcB[A 0 >&$ i@_Ўe'*u zoMPK |bLKrp phar-io-version-45a2ec5/.php_csUTcB[}Un0+r(`hvHS@dSC whvbR&gl;]hwap Cn^\MiӮY /āf[]^^,K7)?'jaCa#bpY# $Voۻ̈ay:acP0j |KLz'^S'bnvfVKoUqj{sҷ+ mhdUʇ7aq3g83dyivJNGiDN{'xz~ΏPzYG?PK |bLD\C# phar-io-version-45a2ec5/.travis.ymlUTcB[n0 y ߧ$q=P(nc&QKЀN?'jS(Rކ $:b3(Xh2Il6956GЄzkݺ0W2E'%Ş,ّ>7{=af7C !ػS&eS߯¥O/K"3˨piؠ6 _eh_N dU'BJ$ mb>b%q&z#M|I/@41Z)ίiBPK |bL>:>1 phar-io-version-45a2ec5/LICENSEUTcB[TOo6S< j[1h,i$GYkbht|>J1=P|!S>Q;oDHj|=x4vOSߟ^ԇNv_/>OgmσN=tv .:O0Liݣ 7~iBik0x{qofj3}O&mok#@BZhB=}4=© d쓙FuCШ_WR:c4Zڃ}k bE[ 5v?RL7 \~x2)"|-mδx~yFfũuf&Z/b_:. umаP= #='|dĹn?. L..̴ps Z \g,T \A^hm_5‹wT; R &%T.8!L&˴h2^n@̮RP-WةD'ZÖ4OWY˚2ҭBMiSPAFԕde\[ݣdJ2ECQMb( 0ь bx#5Ky Pxm aeb(;.E&ZU-ǛM=({i& ^&_ƽPK |bL9 ! phar-io-version-45a2ec5/README.mdUTcB[Vn6)HA$٠ nEhZH-M,n(R%) z' %'lHp83{3:píuPKSieꭠ 72gAiN*7ܼ C!t:+R-m-]t;Ji>Gω{{pEJI B<AԇТZg?aM`v6s7iGj#ɩ@?CpG`!n9X `:+\m&FhJd3[(GS)F;vDA$nTI/e jm{昲ҩ2y`o7@2EW0L,p]#K'vhe[7>}iQGUF~n7g+CYϋޥ4jY>/,)Hj@bѫ Qo  ?L9[{IamXԁ:$kx8:Z>BkB %,sPVl7imHb[]̊/QE4ܸs |RNZf!Iϊ^ i [  (J9S4quyqR 98u;u*/"ahG14ql~M&t>]8 |xZ@([!::y}v;b^7؆ߓy9FG#pټ/8MENޒ9t u:Y?ݿO7'R{,ϳ!3/d]įq?N 2h3tM@ACtKwmk]9ay'!˲ջ c.ѮOT6lJ7a,g#֓uzQlv9+=NqM_e[mx%ZVPK |bLTM! phar-io-version-45a2ec5/build.xmlUTcB[ێ0y KB(e{CU&^۲tQws$,?DOXdLߍƔLTeӟ?>szDڨ_ bZ)IaǜZ@r@!3Wji"!*%0 !̡`hT+)qRR%!`5F qfXrӻ?[f? / ޏ2}ВZ듹"˳`شXy:0|Q@zh8'DE ۔RSքՙ]ST{Z؁qb27!x>ŋo.]BE~sܓ͞i!!anғ,}vRJ*&)Wݛ+ Lg#+j5]dNVb4Mu+; ow$;[TI#Y}J[Bض7\cj|5,$O$"tq5PK |bLZ88E3% phar-io-version-45a2ec5/composer.jsonUTcB[1O06ABԩ lQ+]pls+M $:XwBcObvSiFI[r KAddb:ԭz :X4F;(w'3%.-VAa,baK}  +uQ`([6*{,iGXbD "3˝,+2h/J:k Ȝt.P輷nVU[Pobx`z it5%My lʫ5`;BzNrS^ű(>PK |bLB-g`! phar-io-version-45a2ec5/phive.xmlUTcB[mA0DmEC4'ЭI6) - (73/#w`]$l;cUf";h%Bp|ĄT%z GN@rN7ZxEV=ҜuAq=Ju}PK |bL݈X# phar-io-version-45a2ec5/phpunit.xmlUTcB[}n0 l֪/.Zp,ۡTK' Tw}w90CIq.QH ,9tOBoO T/a \w{3 1b$:"ЇhwD9#SjB "y]5T2@K#3t.@KB*hI Aowx5͋ sSs͗sy= ;iu0ʐ8J``>|Na|ZE _i9yQ'umLE[YBBLtk6VVZgUP)Q/fjUcPNȷl.Lk5]qߜPK |bL[A+^' phar-io-version-45a2ec5/src/Version.phpUTcB[Ws8~tzfBhȵf殓)6#I&oelb?H<`lz z+y@טI W8!;cx..§QjCFdc)͙/\P\mO(K&ei Iſ$_C=H?K)c@8ާ>_~\W)c0 L+-,8{Zj(R9 :bF:t)= zJ.VL_ e2H+.?$wsi-Dk'ZtD֟w(Zk'ӃݛA;Zmʍj pP}d=g!#ngsHt)i~lw 2! ))k4pzKtMw=MvM8M` `wkvZcf^)JK>_Mqp.ֽT{|Ё\,3ڗɺAϘPK@ö;*㌇*F3>=}\-YN'ncC3xᮝiYֽw#B:s\gzy8`kN%x:Ug?9xZ$i-R8jo7plVgT bp*IBhyغ.#T " ~yK2W[sOybZB;2cPK |bL^.^ 7 phar-io-version-45a2ec5/src/VersionConstraintParser.phpUTcB[VYs0~Wlf`(514Ld aȪ$&]9T/K{~{2f5\ÈK D#.QiYQϯ±'!Q {ӆ31F{zzpD~1! OsƊE L0H)> 01(4%!F0Caׁ1:x}pnYSI&`n!FAlp7tCh(V>!Z`ԒaRO#A)M,ffn,ݥ" MD漜 Ttб$ *[)5]=SixdIF֡r_>Xq,{}PBw^.L ~ݔwźn}>~YaȜ'N۫֟N btQ!db6OX \y4L[bV%l:{E~ϋ&']ů.$L34g~fCfoeHgi9"(4"9XC`}6KraQ!A>["( mԦ $"Li]Ǟ7Bmںo7WoU8T` Sy TN3솷IF% B7CK!F]Degc;) `Gl pv>ô$PxzBщХ(G!:zgc¾4썩WJ>kxl4IDi9ſt:PK |bLS@ phar-io-version-45a2ec5/src/constraints/AnyVersionConstraint.phpUTcB[}Qj0+PHbB m4PJ!^:WFP]vi.+͎vF]S5*M$Ri6Rtl }{%Z81 (e6gNaO"9XX.5qMP#7-7po@nӇ*rF^u5=BNݽf߶ C}p: 8PIG6D6T)ƚ|LhTn{X6e&jk1RK^ dIUqOz`kӷYBt Ү61,$"Ľk끓^]";~9mP|W#%A>PK |bL VZB phar-io-version-45a2ec5/src/constraints/ExactVersionConstraint.phpUTcB[mQMo0 W*?!!M$vq[:U~?eHAokC FZۏwr^[ l 'ak>h9%F'j_%['n2q֡'xIk%771Ik)QբRDZ=G%_[_)+CֽZYI|~9 X0> LdޢPK |bL(D phar-io-version-45a2ec5/src/constraints/OrVersionConstraintGroup.phpUTcB[}Rn0 +x! dmڢ ۀtEAt,L JNV Qn;]$|OZeSSY|?J8Nc= vo`r_eINg3 C4 5İ J- `gbv| $(kAͺ.k4 "\(c@6mכo׉UK MDakb)q#5IsVj`ߡRbȕwBO$RXW0@|:mwqAW.?o#H>4 RC{据LܗGq:Fq zTNx˄L.0d5J/zBwщХ(ذ{_W5Cci+ u 7x4qUZt* KiKI @{vPK |bL@n[R phar-io-version-45a2ec5/src/constraints/SpecificMajorAndMinorVersionConstraint.phpUTcB[Rn0 +8 'H$KZtXu-ӱ6Y2$90GZˀ"|{]]b A!5Z%{F_2.@S17 weN9(C%j@ YX>a^21BGFKqƂ/ F)i:%i"talǞ!mۻOЪUKpDtʬQ33D9 I"W#]'PjFЭ̂R{t`೘ڛв:ߋ<'TV'0BİRzD&fk"p 雌{"l D+>cyl3δ]ВWW竧QU8ӋuTU:ѱu9k`r>bʒoOTq×jeiXɷX:m[ެ:_և*P9z~z6)<j50PK |bLruJ phar-io-version-45a2ec5/src/constraints/SpecificMajorVersionConstraint.phpUTcB[}Qn0 +xf6V`di@AtM N6 Q=,.Z]$|O]eys6rw\ _#\檀o n ڟ9 %ޖc|Yf;*1F '0&2\gh %o #tX Au7 h+0Z "ηȲdJ>=Gd8bJ*8jn"n{E2h2,:CY ?w ;j@lঌ/2-nE2ݝdYFLl! {9J[4hz`[mҢo1=Yzg،zNtש=N{otμK3B>%_@6.6{yIQ^z}ePK |bLwU86= phar-io-version-45a2ec5/src/constraints/VersionConstraint.phpUTcB[}PN0 +|UL06 1 !!N\]"R'JM8CrqW^{U x&Bk,T!kYcػW 8^ /Sgl,;a^W˜ 20T+JAe[Cq6`SQ4㿲ie7PK |bL' phar-io-version-45a2ec5/src/exceptions/UTcB[PK |bL؈l4 phar-io-version-45a2ec5/src/exceptions/Exception.phpUTcB[]PAN@ +|j@(J!q$Nb:;NEdy<>^<9X( gKo$S\o^p+`0h 4~`Q4@UNt)@-aϸcdz~ ڔ^c[Ş}l/а|zT@EQ(iL9s* ЕsGgKy6PK |bLbvK phar-io-version-45a2ec5/src/exceptions/InvalidPreReleaseSuffixException.phpUTcB[E1 0~N1pN\f_ $.ٻkgxv#Rpv)|P<$I&0ovd^voJt`H4QgL>QHJ8OvNvFw*C?HhBp3[؊o"] THafAD7&0$.M% ":7q?ʬXDHDR:QtH8jH"фj [*cƢBo'Aч@9/ΩT:lo5࢈>O9THԈI fDJ@e )éN"# n5UԺt"-H+5ؠ1 P_e̶y5 +]+P_T%ɡ-{ܥzlF+8P$) 5@ٱ$d&%^ 50ϕD]A鬯Fd\ v S-y(5hmg8Mfu9t!abFnn앪 a@ k*ݼKoAov<ZVw^z›g5 {/xw-uPyLHgav9/Y? ݎ6n9i ?~QE5[riY~$kMRr<#d+/nHKJ Ǟ/.ZҽէPK |bLhED phar-io-version-45a2ec5/tests/Unit/AndVersionConstraintGroupTest.phpUTcB[SMo@W!mGzM( 5$òˮ!UYcBZнyޛ(N#L a!%3tݣB64) BL-8 ]Fa 8g =FtQWh++60\{)SHQYjBڬ#M !F{չ@Uu `,d:#ak PV{Ñ2 tHڒ~BQIhr3#dz!Zl :>׏tf סV JKf-'*Մ*¡t(;b8p5GXg0DpbjAEe=XZeOtQO%rgO+N=/jV %1׫R !`-R*{&=&xL V-,Sf|$qu܄Ț=|ݣxF.6Z6ߴql8Hs`_?6VPK |bL z!? phar-io-version-45a2ec5/tests/Unit/AnyVersionConstraintTest.phpUTcB[SQo0~J$B0 ƠU+Ml/MLrNX5%Yv/ggJ62."Gڂ:&AQdD8 VZ"\>}R\`{nB s&ċxXp)ϰAwJUC-.SEt-qOֵی[8q0V}e1FU:A"JY0aLM)whXED7Ri~wh4`23,USJ4k%I z$cEh'ړ%LP.hUu68m%҅؟ :/|7-ƋDe.Yس֕#xp0o0tS~PK |bL(S}A phar-io-version-45a2ec5/tests/Unit/ExactVersionConstraintTest.phpUTcB[ŔMo@sӯPCs 9 W1RU5q#zwg}e,LKFYd)di1i?(Z6M Q27+sU֊k{vڒpxgYxbHA_] p,pmӜ*2,V-e˳ h:'U~\Q×R ޟ$u~ߏkW}]S#oL!!>lթ{PK |bL [9MP phar-io-version-45a2ec5/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.phpUTcB[UQo0~ϯJ$(F_V+kjC$ƪ3ہNS.!a%y9wgߥ1MR'h:ЄY \ 3eڂa0}Qdp9 =%¹`5g>\T>LqL%fo*ÐJցL6В`8B>d( !cm(#ۊLyb0 kf j,F6RèLH"%G%qWdhr9Fpk34vD4Zw#?kd,aȘro$c\ڂE(1p>OhQF*.Zi HKjjY:_pz@ z'xm/jYV.A[,>ItڻPJ >LA [Bg9o.334Fթ{_GM+zΟl hFaJЭ1 ln7yՁ>9PK |bLQm!C phar-io-version-45a2ec5/tests/Unit/OrVersionConstraintGroupTest.phpUTcB[TMo@W!mGzM(%AAjԐ\JzW,~DU{g Ԫ x{oތ,ʨӈBXȅDߒ:qHOoXUpΌB8L-8 ]F潝a 8c =BtQhK+60\{)yဩ ,rm̑&;܇E*vsb2a30pPV{Ñ2 tH%ڒnBQIh|9!ӡ!Jt :>wt +ShEfPѾd!Hw2 E=Q4!p7NQ~pKW 5Exra o(dqG w''tck>AGޗȝMj>8Ր>ODW,^R+!Tq21C&鎃ZG u0 H\ _kNvdG'AVM7qu3)쳭_]2z,\/cPK |bLI 5; phar-io-version-45a2ec5/tests/Unit/PreReleaseSuffixTest.phpUTcB[Ko0 >  44uCBhYZ%.C,U;KD#?%GDҾS"u|2x3'Wl?1:zZZp .PXFfGi%]kS([ǪK)$6^--JB;ٞmH 2si io"uUljL' RM&L+kqVH5@V(l3EcTf}Q_G(m^6,/Eʝţ?Fp;Vܾ[?t%/߃]wYץN"y^o217C+ә|S䂋_ieSDe L_VAw1P-;%t~/PK |bL psSQ phar-io-version-45a2ec5/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.phpUTcB[TMo@W-#"(%AP{ocv5;kl iYl9y;fG_8:-ZH$N"\ߩF(AA.DJ|Am 8OVWX%bFܘP^TiU5ͤZQleIJi[2D( BFJ% (mnzm~B'1Bab[acP5t(DWIFr<2J4}'M/;%3L!'XFXS D${SK ta*I6$8|(C%4[Q٨2pyFFi :*:M[6.I (5=MVg_;K%cg0DF<1G4.+}}ҁП>4?߼-R-/Um_ciBm$s4T1VįWJ%PWR#M,sReD,A4ӲE*1d!vāU3j-ث>%>oTH:͡7c>4 >y{y f7PK |bLD,L52I phar-io-version-45a2ec5/tests/Unit/SpecificMajorVersionConstraintTest.phpUTcB[T]o0}ϯH$UHZT+jJۄ KIntwV<*ȃ#X\C zVLs'*ͥg~% &P cFu8 ak gFcNLeU`xdBtBKY]&R(xB!D&U m8n}_gTsb3[!( &rCZ%HD)Z bD]1f "P{J$&r,TLpqUBW*3ͳ.L(4pqHZ^Q<'Wg@nS$@${5B#!Dc]@m FPيuL4,)-,4%1`7d@1PHM N[-NTn~k2 48?J-xOpzbkem !JAn1@WPk,!oH4H`!|<L`jc=Ji#dF̄ nH-| IF+hEu;44P1<0 {g[{mGwkwZPg7emuv<v \bPN9 =s 9j )JիVPΟ6cLCfR!3אY^2?|0.)KPͤXfQV{^& R+;ZN1kgW}*+)$/N_}]hˠA a .j\IҘ-ھ4a/Anoۓӂ!DSyy7eUe}&DR+*KXvRFVc8ꐌ x+9s*+78|;X]kŽu`IjZOe?8+/)>L06VP?6)Gew+K/;nK5BmvdZUܑIX'?c)fƑA՝з"IrJXgVPzc/?4wu,styu]=Ӱm+W_ݰ.j?PK |bL phar-io-version-45a2ec5/UTcB[PK |bL>?G" ?phar-io-version-45a2ec5/.gitignoreUTcB[PK |bLKrp phar-io-version-45a2ec5/.php_csUTcB[PK |bLD\C# }phar-io-version-45a2ec5/.travis.ymlUTcB[PK |bL.6(i$ phar-io-version-45a2ec5/CHANGELOG.mdUTcB[PK |bL>:>1 phar-io-version-45a2ec5/LICENSEUTcB[PK |bL9 ! 4 phar-io-version-45a2ec5/README.mdUTcB[PK |bLTM! Aphar-io-version-45a2ec5/build.xmlUTcB[PK |bLZ88E3% phar-io-version-45a2ec5/composer.jsonUTcB[PK |bLB-g`! phar-io-version-45a2ec5/phive.xmlUTcB[PK |bL݈X# phar-io-version-45a2ec5/phpunit.xmlUTcB[PK |bL phar-io-version-45a2ec5/src/UTcB[PK |bLdIg0 phar-io-version-45a2ec5/src/PreReleaseSuffix.phpUTcB[PK |bL[A+^' vphar-io-version-45a2ec5/src/Version.phpUTcB[PK |bL^.^ 7 phar-io-version-45a2ec5/src/VersionConstraintParser.phpUTcB[PK |bL 6 K phar-io-version-45a2ec5/src/VersionConstraintValue.phpUTcB[PK |bLvށ"- "phar-io-version-45a2ec5/src/VersionNumber.phpUTcB[PK |bL( $phar-io-version-45a2ec5/src/constraints/UTcB[PK |bLWhgoE $phar-io-version-45a2ec5/src/constraints/AbstractVersionConstraint.phpUTcB[PK |bL Ch*E &phar-io-version-45a2ec5/src/constraints/AndVersionConstraintGroup.phpUTcB[PK |bLS@ (phar-io-version-45a2ec5/src/constraints/AnyVersionConstraint.phpUTcB[PK |bL VZB *phar-io-version-45a2ec5/src/constraints/ExactVersionConstraint.phpUTcB[PK |bL  Q q,phar-io-version-45a2ec5/src/constraints/GreaterThanOrEqualToVersionConstraint.phpUTcB[PK |bL(D .phar-io-version-45a2ec5/src/constraints/OrVersionConstraintGroup.phpUTcB[PK |bL@n[R 0phar-io-version-45a2ec5/src/constraints/SpecificMajorAndMinorVersionConstraint.phpUTcB[PK |bLruJ A3phar-io-version-45a2ec5/src/constraints/SpecificMajorVersionConstraint.phpUTcB[PK |bLwU86= a5phar-io-version-45a2ec5/src/constraints/VersionConstraint.phpUTcB[PK |bL' 6phar-io-version-45a2ec5/src/exceptions/UTcB[PK |bL؈l4 K7phar-io-version-45a2ec5/src/exceptions/Exception.phpUTcB[PK |bLbvK 8phar-io-version-45a2ec5/src/exceptions/InvalidPreReleaseSuffixException.phpUTcB[PK |bLO^{B j9phar-io-version-45a2ec5/src/exceptions/InvalidVersionException.phpUTcB[PK |bL`rP 1:phar-io-version-45a2ec5/src/exceptions/UnsupportedVersionConstraintException.phpUTcB[PK |bL ;phar-io-version-45a2ec5/tests/UTcB[PK |bL* <phar-io-version-45a2ec5/tests/Integration/UTcB[PK |bLöI R<phar-io-version-45a2ec5/tests/Integration/VersionConstraintParserTest.phpUTcB[PK |bL# @phar-io-version-45a2ec5/tests/Unit/UTcB[PK |bLСD @phar-io-version-45a2ec5/tests/Unit/AbstractVersionConstraintTest.phpUTcB[PK |bLhED Bphar-io-version-45a2ec5/tests/Unit/AndVersionConstraintGroupTest.phpUTcB[PK |bL z!? rEphar-io-version-45a2ec5/tests/Unit/AnyVersionConstraintTest.phpUTcB[PK |bL(S}A Gphar-io-version-45a2ec5/tests/Unit/ExactVersionConstraintTest.phpUTcB[PK |bL [9MP EJphar-io-version-45a2ec5/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.phpUTcB[PK |bLQm!C  Mphar-io-version-45a2ec5/tests/Unit/OrVersionConstraintGroupTest.phpUTcB[PK |bLI 5; Ophar-io-version-45a2ec5/tests/Unit/PreReleaseSuffixTest.phpUTcB[PK |bL psSQ Qphar-io-version-45a2ec5/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.phpUTcB[PK |bLD,L52I [Tphar-io-version-45a2ec5/tests/Unit/SpecificMajorVersionConstraintTest.phpUTcB[PK |bL 2 Wphar-io-version-45a2ec5/tests/Unit/VersionTest.phpUTcB[PK..[(45a2ec53a73c70ce41d55cedef9063630abaf1b6PK!!5manifest/7594b0b62ecd9d09967f6a8274ba7381e265b200.zipnuIwPK bL phar-io-manifest-7761fca/UTdB[PK bLVpH:?# phar-io-manifest-7761fca/.gitignoreUTdB[A 0>}R*$jI_:סteyYk3Go< }p|PK bLKrp phar-io-manifest-7761fca/.php_csUTdB[}Un0+r(`hvHS@dSC whvbR&gl;]hwap Cn^\MiӮY /āf[]^^,K7)?'jaCa#bpY# $Voۻ̈ay:acP0j |KLz'^S'bnvfVKoUqj{sҷ+ mhdUʇ7aq3g83dyivJNGiDN{'xz~ΏPzYG?PK bLD\C$ phar-io-manifest-7761fca/.travis.ymlUTdB[n0 y ߧ$q=P(nc&QKЀN?'jS(Rކ $:b3(Xh2Il6956GЄzkݺ0W޸rcIZKI%B*`UdL~[dNP4Ky@0E#y2J1!uuwh rZL$>&&3حq 硁J#TlUruBq\>Q$ӎ:l$%'s1Kv'M~'PK bLVh1" phar-io-manifest-7761fca/README.mdUTdB[Tn1}W *RRv*TBT@D{k䵷_ܚPfvΙsFg>P%fh!׺iB` \ mMM!n\ke*4+, uB+fWb\}ʖ-Ĕy!9unG9CLT=c ;N UluhB8sČwB4p9GOp-vD&򐫜R^-2mhUv(i{XTV[:Pn)¦ZokOdΖ㗧+sO X>=8 fA쨔) |U@9W RfԆHͨA[T[Ӱ))V|)Yu1 |B8 P{"7q$9J6^z`DFƫ .މa/az>>.BG >27y@ L&户6gyՔyϞ2_.IngslN*ZCW=7vtpG~PK bLnt" phar-io-manifest-7761fca/build.xmlUTdB[U]o0}WXBm 6UZDWmo$allE@\sϽ^7 mAi*xDHy/?{|7 0 pm0 aI,3}X5䞞!*8>~C61+94p,g_EIRV,DD$@!U}hpR|%q Z>F0Aº\}rISW2bYN[¬[2B~QO)G*D@^b$P*(c˲{U/BX GyHQ~SB#B* d^g9 La\m<ph$ioZU%m@9CL/b]"唽$\Ӌ m(Jp5?UD㢼Si͔|d> *tEPi G!ǙgWJ/LrV|l}jMsivI[Alg]1ŜY3tzCwrjM3DOgvu&5F<;btd~pb].āOi1PK bLR|O& phar-io-manifest-7761fca/composer.jsonUTdB[Mo0 NP통@NICA{XJA$}-z /0I@h|Im7,]$ӝ2V [i֐R+i DYcʂ[ &trCm><\J6d|`x_,ECgGwl BL|N:i*0˓jiU=mHYG,HKAOYkxSu\721Oywr^H{J]Ώz-C/GwqB0i(J`q[]$K'p#9SXeB5ݤQ?3#qH[2+QIhVZڔ:.rkUZذ}/?PK bLu*]& phar-io-manifest-7761fca/composer.lockUTdB[UMo0 WmݜvZwځX,y.k'I;iZ`HJROpF'X|oZpCr.E %CI9rR&V?Zb^cb K@J@jK%`Iameq@KUY):Rz3E$ 30F%{ >h(z/(Q;2@mU SbX@(mX)A$ф1 'l =gImХ#g:=~ ^ؠ*@\w Wrۚ] J7NiuϮ*bmwZ4ޝu959jw>h !LtPl<0?O&0 4uƍ=]o^xWF!bK_Mipȸ&B\?sUQ5hB4JNmU<ӠWjކPg)y(MusT5ZwEaZۇzd3e}ނS .aQ@": QC=ZgAK$5G.Gc ."ۆG ;WxBU]}5j9H k[p _^ ҵ/9j^>/+M Lp 1Dt;q>ⶎojU8ׁv#fTww3Ea3ܣ \ynh-{%h])\li{6\]O/ojdn4RL`2Xp#'GJ $ [fd5o=br_`+?<:"$?ڵϖQM)&Em^8@Ou^Z;DC8d fn+`{Ón1w!c5"1_yNkB6Ń_wmPK bLr$" phar-io-manifest-7761fca/phive.xmlUTdB[E D|f=4/Ы iЅqf$Zc&<"xavg%Cc ̥^*2fhX@nK(O{/O*li)OwD*9U+ݷ PK bL@`$ phar-io-manifest-7761fca/phpunit.xmlUTdB[}MO0 U4BS[4ƅCpMFtq;t{ҮP)׏d׻m|'.\$4s^\b5U$Ҏ;mۦy]YWU'+A̒ j ( {~|I1z: M ȋRId^5gKkT럂JRՔMOJxfo5/K |J!jÿS&mqik x+ŷi龸7~ J`K$EqPX%6EoL!FNr$mmƣV#މe:5Gl|0PK bL phar-io-manifest-7761fca/src/UTdB[PK bL@7 phar-io-manifest-7761fca/src/ManifestDocumentMapper.phpUTdB[XKo8Wp'7E4}z%:*SZJ,wHQ|tn=5 y0e;9;S8U5An1١MMjGx 7g5]ט~%Lptj;|,r>-%a+ؘ4mMBkҀڀ7 C$h5ʛUw@rB9xAw cQ5t`# <(w7kJ,J,樨`ն@(a6* dB1dqCLElm-'4hhQ ^58au^c`M m!OKۂWO-$Vxܲ ]#6yHd`M8H7> hV;Q9tZ[5;){Uq'2Cnjnđ\LVˢ3C2wqו"%޿Ĉw FA(DbR7;jX ^!ɨ܏MߍpVS^R?=I%0lk^,S;;6o`6g&PK bLB8 / phar-io-manifest-7761fca/src/ManifestLoader.phpUTdB[Tn0 +x`;H{dY+.LlI:nit"QQ)M#c)"٠ x(dAOHUWd9zٯ9-& :/Q7j7LLT4^֨(p-h 6VnKr 8 Uh[ZM~Iڵqw׫UMٗar鼕S;K>a;n &)XEšAXtEB`q1G#ۙy1FAF;Q|cUؗVd'A&$v6͆aBDsJV7LNl>[ J[ESh $M/5 .!~6;~^E Iz^cQp|jYM>'oI'G#Xl_HNJ?OQU+`l8`e1Lߔ8_;{Arg}݊Hz#sD` B)D%PK bLtDT\_)gk 58Ɣ$9}CXN Tr; ȑQ1Y MS As4p " %ǂ͹UYETG*IȤl+#S9dPQdFqawA. $rŸYQe)[ﶽL@AL$c?PQy @$|E@JmzVWz01oS2֚ kwY+J~,_־-7+~?&~x} ܈؄4+L Oxb0D(A͖iƓ)WG77n2$7h*0`/Ι/j>yC\EtIrm\Jʚq&#גLF(YmzBTe$O]Ђ֤DL`B Ȁ񈌦IwOozbhy %G5Q(S#Rˏ\3t{s%]Ӻ`~L!-:ft9燔\am܅آdPLFԃT`䎶3]V`hj^^NJlpAD8w@ȳ%'YӔ iQ:i-5Lo` +TuȐ@t;ܴނX >TbPWA(1qx-a y^ *M'|o֊PضJAj`ѸU|\EJpR⫙t\M+_J~g- b&֤'\o!y!P*]4m\~Up|"nJ$B|SE,c(mK9fk,y#-w^_U}:N3ؚxxDpf}~.WdWiݬz`iehp@2o{lt94bpsi"ޜ:*dCձ4$:I9yw$v%+aI*?PK bL) ? phar-io-manifest-7761fca/src/exceptions/InvalidUrlException.phpUTdB[]jA )rيTZThKΛuBg3$w(WCN9  3B͑-fTGJ7ImTa`Q)K=^ꑧ!ij/Q^i1Fw ܰ9s`b*?wCDRܠq!#,ڞp{]-eie hp@j[(rM]yO0vN!m7'zp +cdXQ:W؜ܔpݟPK bL_vE phar-io-manifest-7761fca/src/exceptions/ManifestDocumentException.phpUTdB[/(KM-.HLNUH,̏MLK-.JI,.V '數V$d)V+d"d2s rRA\\PK bLA c|K phar-io-manifest-7761fca/src/exceptions/ManifestDocumentMapperException.phpUTdB[E1 @F~N10`B?;;8#!wb=ޣlD*n,۫ͣh#Jϖ Q̰ GEi88ӮQ*R8?PK bLw/\uD phar-io-manifest-7761fca/src/exceptions/ManifestElementException.phpUTdB[/(KM-.HLNUH,̏MLK-.JI,.V 數V$d)V+d"d2s \\PK bL8L:VmC phar-io-manifest-7761fca/src/exceptions/ManifestLoaderException.phpUTdB[E1 0 ==%/lxw'0" 7::x;1P+Z*ʸtsl'29yC/PK bL$ phar-io-manifest-7761fca/src/values/UTdB[PK bL7$~#3 phar-io-manifest-7761fca/src/values/Application.phpUTdB[]Pn0 +| m4m]֥т%U&|򞟗 , pl:oøoȶ$s%I=udC( f XdxLԘ|ptOPP*m<{=m^j, 1AcD[eV:}s$cMjP ޝhaL0%X @?B$8\("I nʡ\zd:*5*H̴?PK bLBc7 phar-io-manifest-7761fca/src/values/ApplicationName.phpUTdB[TQo0~ϯHw t҆&1 B۳iҴ}}g{I*#hÏx@bڂ{T.134K@[kX00ZVu7ŇqŌL,Q#"F lQ7L:h$5!+~k-0Bf "F-ʟ:<'./B XW*ns!;,uDEm(FEQ+ER<'vD<2 MCgYAǚy)(IXs`6Mk"lee`*i#%Az=X.bqjuw@)5NK Nɓ%px=iіZu+yWɊ٠ONp9S44\C%PgPKNuz nx] #->:!fqk'K޴}VBZ)EaB[=zlA[M~ףqhZ-7B`ŒyY]v5zPK bLW8%. phar-io-manifest-7761fca/src/values/Author.phpUTdB[Sj@)8uPp3FRiVڄwF."Kh۪ͯf &2JSݢ%|=؟OȦ$/W Q>5/ra ZLaM[b9cadۚ[r{F": u m_U&'5(7tHLJo*JBz(gAJ;FfYؐoQdY^p)gg6[{tMxוfn٣EiU40bk/Mk%MksS&J!QRv75"wu+vc$87YFt쓁e4Gو]'ؐg)G\xw'g|5PK bLGr8 phar-io-manifest-7761fca/src/values/AuthorCollection.phpUTdB[Rn0+mM)j )7ۇR\({z4pfv姦j,|LXd_C{t I65;;XWxzbPK 0V*Lt!.kt :#:"(Zk!6e%.k2rApx7B {wHՍ, 0@nI[NF*h #X$ÚBZ<*I2![KY4V59 kL-abd*Qеͺ]=0ް9+u|A=t604#<$#|:Hu'p=4:s+&iٽaL$qa@R=AZYL5Rl~wĽf?|sPK bLa@ phar-io-manifest-7761fca/src/values/AuthorCollectionIterator.phpUTdB[Mo0 <ٽY0AAt,T JV ]] .(W~:(%нF/JQ_oȦ <\[G`zgQA 2|HL4L& 7&yB'o֕rA q| Bm ںwMvdP` ě, 3R\9)ƂI0n(ԨEI[ T8k)oD,<6U!V_5]eͷU{aRpmiTuuu7[;V'b.pWSݬƧٛ>|&yie[|igHj{-דDϐ9gg`h>¦%ݟm<?Q^,= ʣ͎31ctzڗ?'PK bL-ʼn8 phar-io-manifest-7761fca/src/values/BundledComponent.phpUTdB[QJ@)ࡖj('LĬٸ-0N۪ \ 4l [zlJrqv…cYFN{,Kaa@wKBXLGN(n:]Q=駦j81Rl ?+V"]4gG {*9ϳc7!Af9N))YΘl*(o9'"%O:cc>Ks:ҳ9^^_PK bLtbwx< phar-io-manifest-7761fca/src/values/CopyrightInformation.phpUTdB[QN@) $IИф n\vY1""{̷lȋ(FЅ\yȔ&ZcKl'3'9G6aD [ј6%dpN!ŗSM Z%d0ukdeMQͦc92lC<; L)l28 .!!J "kJ]%Ij+#wUM֔zWpjLp OLEXJC3,5b;$iK9öMyʘn5Gj[{GԖ#\HeEαz_FzWkE?PK bLcM- phar-io-manifest-7761fca/src/values/Email.phpUTdB[RMo1ﯘChlԕHUSհ;Z5Ъw!T_Fy3ͳ& FnFHo-B YwTCXE Q ,L~[VA*B L)1gbҝKz%\&ڀk /%TeĶu)*RP6;tB10rn/cuQqeעZuFlµ\a;"&)X02;r¢,$Z F12|ڦ$Έ=: }<岏w3R q ڣu 'SUAYVZh_ä<{vS NؤۄN7:A_Zg'{[] JEjL? \,u,_r ‰A/ >&PK bL0 1 phar-io-manifest-7761fca/src/values/Extension.phpUTdB[T_o0ϧTQ1ZĴJ[52$flv`sR//N|߿\2h  BjzKV?KrCo?; .%_d ,=4 @$ ۘ11i#)n$ZRQoOڂ/isoŪ*)2R]kB!0Fж:jYʲ/y+S[ pN6#&)D0Nkry3i owI=$PK bLFz"/ phar-io-manifest-7761fca/src/values/Library.phpUTdB[]Qn0 +| m 4$6M.nh!g Mܪ\˳|]4eacghyۖ̕s'^obIDWս74UĢ7İLw`GtF[A:6;uWN}䓺m3 ~*X }fqҡ46 * 5p鋞#5PC Jc<)ETD cj)V|M5(bȪb܈CR'j׽qd:NcδPK bL*h/ phar-io-manifest-7761fca/src/values/License.phpUTdB[PNA W$hLԛ )]v0t v6KBsi}Nnƃ VZkd_KOLIAF L^އ;v3XLP?*f ,~@+"QTԾTBN2!VNj;KQ˿wuㄭJ^gfΜ_NޗY,,> R#X2Hsur> DqWn~8F}˰$J#jwkatJZDF`ҍ`3iW0-ð> 4Nkiȫc& ;tǾڐk9?*|WJ97~#[Dm_hdz{&y7ל?)ѓlxv A:X <'A,eV"+ol/&:zTNd{U3[ҍrFy_ۡ몧lQ/_PK bLFCwN`GCHK̬"EINF{hYdG8ۻ?QBw׎h`UĭwPK bL6VAp3 phar-io-manifest-7761fca/src/values/Requirement.phpUTdB[]N0 y a14$@qb:qI'v)><''(oD5x}xB᎒ 8%ܪl{RKPa7^t՘Q2)T,l1ܒY&`}MGoB I*WHt@ K(FX/4=vWͣ ZN\gF6_:%6TZ"X;'8PXYDWαi7^3@b~PK bL)= phar-io-manifest-7761fca/src/values/RequirementCollection.phpUTdB[n0 ~ zHy]ڠtC@۴-T\N0 }QNzY~'JM$Q#Y:7 yWЙ\0jnYt`eN7cxtZbCaK;F玴3{/A*2bSVr&#\ƠAmwa1t+K[ lV(Jw[0I5xԢ$,?5L59{k)$`jEo`ji x-Kw:&Q7+lw];nnl ~Z:Ajoeny>sp"MvVS&13IUIAdov|ljTnDW~{3ׂ?||5PK bLnE phar-io-manifest-7761fca/src/values/RequirementCollectionIterator.phpUTdB[Oo0 <{,kaaXwKX"yG{F:_I|?>yd2N` +4@YB^LIATh|XtO`gUA t"1L`kK} zi{A*2Z ٬+tX :+=oPwFg[C]ӪY*aaEvF*8D0I 5a/$-G4Lrr뭥!Y1›"5wJ@xܮ6"7Z7vlQ$[Xbq2ܠ4|:fZjx|̽`b.\]~;k;ٚmHGm0 θ"p9o:-`2m7+fS1t`kH≞5pOY5'[(V'_O9f7PK bLpn, phar-io-manifest-7761fca/src/values/Type.phpUTdB[Rn0 +x! lI +Z mӵ0EDY0G{vCuE>G>s9V̧p_Y:@({&ޖr;a'ks:661^'3&Y´?EvLw=nV}poU9Ra{NgĝC?o˲[SƱ>@f3%{"O/PK bLf]+ phar-io-manifest-7761fca/src/values/Url.phpUTdB[Rn1W!@4|@ $D]VU 9EZ Uc63oyc۴hVrP+M E`k 3U^ه;w0FOon5:' 0vom57[4 >5 phar-io-manifest-7761fca/src/xml/ComponentElement.phpUTdB[PMkA ϯȡ?@~`J⩗n:YfRX йd}S5fxk^+@cARaXgd[R``)H1j>.I6a RqS&8&)jdl%Q|9}@.ٜ8\PX}P!Tlop{Z-2:, 0BaBTZsD߆Tt15:ȘauXj @B\D0/}Ms]dv$kIn2fr6ER\uzS5wK!?MӏPK bL#I4? phar-io-manifest-7761fca/src/xml/ComponentElementCollection.phpUTdB[eN0 y 8`ӀUCL4\]#R'JB{w}/_lW1w&Bk,xka>^4#O.!jZO\N`l4& Ľ F-]l"=/p&kv']Ǡkj(*ulM@i}=ov[%s:Bc"S%;9KF`>L)=F%98\twkYu^𛑚+ |DSN!7*l9AI+&+]S U\b~|APK bLZl'4 phar-io-manifest-7761fca/src/xml/ContainsElement.phpUTdB[QMO1W( "#'/,Xv$YLPCK޼y;TuzV|%GE)0aY+0@ͽ(n4F:|8\!f+ 7pHIPAmR9g3[p z>[[xwa>MRD Fm`P+h!#So b<Ҙa0,h9NM Ъ}8KaI#ڝ{@Rdbk{}FWSL:;‡KBIH՟?]2NNS|>f(շIi]>BnQCju PK bLY5 phar-io-manifest-7761fca/src/xml/CopyrightElement.phpUTdB[}N0 y G0 ƪ!`BG.^.S%.cB{wNb|Ib3le.b]y]+g!>!Lla>sFQLQϳut}+Zc TSi3mLt )n|A;w!XPXˉ2- |5h׾{|բ)Z;LP$ѭkvN8RcNڨf0n)Uɓ]{L ^ӖX>HГ}ӀFUU⼑ Zll"ԑ* S[`xd8kl\\k:_D~lFG|tn/Y:%OM/ߴPK bL'*6 phar-io-manifest-7761fca/src/xml/ElementCollection.phpUTdB[RMo0 WЃ˲Yhݱ@t,T NV ?8`LA{f+Rm.3~fN)D6V#-AJPދ=Ih~O-|4uv WlI5>(- Ty_yYbF *ZiuD߇tPEicc[*x1!I%wdh'ĕZ]_GCP ;IX\T7lC<~pVeY69\/PK bL>B5 phar-io-manifest-7761fca/src/xml/ExtensionElement.phpUTdB[PMK1WA-XP*v$$H*<87o7z5*s#410Z V7y,WXK2h(pQ#R5ZDf ,D7tI\Quh7Y͙z2ppK$cr3]ˀ+QRƅY;;B5su-cdnaj921հJG] PM,v= xqR`!ꅡ,epf/R>\*[N\8 W\K>y}Aߓ?]*-~~5PK bL 943 phar-io-manifest-7761fca/src/xml/LicenseElement.phpUTdB[PNA W` `01=yvىCg3"ۺ5l*@sA\aXGd[Rn7,0!SczI֔a (8T];d&P}> p6'z>P>"T4Z-֋FtT(l [>tQA 0(֨ŋFcՏ} q:e[1 [͡no"p8(c&gu;4p4?ܯ|PK bL1 5 phar-io-manifest-7761fca/src/xml/ManifestDocument.phpUTdB[Vn8}WL N_؛:MN>0hydH-Im}%SJuf̝gi8۔kHx@SdL]o7Lbx@eL|Ge41z?_55N`+ g ,2g69-7| LY,ߤXCcT93\# C8WrWťUUlRfiXsm_pMJ_(Z*F2Fq.B>J񯛏2.st.3߃8cZC#艥\005ЧqAvF\l;IH%q[(~ `-8UlTFԚ*aoRM,ƨ/9txJ,^H0nI>UON)jsF l%OTMρ'K|ʇǤJރG!:a([4R#ZH߷O[R И%֭ձtVl{0vW(Ld|EߗK`JGT91j ש1 '4X4lMԚl8zd^]y櫴eSL`2k(m4^KUdt"/( Pa\%hfs*(\ɩ۟V+>l_NM)ezF {vOԳ[v狨 Z9pU /(6&Tvg7jд~.rxu(ICvźrnp+)1,ɪCC2Ub;"AnCv!P/~Y2l:)q6+XSn0N5@#0#m~)r5Gsuވ5}PK bL>E phar-io-manifest-7761fca/src/xml/ManifestDocumentLoadingException.phpUTdB[RMO@WD4)4HD=WwuT' i3o޼)›<TYUF w3E1ULMXa&P!v(eO"ZNT KILȨ$NrԺ-rpm\JY)Y%d*$m ) PlkE:οZ[UTu.E)X6ʥvXSrH(SӘ-P}R2*}믘 %ZAI;`tچTT2td`RHƿșF-5,gZ5:LOO{2s7vؔ\j"狶.bs.>4,fmY^JKꜝZJ N#•\7kY5y]󅬕ń2!? |նw.p÷ۘ%+YkzNړm>. PK bL:6X 4 phar-io-manifest-7761fca/src/xml/ManifestElement.phpUTdB[UQO0~ϯ8$PӪ4heݤi^kMҔʽD|s9O ЃH@oδKIrta܅s-Ƃ?SFy,pԇΙIj85%F l;Q/3&e˷:W`Sb?hL-0c\>P"F{wWed:ʒm,7Vyaq+nS:vU)] ,C3l$ D`6zJW3 4~]_Mg0Njmn(4LD> :t zK1෣k~,>VJZƥPxt[ާND2aY#U}zbNW2vlm}gBl7پkȟP?qڟ 9MmmwiT5sKe1vJK[=^@?(0,!4K {uRf8ҌqV"I.\wfnig:#ʂAz ULbd pQ0b&5 tO'ՙ}i˾[衒t6fHX\ eM o듚 [,4(U=qYx= ZЀ[&c7]J3U7fBmrv vv4(pSz_g{x7zzK޶ҵzPz.U?PK bLp{:f/ phar-io-manifest-7761fca/src/xml/PhpElement.phpUTdB[N0 y !<@ډ׺KDTˆ[!M|Ilmcx.A< FPx^]EIجUdG~( >+ivO$n4$.u0!8mI\b {(B ]At BQ\A7Gv?<]~e(Kݪ*aڑB A%uXSjPM)<&T V3? h4J5*\tbaMwH GәBWSDR6z.'}ͧŔo .e6R4U54e5Y/`?#Aiس{5 PK bL(ͷ<4 phar-io-manifest-7761fca/src/xml/RequiresElement.phpUTdB[]n0 y &A1biChKں$Zt;&}%OӨ@>PY g`gt7M#/2xp0p|wV2}\`8ԚmrB^|6U9{0 Jp@U>Ԛ! -˿rݯRl4QG(m`󖱄e#/bGm(P,+Eh)Y4Qp:Fx+52RECER zweٕJ@@4q{ND?ΤXW.N[QfPK bL phar-io-manifest-7761fca/tests/UTdB[PK bLБ= phar-io-manifest-7761fca/tests/ManifestDocumentMapperTest.phpUTdB[W[O0~ϯRZ'P*셢$Zb{ӖM9!$旴ws~C8 9B,lr)Ts9&I TcAh*PaXFiuDL4,OZ@ V'⬂ `bh=&[ }{UF&* }hI1nM'1&Q"5ʺ!*͞W, qo5'C}g 7%҅ ih/zZb^N2עBEʫg#@OTBoH#,%VX mB}]S&B &~L~;HRJ TR cMv`u=!2Y+E~YY;Ń%ȶ-$3eO,ܐjN@_0fWJzHNXtLDP8(SZ@u(,HӖkS9u0b9%2gR|dp9OY2[T֬?\*;$i`||Gq(N@rZDXSTzo>ۂh&  4ө{"&Z cat@`e}CTrvb8 us@^4!3,-jM oZ00VJNMd@4d"-;M03 }/ՙ*j O.'Sh%z9+'Bfx{4eJH'DX5Z,rǛJ^ԔqamJkc)- I~`XSV3#+>ГZW4R2;>~)AN83Bۀ|݄u1c߼XϏue4^>6&N-ӌHN`r Yg 2 rpV䳱6;.eʅBF 93wRRlwR1[O: E]wc]hoI_Ͼ?hUbPK bL&1[9 phar-io-manifest-7761fca/tests/ManifestSerializerTest.phpUTdB[WO0~_$i{(H0!~L(LRl&mиlyIb;]5IBUJB.D9lDLџT*&xy`sC[(` jtpE%#1M%s64f!ѠlZXV@_1 SM%G1M(׮8'cg7ү}:Wď3+[xN)ުϗWˮ^u, 0WqS_Iu&9<0G#DHp ԕA.o~~Nwx98[C52zWZջn.V1p4?*P2,PΉ)"E>'BZfPP荒4-K-gڥ [3Oy 4x[ְe^c'sbΛ7|37W #Ep E89޴PMs Mc{]>6>Ac20 wxENwX&5C&Yj.~mW||폐fZZJ$4$ÝNE3H}e|Wï|ߟHk?̔I^zPK bL( phar-io-manifest-7761fca/tests/_fixture/UTdB[PK bLo:2 phar-io-manifest-7761fca/tests/_fixture/custom.xmlUTdB[]n0 }G$4mOPZC-5NS4~ ('϶mdn԰|!rxZm*.laL)'b61:3iBh*^RǢF:G5ܾ >bIotϚ|=eLC'Q8ށ㴜ΑDZ3Glrj]wSPK bL V&/G phar-io-manifest-7761fca/tests/_fixture/extension-invalidcompatible.xmlUTdB[uN0 {(6  nhcHHKኔ^k)MBN㎮݄%|7[:#":F 6xIj|VsPK).N[A$5 _V9KmVwK"L;oO;W =?~'T;\5aiv Rbl6c uaT/ԑP[ FxzG5@+qu%Rq6Hm_,&h9?4UWr ^.zYs_zN?{PK bLD%%,5 phar-io-manifest-7761fca/tests/_fixture/extension.xmlUTdB[uQK0)B("i7ٜ /Aڃ4Uovؗ-":F ۣr|eM@`㒍hZ?o. =2yM̂AO?Ye?PK bLvyP3 phar-io-manifest-7761fca/tests/_fixture/library.xmlUTdB[]N0D  䤈R$$ā…IJڬDzPR<}c訔ř@k|}ϯʴo dP6FJ BT#D:v Rd:(ep(lx"8䙟㾍I3}lπ,6IԢ-@ۻ"_[gl\Qm֛揣bGp[ԼL%Ŭ_PK bLvyP4 phar-io-manifest-7761fca/tests/_fixture/manifest.xmlUTdB[]N0D  䤈R$$ā…IJڬDzPR<}c訔ř@k|}ϯʴo dP6FJ BT#D:v Rd:(ep(lx"8䙟㾍I3}lπ,6IԢ-@ۻ"_[gl\Qm֛揣bGp[ԼL%Ŭ_PK bL- 9 phar-io-manifest-7761fca/tests/_fixture/phpunit-5.6.5.xmlUTdB[VMo0 WhJv놤uanj5IΚ?~9؈(>WOJ58/^$tй)^-_?ҋdnKn~!X p)|`oОh`VZ}'ͩ(MOn &j/SZwkQ Iu b$,iJ ,С?tbcvL. >| gu k7¾lMQ%]/?dNUMGF 7sRdLKƹ|T_GM?;7ϋpoPUZAindBŮ no??AЇ j'ItȽMH~ODefć @7 ˛Em2DAP.i#ASծN]4=vrś_tcǓGJ b&.L(h,73R=+q pK>ݺ@j 0ʟUQ]-灁Ul^cUttWh{vcDF:jDм;щ]aF]s0$]$9y;pŒ+bc.  +Ÿ"^BTwjY p eHΩU>Z94׏B_/<<E8 &)k T񨰈V9(ֵEdwgkTT?EUMe\XC#,aML$LU5@^)N$PB (璴G~"MKHYeJSTT6wǣ@Hnɓ'_/_5^6[Ɵw]^& bl(q" g;ajWC0iElWW.`C?R phar-io-manifest-7761fca/tests/exceptions/ManifestDocumentLoadingExceptionTest.phpUTdB[Ok@)) C@6.nfF-I0^=μ7{;Y/CQ+ 4J1c>_FV UBUXH-㭧UFd w+pu'/v=$u?4qzej%y^S"*8B e|N]`0IJ Gh @[, f~m] BПǏ`M{O=> '55B/WeЙr~0ۀA/5%:/P[A璣Qs0$ٹ sa~PK bL& phar-io-manifest-7761fca/tests/values/UTdB[PK bL8= phar-io-manifest-7761fca/tests/values/ApplicationNameTest.phpUTdB[TMo1ﯘC% "A[BiRTHp1e^ ;^>Y'(oqqmΰ!W,JUJ;h.|=Jhv#g@bvV!j \i o&]|#dt6\{d^_PK bL9+9 phar-io-manifest-7761fca/tests/values/ApplicationTest.phpUTdB[Oo0s! Ze#P]I2i۲'hc/)v닕{3l&Ѕu<&ۢc0%*tKZJA8M0Q?cCqv*hԃ{гB 7Ԑ?&ck:N=nQ3m18lrcN=V UN4nPj;Ew*2C<;5LW"q9 ~hܒ(ų]'I#A"oN{6kyIqqnvfb &[,0yC+~1É z?֩2 F2-L^^8S9|L+R{F2m0m1O\I;Gȵk(m_Ư ߪ̡;| Z`!t}2?tw9sPK bLaXs> phar-io-manifest-7761fca/tests/values/AuthorCollectionTest.phpUTdB[TMS0W쁙8LJ+_ 0\6k%WZ'd:] R0]<}U^E&W2UȷB`2hf$8™{e?)fX+±[ 1v9ٻnZOm\ duQ@bUw9 vBgƖH#E6~\GU[Y5G&KbnSٔUְZؒgTdU&y,䟸wOK89}|d-$~Xc/lM/PK bL\4 phar-io-manifest-7761fca/tests/values/AuthorTest.phpUTdB[Ro0_q1>FUCr$b53;;ZX;*A/Ai,U(VD7QT nɛ[+c7Ҝqbd]a397t,h#U$:OĤS'>@‰$a#\`ЦjGV x]#_>Qs>|="^wě#$t7]o9s4$JW58v:oY踾I_J?ݽ_N1?H?j,ܹ fCN?K5 5ﵣtV"Am=?"PK bL!ZH phar-io-manifest-7761fca/tests/values/BundledComponentCollectionTest.phpUTdB[TM0Wc[X-jEݞdB,(dA|TbŞyO:8Z7K,-D2A=@G0ɓP2BKMcB'Bѐ޴nح3N%) phar-io-manifest-7761fca/tests/values/BundledComponentTest.phpUTdB[RKo0 WP N0dY El];t,ԡۜÌ}XSpM5LIW%d;dn֬Om\i 버TWߍ3(UJlE)} CZ,oK*Hv:8LYgԦvAB~ke-ElزhE8>]ދH6ɝ.zA,{iwO5g%e 4Ə<%Z r gN,Gr(ʨ=:M+K$Իל%w_͟ o`noenmHfL-uw _ _wqzl(ٕ|\sZ)sC[ҧR0&N]TQ}e3ߖ ׵-z'sY8OZ8GS_,@" dwYI#,a.v[}7VZBSҵ ڧ*JU+HV]8npBU#s d +}KU9/IiIp0}ǂ'ʜGъvNm_‘(*J 9 [ mIf^ YzS JرLnV odH)Yo rd/[GKi3Nob%- 4"?LU4S3Ƿภnd^PK bLUij3 phar-io-manifest-7761fca/tests/values/EmailTest.phpUTdB[Qn"1Wa$pOP: ,H$9q)մwc(>eB$b~ja?>\ 0b &\0B9WuAwX }H-9X6΁rϰ-{AP \ъK .1h!mM_8jա)b,c7(gfY+JX^>8n{]>TL`O!n ˼Fm2=sq0 f iWZ`BH<#$ ]Aޞ׷NTfe7!onXZv$u֝^6M{Ͼ쩸 )ן[Z4Hy3wvO~m8tΥXkHBh q1{PK bL H 7 phar-io-manifest-7761fca/tests/values/ExtensionTest.phpUTdB[Un@}+&1I)% RnmHocv5:c%JUsΜϞOܫ#ac&LC|b%Nc&Q 'y?Vgp&STp/D2 i7yb!g)FTR(_k.C`$zfE&řA̴\M> 2&LA!m3&OAxcH:jgIρs!wJ7W Lv5G(iG6LE`Fsx5]ol6Zv? )Jꎎ2j6A `Ktts3B:DVd>1h6p|DGfpE4sXWhqsKK+f;2延aMYOWGa,Գ}Dz8e^PFkFR%n!/صpvUVyc㏯~zM$CJZk<)T P՗?BGOtrz[]2qB?ӹY[]xLq1Z#BGMYЬQC)>Sբ8[5(V<kHV'ƫ~9[#O81.W%E9MIrA"~9s?6>C<ͬ_vnyK~=`  OJs?ߩ{r?9֞3d~<=5QNIg7gy'kPK bLm5 phar-io-manifest-7761fca/tests/values/LicenseTest.phpUTdB[RKo1ﯘC$B,kkomҪ1J>T_,?O?4UARHn67k̕(Ѻ1=6(0tgqWp-SaNĨC͕:öJ8W!WHB @Djcxw^n+*Xvwp aY밀pPV&G"*GDméxeĴH.$lLsݡ7O9{[ PN|3Z/q$qp3$Oe0}`횴{uNEQG~-%'3a#irus]g'8~I.Ѱ8^$+6932 7U zg2n7]Ib|s)d9ph?l/0ۊϓluy뷿OW װV+Y 8 Y3wq Bϣ_CWs2g No>ߎ96XJr?pz6Փ,--sG \ٙd#A8>I_i,Q&71/6V^u4+Y9ajstBX׶=ַ1,'fuڸf_zõ5z6q-W#߂mHn>R^`^@'56w1eY 2TjRSx1@P6?bv"wkc~48>Z\ vm{Wfo[x ,>Ϸ*'2@bA;iDy{[ "ֆZb\SolM(?vͫՆǎۖh@q!4cqT=] 9QLE$Vf5 ?d|FT7=®6xgžf3ȫX|[z+ҹL _~Ǯ_vR`Ж0jmFai}PK bL`E phar-io-manifest-7761fca/tests/values/PhpExtensionRequirementTest.phpUTdB[QKoA ϯRpOPJ@DAzQv='ن *ho=f;79c*aTk+2`!E&7U`vnǰzdxDrľB)pNq" 6 }p"hMP"t %4 sU-<#Bz:ᆲoe^[(PzwI& 2r[yэsɘ'<}D`2M̊JQN7luf¤# J~ODʃRXuigX`\H@1i `)5*"὾e-3Eڋ'ys$Tƾ-_6wPK bL_,3C phar-io-manifest-7761fca/tests/values/PhpVersionRequirementTest.phpUTdB[R[o0~ϯ8iRKQiT=吜8Щ߱FE/*#},$B@*,u YdP=b`V"?q(f46hB[6"L*8#! f<5p R]2j[8@ΠT)kC4@PEpr^x`2eQQ{ 9:MJ"`E;IEWQTۿ?X1,1ubY4P`v #{m{ᙋ_Ci}*eZ[HN3%Z=;D #C4-bʨ9$#(5{^Ǚɛp ,)OÏU mM@G. ˌT'_~))N/AG[xg?x#v_LQO37PK bLhYC phar-io-manifest-7761fca/tests/values/RequirementCollectionTest.phpUTdB[TMo@W)QHmP " jڢ|e !waWMً3o{ޗ4Nn˃w.:g{[P89822: <+~F*_+M]^:Sab6a,fR6OnBOqaIfΈ{$ruhd b(X'vآ"qmWs-5m?PK bLK'I1 phar-io-manifest-7761fca/tests/values/UrlTest.phpUTdB[QK0W̡QrgіZ>Xzb ֌]{T@+ĮT_"^~}xLXz\ J|QdJ<`vu!L a>ٞ­l`σS "d8A[.Wem-h`FJͿ扪̕b8̶f,h#:hSycJWeY-J˧Z,o.lq&&5fl#VOTD8 z+)*pLSTB)kw}] H㷲+ѨQI[iS18s/N^az7X<ĕTJ?je t۽.61?ii_[Q{CW_/)x5 PK bL# phar-io-manifest-7761fca/tests/xml/UTdB[PK bLhEOLB phar-io-manifest-7761fca/tests/xml/AuthorElementCollectionTest.phpUTdB[uQk0+.EiWuN&)}[&%IU6Kh,y87瞌UQ"i aUP=WJCBj0].%Fa-~ب%2˕|u];23Vot݄_iSP!NU ʗd*pVs`6Ӫ< t2UB mE/f;Jơ8Q?\M8( *KQy '-MvqF.QGS!rګw^g@tێiR YE24rJ#eEئQfmM/q?ΥT2\ᅁ_y=9dO~PK bLߎa8 phar-io-manifest-7761fca/tests/xml/AuthorElementTest.phpUTdB[PJ0}W\ʠpnc8Kll0MjvMۀb^.ssιg2-q8Q$AXgDވxE8ݡcIQ .J d#|SzTWҨ|k~N§A3aȮefVD#Hb[ThL4+yPo o KE!pC_-DR~YFLqu{{ΠBb融N]F UfZ< ˈAn /uwAQS#9,te>t A'UZ;m^cQpό&h΄~Ԓbi,J|+ S9;F/بݗկ  PK bLa9 phar-io-manifest-7761fca/tests/xml/BundlesElementTest.phpUTdB[S_O0ϧ*)#0B/ƾkmwЂ%..tIZjʀ jj1R,IfvX]l*䬖()ߺa #Y̯wRO]4:q//5_mĊZ \UN9F?xmfe-J{Cy8Ȝ. ]I`nٯ$M6UIV`Б{ߏ$y5%{iΏJ]9f{-ˋɮgzKK^7`ma/6 tS/@^U|),ZqfQȧaݲ;d{Zk ]}w=$ E 6srPy3N%Z*,nyKG_۱Io6xNąy!J 8)ğ]r|Db5"53E phar-io-manifest-7761fca/tests/xml/ComponentElementCollectionTest.phpUTdB[uOk1A P JiY64Ʉ$B7nuv9e<5!D30tS0tŴ!:_Kpɜ3Tu徹(1+3Hix?g)U^ k6Iٶ/whug&]jI䰬&az^Lsr腯Xݿf9 ~K~jZPK bLsPR: phar-io-manifest-7761fca/tests/xml/ContainsElementTest.phpUTdB[Qo0=tiBii. g$sp %DU l?p#nY 9 ,"*frNY-+@.Y0bo+Hd1Ec&MW*`$ŗ LL^ Evwo%T$0ao"^SUUMrU3hp)d@# w;JdDl3z~ 4!kG!'8Ȏryðvl\#EϼJf4yTowKSQ,{~EHId #`Hڤ7l[,ۏ e(‡ Q/j'tYu{IӞ:FNp3?(6W0Xʘ5U9l :1;{L*ݹ:hj[豤k wV~"ph . >=X>^ .? EIsQ-fjIN6 OČ^~wkց}}NLw̤Vnݖ+ *PK bL x]; phar-io-manifest-7761fca/tests/xml/CopyrightElementTest.phpUTdB[S]o0}ϯPTBXvRiڪ{s.Zb[0MsI!PVmKsC*4TTtLs+R"QFXFI,穹ʠL?P׍2IWyFтZ޵0DM RcPYϸ m8UW^pԚ6ۤGڳq⃱R-xbS Eal܁ce|,̭L/49"C&JYk`cNzՂ܍k*Ro3hN.7nzLciT=jt#qʳ$;]LV>)iEoרX@@C.W9O߶)=}qٚ_x鸥M,}~PK bLJYFK? phar-io-manifest-7761fca/tests/xml/ExtElementCollectionTest.phpUTdB[uKk1ASP^}PTUJ =%β$dU(fW+safxjsK6ne52#BJ:߬F*#G_(R3/~ _(<i}ܾi铥 qIU&4-?4+ul kt¹~Nҥ3u;haew^ OO3 Ew0&E8P8i[F KKtT7Qi_Kb'K>0.8"gMGڶ6\>؋}FϵMƮa} e?dUrlн:4ڏ#PK bL+ 95 phar-io-manifest-7761fca/tests/xml/ExtElementTest.phpUTdB[UQO@ )d†0#{9.nw$n7}ioo{yWe)&$kM=/-s:Ъ5 x ԙdjEɃe來/CCF]5ҞzYt0`2%CfuJhpH*6)!{HI-02X?l~( h:&Fڇy0p{Rn:ޭbWA':uY3! v3z9!i&iUQu256h@Hv[ x$!͸bF q>PK bLe9 phar-io-manifest-7761fca/tests/xml/LicenseElementTest.phpUTdB[[K1W Kb7{^BŶþݩ]&k2*nEL/'^3qCaǨ$b6F[=ub,s,O J=u哿XC8djetO*碦{΅ gX+rAoۥu-A1PK bL1; phar-io-manifest-7761fca/tests/xml/ManifestDocumentTest.phpUTdB[͗Qo0),4 =ЖJ"NR&b-ؙPPKdM"OszapQ$r$f73>1 7J|RVlr5 %&z,yާ ȓA!ssW3wjr!JC¥5zbJ,>|SG=XE"̬*+tIjKHmú6چr; {6^ߧo"5#4.fvM;^*;h8"m۲lg+Kq_cܒculaS'P 𻖌ˈ88sNH;ye&M -% zAC)5#hcWKNWc|y{{)|cq]XoHK Wg-_zSMWj4KIt[͕% ÿ6;G=%lb)CqT57h-<ېr;Rnrs/<؎5(6rtnR?ko>^` ^0~њ`?:V@6  T],}Kd /0ƒ`S|9<2k7(c CښzWW@dKOv&[BRjSJuYLظl/ v>PK bL1J5 phar-io-manifest-7761fca/tests/xml/PhpElementTest.phpUTdB[Qo0)jR܊6H]]&ѭ x&J,۳wzMX X:?_Mt@f E̩ZΙ+0 |~"YFYzAD[\,.pc7ZS6_U+wkf>U6br&ڕx8F9Hp*dℒĂԴcGDMv[q>Ddgd ƢjC&nH;i;"=a8}*z=xCno2~xKYw6ɸ'{nCS%3LHi|g ],4lR/'$'6 #1րo)35+4 ^O&(7eV`W_Zlw:eZs{ql+c ǥ7?ނ$X/ȂPQz>T/{Vq`s47a#^V$T샍!hZ$z^}k7y%tN&pU8=]7'b7ЪrYdQ8F }1 ύ;d!ȰPPK`TJ2ƛxyֻy?PK bL phar-io-manifest-7761fca/UTdB[PK bLVpH:?# @phar-io-manifest-7761fca/.gitignoreUTdB[PK bLKrp phar-io-manifest-7761fca/.php_csUTdB[PK bLD\C$ {phar-io-manifest-7761fca/.travis.ymlUTdB[PK bL$W0AQ phar-io-manifest-7761fca/LICENSEUTdB[PK bLVh1" aphar-io-manifest-7761fca/README.mdUTdB[PK bLnt"  phar-io-manifest-7761fca/build.xmlUTdB[PK bLR|O&  phar-io-manifest-7761fca/composer.jsonUTdB[PK bLu*]& iphar-io-manifest-7761fca/composer.lockUTdB[PK bL" phar-io-manifest-7761fca/examples/UTdB[PK bLR 0 phar-io-manifest-7761fca/examples/example-01.phpUTdB[PK bLr$" phar-io-manifest-7761fca/phive.xmlUTdB[PK bL@`$ phar-io-manifest-7761fca/phpunit.xmlUTdB[PK bL _phar-io-manifest-7761fca/src/UTdB[PK bL@7 phar-io-manifest-7761fca/src/ManifestDocumentMapper.phpUTdB[PK bLB8 / phar-io-manifest-7761fca/src/ManifestLoader.phpUTdB[PK bLtphar-io-manifest-7761fca/src/values/CopyrightInformation.phpUTdB[PK bLcM- A@phar-io-manifest-7761fca/src/values/Email.phpUTdB[PK bL0 1 [Bphar-io-manifest-7761fca/src/values/Extension.phpUTdB[PK bLFz"/ Dphar-io-manifest-7761fca/src/values/Library.phpUTdB[PK bL*h/ 6Fphar-io-manifest-7761fca/src/values/License.phpUTdB[PK bLD 0 Gphar-io-manifest-7761fca/src/values/Manifest.phpUTdB[PK bL>5 Y]phar-io-manifest-7761fca/src/xml/ComponentElement.phpUTdB[PK bL#I4? ^phar-io-manifest-7761fca/src/xml/ComponentElementCollection.phpUTdB[PK bLZl'4 `phar-io-manifest-7761fca/src/xml/ContainsElement.phpUTdB[PK bLY5 Tbphar-io-manifest-7761fca/src/xml/CopyrightElement.phpUTdB[PK bL'*6  dphar-io-manifest-7761fca/src/xml/ElementCollection.phpUTdB[PK bLh/j3*/ Jfphar-io-manifest-7761fca/src/xml/ExtElement.phpUTdB[PK bL29 gphar-io-manifest-7761fca/src/xml/ExtElementCollection.phpUTdB[PK bL>B5 \iphar-io-manifest-7761fca/src/xml/ExtensionElement.phpUTdB[PK bL 943 jphar-io-manifest-7761fca/src/xml/LicenseElement.phpUTdB[PK bL1 5 lphar-io-manifest-7761fca/src/xml/ManifestDocument.phpUTdB[PK bL>E pphar-io-manifest-7761fca/src/xml/ManifestDocumentLoadingException.phpUTdB[PK bL:6X 4 sphar-io-manifest-7761fca/src/xml/ManifestElement.phpUTdB[PK bLp{:f/ +vphar-io-manifest-7761fca/src/xml/PhpElement.phpUTdB[PK bL(ͷ<4 wphar-io-manifest-7761fca/src/xml/RequiresElement.phpUTdB[PK bL ~yphar-io-manifest-7761fca/tests/UTdB[PK bLБ= yphar-io-manifest-7761fca/tests/ManifestDocumentMapperTest.phpUTdB[PK bLX5H^ 5  }phar-io-manifest-7761fca/tests/ManifestLoaderTest.phpUTdB[PK bL&1[9 phar-io-manifest-7761fca/tests/ManifestSerializerTest.phpUTdB[PK bL( phar-io-manifest-7761fca/tests/_fixture/UTdB[PK bLo:2 phar-io-manifest-7761fca/tests/_fixture/custom.xmlUTdB[PK bL V&/G  phar-io-manifest-7761fca/tests/_fixture/extension-invalidcompatible.xmlUTdB[PK bLD%%,5 phar-io-manifest-7761fca/tests/_fixture/extension.xmlUTdB[PK bL):  phar-io-manifest-7761fca/tests/_fixture/invalidversion.xmlUTdB[PK bLzD pphar-io-manifest-7761fca/tests/_fixture/invalidversionconstraint.xmlUTdB[PK bLvyP3 Ɋphar-io-manifest-7761fca/tests/_fixture/library.xmlUTdB[PK bLvyP4 phar-io-manifest-7761fca/tests/_fixture/manifest.xmlUTdB[PK bL- 9 Xphar-io-manifest-7761fca/tests/_fixture/phpunit-5.6.5.xmlUTdB[PK bLԾ 1 phar-io-manifest-7761fca/tests/_fixture/test.pharUTdB[PK bL* dphar-io-manifest-7761fca/tests/exceptions/UTdB[PK bL>?R phar-io-manifest-7761fca/tests/exceptions/ManifestDocumentLoadingExceptionTest.phpUTdB[PK bL& lphar-io-manifest-7761fca/tests/values/UTdB[PK bL8= phar-io-manifest-7761fca/tests/values/ApplicationNameTest.phpUTdB[PK bL9+9 Uphar-io-manifest-7761fca/tests/values/ApplicationTest.phpUTdB[PK bLaXs> }phar-io-manifest-7761fca/tests/values/AuthorCollectionTest.phpUTdB[PK bL\4 :phar-io-manifest-7761fca/tests/values/AuthorTest.phpUTdB[PK bL!ZH phar-io-manifest-7761fca/tests/values/BundledComponentCollectionTest.phpUTdB[PK bL㸷O> Pphar-io-manifest-7761fca/tests/values/BundledComponentTest.phpUTdB[PK bL(B phar-io-manifest-7761fca/tests/values/CopyrightInformationTest.phpUTdB[PK bLUij3 phar-io-manifest-7761fca/tests/values/EmailTest.phpUTdB[PK bL H 7 phar-io-manifest-7761fca/tests/values/ExtensionTest.phpUTdB[PK bL+;5 Sphar-io-manifest-7761fca/tests/values/LibraryTest.phpUTdB[PK bLm5 wphar-io-manifest-7761fca/tests/values/LicenseTest.phpUTdB[PK bL^ w6 ɹphar-io-manifest-7761fca/tests/values/ManifestTest.phpUTdB[PK bL`E ƾphar-io-manifest-7761fca/tests/values/PhpExtensionRequirementTest.phpUTdB[PK bL_,3C phar-io-manifest-7761fca/tests/values/PhpVersionRequirementTest.phpUTdB[PK bLhYC phar-io-manifest-7761fca/tests/values/RequirementCollectionTest.phpUTdB[PK bLK'I1 phar-io-manifest-7761fca/tests/values/UrlTest.phpUTdB[PK bL# phar-io-manifest-7761fca/tests/xml/UTdB[PK bLhEOLB $phar-io-manifest-7761fca/tests/xml/AuthorElementCollectionTest.phpUTdB[PK bLߎa8 phar-io-manifest-7761fca/tests/xml/AuthorElementTest.phpUTdB[PK bLa9 phar-io-manifest-7761fca/tests/xml/BundlesElementTest.phpUTdB[PK bL>53E phar-io-manifest-7761fca/tests/xml/ComponentElementCollectionTest.phpUTdB[PK bLE+_; bphar-io-manifest-7761fca/tests/xml/ComponentElementTest.phpUTdB[PK bLsPR: #phar-io-manifest-7761fca/tests/xml/ContainsElementTest.phpUTdB[PK bL x]; phar-io-manifest-7761fca/tests/xml/CopyrightElementTest.phpUTdB[PK bLJYFK? 'phar-io-manifest-7761fca/tests/xml/ExtElementCollectionTest.phpUTdB[PK bL+ 95 phar-io-manifest-7761fca/tests/xml/ExtElementTest.phpUTdB[PK bLTܪo; hphar-io-manifest-7761fca/tests/xml/ExtensionElementTest.phpUTdB[PK bLe9 9phar-io-manifest-7761fca/tests/xml/LicenseElementTest.phpUTdB[PK bL1; phar-io-manifest-7761fca/tests/xml/ManifestDocumentTest.phpUTdB[PK bL1J5 phar-io-manifest-7761fca/tests/xml/PhpElementTest.phpUTdB[PK bLH0,K: cphar-io-manifest-7761fca/tests/xml/RequiresElementTest.phpUTdB[PKrr=0(7761fcacf03b4d4f16e7ccb606d4879ca431fcf4PK!.6(iiversion/CHANGELOG.mdnu[# Changelog All notable changes to phar-io/version are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. ## [2.0.1] - 08.07.2018 ### Fixed - Versions without a pre-release suffix are now always considered greater than versions without a pre-release suffix. Example: `3.0.0 > 3.0.0-alpha.1` ## [2.0.0] - 23.06.2018 Changes to public API: - `PreReleaseSuffix::construct()`: optional parameter `$number` removed - `PreReleaseSuffix::isGreaterThan()`: introduced - `Version::hasPreReleaseSuffix()`: introduced ### Added - [#11](https://github.com/phar-io/version/issues/11): Added support for pre-release version suffixes. Supported values are: - `dev` - `beta` (also abbreviated form `b`) - `rc` - `alpha` (also abbreviated form `a`) - `patch` (also abbreviated form `p`) All values can be followed by a number, e.g. `beta3`. When comparing versions, the pre-release suffix is taken into account. Example: `1.5.0 > 1.5.0-beta1 > 1.5.0-alpha3 > 1.5.0-alpha2 > 1.5.0-dev11` ### Changed - reorganized the source directories ### Fixed - [#10](https://github.com/phar-io/version/issues/10): Version numbers containing a numeric suffix as seen in Debian packages are now supported. [2.0.1]: https://github.com/phar-io/version/compare/2.0.0...2.0.1 [2.0.0]: https://github.com/phar-io/version/compare/1.0.1...2.0.0 PK!Z88Eversion/composer.jsonnu[{ "name": "phar-io/version", "description": "Library for handling version information and constraints", "license": "BSD-3-Clause", "authors": [ { "name": "Arne Blankerts", "email": "arne@blankerts.de", "role": "Developer" }, { "name": "Sebastian Heuer", "email": "sebastian@phpeople.de", "role": "Developer" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "Developer" } ], "support": { "issues": "https://github.com/phar-io/version/issues" }, "require": { "php": "^5.6 || ^7.0" }, "autoload": { "classmap": [ "src/" ] } } PK!9 9 version/README.mdnu[# Version Library for handling version information and constraints [![Build Status](https://travis-ci.org/phar-io/version.svg?branch=master)](https://travis-ci.org/phar-io/version) ## Installation You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): composer require phar-io/version If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: composer require --dev phar-io/version ## Version constraints A Version constraint describes a range of versions or a discrete version number. The format of version numbers follows the schema of [semantic versioning](http://semver.org): `..`. A constraint might contain an operator that describes the range. Beside the typical mathematical operators like `<=`, `>=`, there are two special operators: *Caret operator*: `^1.0` can be written as `>=1.0.0 <2.0.0` and read as »every Version within major version `1`«. *Tilde operator*: `~1.0.0` can be written as `>=1.0.0 <1.1.0` and read as »every version within minor version `1.1`. The behavior of tilde operator depends on whether a patch level version is provided or not. If no patch level is provided, tilde operator behaves like the caret operator: `~1.0` is identical to `^1.0`. ## Usage examples Parsing version constraints and check discrete versions for compliance: ```php use PharIo\Version\Version; use PharIo\Version\VersionConstraintParser; $parser = new VersionConstraintParser(); $caret_constraint = $parser->parse( '^7.0' ); $caret_constraint->complies( new Version( '7.0.17' ) ); // true $caret_constraint->complies( new Version( '7.1.0' ) ); // true $caret_constraint->complies( new Version( '6.4.34' ) ); // false $tilde_constraint = $parser->parse( '~1.1.0' ); $tilde_constraint->complies( new Version( '1.1.4' ) ); // true $tilde_constraint->complies( new Version( '1.2.0' ) ); // false ``` As of version 2.0.0, pre-release labels are supported and taken into account when comparing versions: ```php $leftVersion = new PharIo\Version\Version('3.0.0-alpha.1'); $rightVersion = new PharIo\Version\Version('3.0.0-alpha.2'); $leftVersion->isGreaterThan($rightVersion); // false $rightVersion->isGreaterThan($leftVersion); // true ``` PK!^. 'version/src/VersionConstraintParser.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class VersionConstraintParser { /** * @param string $value * * @return VersionConstraint * * @throws UnsupportedVersionConstraintException */ public function parse($value) { if (strpos($value, '||') !== false) { return $this->handleOrGroup($value); } if (!preg_match('/^[\^~\*]?[\d.\*]+(?:-.*)?$/', $value)) { throw new UnsupportedVersionConstraintException( sprintf('Version constraint %s is not supported.', $value) ); } switch ($value[0]) { case '~': return $this->handleTildeOperator($value); case '^': return $this->handleCaretOperator($value); } $version = new VersionConstraintValue($value); if ($version->getMajor()->isAny()) { return new AnyVersionConstraint(); } if ($version->getMinor()->isAny()) { return new SpecificMajorVersionConstraint( $version->getVersionString(), $version->getMajor()->getValue() ); } if ($version->getPatch()->isAny()) { return new SpecificMajorAndMinorVersionConstraint( $version->getVersionString(), $version->getMajor()->getValue(), $version->getMinor()->getValue() ); } return new ExactVersionConstraint($version->getVersionString()); } /** * @param $value * * @return OrVersionConstraintGroup */ private function handleOrGroup($value) { $constraints = []; foreach (explode('||', $value) as $groupSegment) { $constraints[] = $this->parse(trim($groupSegment)); } return new OrVersionConstraintGroup($value, $constraints); } /** * @param string $value * * @return AndVersionConstraintGroup */ private function handleTildeOperator($value) { $version = new Version(substr($value, 1)); $constraints = [ new GreaterThanOrEqualToVersionConstraint($value, $version) ]; if ($version->getPatch()->isAny()) { $constraints[] = new SpecificMajorVersionConstraint( $value, $version->getMajor()->getValue() ); } else { $constraints[] = new SpecificMajorAndMinorVersionConstraint( $value, $version->getMajor()->getValue(), $version->getMinor()->getValue() ); } return new AndVersionConstraintGroup($value, $constraints); } /** * @param string $value * * @return AndVersionConstraintGroup */ private function handleCaretOperator($value) { $version = new Version(substr($value, 1)); return new AndVersionConstraintGroup( $value, [ new GreaterThanOrEqualToVersionConstraint($value, $version), new SpecificMajorVersionConstraint($value, $version->getMajor()->getValue()) ] ); } } PK! &version/src/VersionConstraintValue.phpnu[versionString = $versionString; $this->parseVersion($versionString); } /** * @return string */ public function getLabel() { return $this->label; } /** * @return string */ public function getBuildMetaData() { return $this->buildMetaData; } /** * @return string */ public function getVersionString() { return $this->versionString; } /** * @return VersionNumber */ public function getMajor() { return $this->major; } /** * @return VersionNumber */ public function getMinor() { return $this->minor; } /** * @return VersionNumber */ public function getPatch() { return $this->patch; } /** * @param $versionString */ private function parseVersion($versionString) { $this->extractBuildMetaData($versionString); $this->extractLabel($versionString); $versionSegments = explode('.', $versionString); $this->major = new VersionNumber($versionSegments[0]); $minorValue = isset($versionSegments[1]) ? $versionSegments[1] : null; $patchValue = isset($versionSegments[2]) ? $versionSegments[2] : null; $this->minor = new VersionNumber($minorValue); $this->patch = new VersionNumber($patchValue); } /** * @param string $versionString */ private function extractBuildMetaData(&$versionString) { if (preg_match('/\+(.*)/', $versionString, $matches) == 1) { $this->buildMetaData = $matches[1]; $versionString = str_replace($matches[0], '', $versionString); } } /** * @param string $versionString */ private function extractLabel(&$versionString) { if (preg_match('/\-(.*)/', $versionString, $matches) == 1) { $this->label = $matches[1]; $versionString = str_replace($matches[0], '', $versionString); } } } PK!Hversion/src/BuildMetaData.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class BuildMetaData { /** @var string */ private $value; public function __construct(string $value) { $this->value = $value; } public function asString(): string { return $this->value; } public function equals(BuildMetaData $other): bool { return $this->asString() === $other->asString(); } } PK!@n[[Bversion/src/constraints/SpecificMajorAndMinorVersionConstraint.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class SpecificMajorAndMinorVersionConstraint extends AbstractVersionConstraint { /** * @var int */ private $major = 0; /** * @var int */ private $minor = 0; /** * @param string $originalValue * @param int $major * @param int $minor */ public function __construct($originalValue, $major, $minor) { parent::__construct($originalValue); $this->major = $major; $this->minor = $minor; } /** * @param Version $version * * @return bool */ public function complies(Version $version) { if ($version->getMajor()->getValue() != $this->major) { return false; } return $version->getMinor()->getValue() == $this->minor; } } PK!ruu:version/src/constraints/SpecificMajorVersionConstraint.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class SpecificMajorVersionConstraint extends AbstractVersionConstraint { /** * @var int */ private $major = 0; /** * @param string $originalValue * @param int $major */ public function __construct($originalValue, $major) { parent::__construct($originalValue); $this->major = $major; } /** * @param Version $version * * @return bool */ public function complies(Version $version) { return $version->getMajor()->getValue() == $this->major; } } PK!  Aversion/src/constraints/GreaterThanOrEqualToVersionConstraint.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class GreaterThanOrEqualToVersionConstraint extends AbstractVersionConstraint { /** * @var Version */ private $minimalVersion; /** * @param string $originalValue * @param Version $minimalVersion */ public function __construct($originalValue, Version $minimalVersion) { parent::__construct($originalValue); $this->minimalVersion = $minimalVersion; } /** * @param Version $version * * @return bool */ public function complies(Version $version) { return $version->getVersionString() == $this->minimalVersion->getVersionString() || $version->isGreaterThan($this->minimalVersion); } } PK! Ch**5version/src/constraints/AndVersionConstraintGroup.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class AndVersionConstraintGroup extends AbstractVersionConstraint { /** * @var VersionConstraint[] */ private $constraints = []; /** * @param string $originalValue * @param VersionConstraint[] $constraints */ public function __construct($originalValue, array $constraints) { parent::__construct($originalValue); $this->constraints = $constraints; } /** * @param Version $version * * @return bool */ public function complies(Version $version) { foreach ($this->constraints as $constraint) { if (!$constraint->complies($version)) { return false; } } return true; } } PK!Whg5version/src/constraints/AbstractVersionConstraint.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; abstract class AbstractVersionConstraint implements VersionConstraint { /** * @var string */ private $originalValue = ''; /** * @param string $originalValue */ public function __construct($originalValue) { $this->originalValue = $originalValue; } /** * @return string */ public function asString() { return $this->originalValue; } } PK!0version/src/constraints/AnyVersionConstraint.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class AnyVersionConstraint implements VersionConstraint { /** * @param Version $version * * @return bool */ public function complies(Version $version) { return true; } /** * @return string */ public function asString() { return '*'; } } PK!wU66-version/src/constraints/VersionConstraint.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; interface VersionConstraint { /** * @param Version $version * * @return bool */ public function complies(Version $version); /** * @return string */ public function asString(); } PK! ZZ2version/src/constraints/ExactVersionConstraint.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class ExactVersionConstraint extends AbstractVersionConstraint { /** * @param Version $version * * @return bool */ public function complies(Version $version) { return $this->asString() == $version->getVersionString(); } } PK!((4version/src/constraints/OrVersionConstraintGroup.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class OrVersionConstraintGroup extends AbstractVersionConstraint { /** * @var VersionConstraint[] */ private $constraints = []; /** * @param string $originalValue * @param VersionConstraint[] $constraints */ public function __construct($originalValue, array $constraints) { parent::__construct($originalValue); $this->constraints = $constraints; } /** * @param Version $version * * @return bool */ public function complies(Version $version) { foreach ($this->constraints as $constraint) { if ($constraint->complies($version)) { return true; } } return false; } } PK!؈ll$version/src/exceptions/Exception.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; interface Exception { } PK!vv;version/src/exceptions/InvalidPreReleaseSuffixException.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; final class UnsupportedVersionConstraintException extends \RuntimeException implements Exception { } PK!3version/src/exceptions/NoBuildMetaDataException.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class Version { /** * @var VersionNumber */ private $major; /** * @var VersionNumber */ private $minor; /** * @var VersionNumber */ private $patch; /** * @var PreReleaseSuffix */ private $preReleaseSuffix; /** * @var string */ private $versionString = ''; /** * @param string $versionString */ public function __construct($versionString) { $this->ensureVersionStringIsValid($versionString); $this->versionString = $versionString; } /** * @return PreReleaseSuffix */ public function getPreReleaseSuffix() { return $this->preReleaseSuffix; } /** * @return string */ public function getVersionString() { return $this->versionString; } /** * @return bool */ public function hasPreReleaseSuffix() { return $this->preReleaseSuffix !== null; } /** * @param Version $version * * @return bool */ public function isGreaterThan(Version $version) { if ($version->getMajor()->getValue() > $this->getMajor()->getValue()) { return false; } if ($version->getMajor()->getValue() < $this->getMajor()->getValue()) { return true; } if ($version->getMinor()->getValue() > $this->getMinor()->getValue()) { return false; } if ($version->getMinor()->getValue() < $this->getMinor()->getValue()) { return true; } if ($version->getPatch()->getValue() > $this->getPatch()->getValue()) { return false; } if ($version->getPatch()->getValue() < $this->getPatch()->getValue()) { return true; } if (!$version->hasPreReleaseSuffix() && !$this->hasPreReleaseSuffix()) { return false; } if ($version->hasPreReleaseSuffix() && !$this->hasPreReleaseSuffix()) { return true; } if (!$version->hasPreReleaseSuffix() && $this->hasPreReleaseSuffix()) { return false; } return $this->getPreReleaseSuffix()->isGreaterThan($version->getPreReleaseSuffix()); } /** * @return VersionNumber */ public function getMajor() { return $this->major; } /** * @return VersionNumber */ public function getMinor() { return $this->minor; } /** * @return VersionNumber */ public function getPatch() { return $this->patch; } /** * @param array $matches */ private function parseVersion(array $matches) { $this->major = new VersionNumber($matches['Major']); $this->minor = new VersionNumber($matches['Minor']); $this->patch = isset($matches['Patch']) ? new VersionNumber($matches['Patch']) : new VersionNumber(null); if (isset($matches['PreReleaseSuffix'])) { $this->preReleaseSuffix = new PreReleaseSuffix($matches['PreReleaseSuffix']); } } /** * @param string $version * * @throws InvalidVersionException */ private function ensureVersionStringIsValid($version) { $regex = '/^v? (?(0|(?:[1-9][0-9]*))) \\. (?(0|(?:[1-9][0-9]*))) (\\. (?(0|(?:[1-9][0-9]*))) )? (?: - (?(?:(dev|beta|b|RC|alpha|a|patch|p)\.?\d*)) )? $/x'; if (preg_match($regex, $version, $matches) !== 1) { throw new InvalidVersionException( sprintf("Version string '%s' does not follow SemVer semantics", $version) ); } $this->parseVersion($matches); } } PK!dgg version/src/PreReleaseSuffix.phpnu[ 0, 'a' => 1, 'alpha' => 1, 'b' => 2, 'beta' => 2, 'rc' => 3, 'p' => 4, 'patch' => 4, ]; /** * @var string */ private $value; /** * @var int */ private $valueScore; /** * @var int */ private $number = 0; /** * @param string $value */ public function __construct($value) { $this->parseValue($value); } /** * @return string */ public function getValue() { return $this->value; } /** * @return int|null */ public function getNumber() { return $this->number; } /** * @param PreReleaseSuffix $suffix * * @return bool */ public function isGreaterThan(PreReleaseSuffix $suffix) { if ($this->valueScore > $suffix->valueScore) { return true; } if ($this->valueScore < $suffix->valueScore) { return false; } return $this->getNumber() > $suffix->getNumber(); } /** * @param $value * * @return int */ private function mapValueToScore($value) { if (array_key_exists($value, $this->valueScoreMap)) { return $this->valueScoreMap[$value]; } return 0; } private function parseValue($value) { $regex = '/-?(dev|beta|b|rc|alpha|a|patch|p)\.?(\d*).*$/i'; if (preg_match($regex, $value, $matches) !== 1) { throw new InvalidPreReleaseSuffixException(sprintf('Invalid label %s', $value)); } $this->value = $matches[1]; if (isset($matches[2])) { $this->number = (int)$matches[2]; } $this->valueScore = $this->mapValueToScore($this->value); } } PK!v""version/src/VersionNumber.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; class VersionNumber { /** * @var int */ private $value; /** * @param mixed $value */ public function __construct($value) { if (is_numeric($value)) { $this->value = $value; } } /** * @return bool */ public function isAny() { return $this->value === null; } /** * @return int */ public function getValue() { return $this->value; } } PK!>:11version/LICENSEnu[phar-io/version Copyright (c) 2016-2017 Arne Blankerts , Sebastian Heuer and contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Arne Blankerts nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PK!nq/q/manifest/.php-cs-fixer.dist.phpnu[registerCustomFixers([ new \PharIo\CSFixer\PhpdocSingleLineVarFixer() ]) ->setRiskyAllowed(true) ->setRules( [ 'PharIo/phpdoc_single_line_var_fixer' => true, 'align_multiline_comment' => true, 'array_indentation' => true, 'array_syntax' => ['syntax' => 'short'], 'binary_operator_spaces' => [ 'operators' => [ '=' => 'align', '=>' => 'align', ], ], 'blank_line_after_namespace' => true, 'blank_line_after_opening_tag' => false, 'blank_line_before_statement' => [ 'statements' => [ 'break', 'continue', 'declare', 'do', 'for', 'foreach', 'if', 'include', 'include_once', 'require', 'require_once', 'return', 'switch', 'throw', 'try', 'while', 'yield', ], ], 'braces' => [ 'allow_single_line_closure' => false, 'position_after_anonymous_constructs' => 'same', 'position_after_control_structures' => 'same', 'position_after_functions_and_oop_constructs' => 'same' ], 'cast_spaces' => ['space' => 'none'], // This fixer removes the blank line at class start, no way to disable that, so we disable the fixer :( //'class_attributes_separation' => ['elements' => ['const', 'method', 'property']], 'combine_consecutive_issets' => true, 'combine_consecutive_unsets' => true, 'compact_nullable_typehint' => true, 'concat_space' => ['spacing' => 'one'], 'date_time_immutable' => true, 'declare_equal_normalize' => ['space' => 'single'], 'declare_strict_types' => true, 'dir_constant' => true, 'elseif' => true, 'encoding' => true, 'full_opening_tag' => true, 'fully_qualified_strict_types' => true, 'function_declaration' => [ 'closure_function_spacing' => 'one' ], 'global_namespace_import' => [ 'import_classes' => true, 'import_constants' => true, 'import_functions' => true, ], 'header_comment' => ['header' => $header, 'separate' => 'none'], 'indentation_type' => true, 'is_null' => true, 'line_ending' => true, 'list_syntax' => ['syntax' => 'short'], 'logical_operators' => true, 'lowercase_cast' => true, 'constant_case' => ['case' => 'lower'], 'lowercase_keywords' => true, 'lowercase_static_reference' => true, 'magic_constant_casing' => true, 'method_argument_space' => ['on_multiline' => 'ensure_fully_multiline'], 'modernize_types_casting' => true, 'multiline_comment_opening_closing' => true, 'multiline_whitespace_before_semicolons' => true, 'new_with_braces' => false, 'no_alias_functions' => true, 'no_alternative_syntax' => true, 'no_blank_lines_after_class_opening' => false, 'no_blank_lines_after_phpdoc' => true, 'no_blank_lines_before_namespace' => true, 'no_closing_tag' => true, 'no_empty_comment' => true, 'no_empty_phpdoc' => true, 'no_empty_statement' => true, 'no_extra_blank_lines' => true, 'no_homoglyph_names' => true, 'no_leading_import_slash' => true, 'no_leading_namespace_whitespace' => true, 'no_mixed_echo_print' => ['use' => 'print'], 'no_multiline_whitespace_around_double_arrow' => true, 'no_null_property_initialization' => true, 'no_php4_constructor' => true, 'no_short_bool_cast' => true, 'echo_tag_syntax' => ['format' => 'long'], 'no_singleline_whitespace_before_semicolons' => true, 'no_spaces_after_function_name' => true, 'no_spaces_inside_parenthesis' => true, 'no_superfluous_elseif' => true, 'no_superfluous_phpdoc_tags' => true, 'no_trailing_comma_in_list_call' => true, 'no_trailing_comma_in_singleline_array' => true, 'no_trailing_whitespace' => true, 'no_trailing_whitespace_in_comment' => true, 'no_unneeded_control_parentheses' => false, 'no_unneeded_curly_braces' => false, 'no_unneeded_final_method' => true, 'no_unreachable_default_argument_value' => true, 'no_unset_on_property' => true, 'no_unused_imports' => true, 'no_useless_else' => true, 'no_useless_return' => true, 'no_whitespace_before_comma_in_array' => true, 'no_whitespace_in_blank_line' => true, 'non_printable_character' => true, 'normalize_index_brace' => true, 'object_operator_without_whitespace' => true, 'ordered_class_elements' => [ 'order' => [ 'use_trait', 'constant_public', 'constant_protected', 'constant_private', 'property_public_static', 'property_protected_static', 'property_private_static', 'property_public', 'property_protected', 'property_private', 'method_public_static', 'construct', 'destruct', 'magic', 'phpunit', 'method_public', 'method_protected', 'method_private', 'method_protected_static', 'method_private_static', ], ], 'ordered_imports' => [ 'imports_order' => [ PhpCsFixer\Fixer\Import\OrderedImportsFixer::IMPORT_TYPE_CLASS, PhpCsFixer\Fixer\Import\OrderedImportsFixer::IMPORT_TYPE_CONST, PhpCsFixer\Fixer\Import\OrderedImportsFixer::IMPORT_TYPE_FUNCTION, ] ], 'phpdoc_add_missing_param_annotation' => true, 'phpdoc_align' => true, 'phpdoc_annotation_without_dot' => true, 'phpdoc_indent' => true, 'phpdoc_no_access' => true, 'phpdoc_no_empty_return' => true, 'phpdoc_no_package' => true, 'phpdoc_order' => true, 'phpdoc_return_self_reference' => true, 'phpdoc_scalar' => true, 'phpdoc_separation' => true, 'phpdoc_single_line_var_spacing' => true, 'phpdoc_to_comment' => true, 'phpdoc_trim' => true, 'phpdoc_trim_consecutive_blank_line_separation' => true, 'phpdoc_types' => ['groups' => ['simple', 'meta']], 'phpdoc_types_order' => true, 'phpdoc_to_return_type' => true, 'phpdoc_var_without_name' => true, 'pow_to_exponentiation' => true, 'protected_to_private' => true, 'return_assignment' => true, 'return_type_declaration' => ['space_before' => 'none'], 'self_accessor' => false, 'semicolon_after_instruction' => true, 'set_type_to_cast' => true, 'short_scalar_cast' => true, 'simplified_null_return' => true, 'single_blank_line_at_eof' => true, 'single_import_per_statement' => true, 'single_line_after_imports' => true, 'single_quote' => true, 'standardize_not_equals' => true, 'ternary_to_null_coalescing' => true, 'trailing_comma_in_multiline' => false, 'trim_array_spaces' => true, 'unary_operator_spaces' => true, 'visibility_required' => [ 'elements' => [ 'const', 'method', 'property', ], ], 'void_return' => true, 'whitespace_after_comma_in_array' => true, 'yoda_style' => false ] ) ->setFinder( PhpCsFixer\Finder::create() ->files() ->in(__DIR__ . '/build') ->in(__DIR__ . '/src') ->in(__DIR__ . '/tests') ->notName('autoload.php') ); PK!Xymanifest/CHANGELOG.mdnu[# Changelog All notable changes to phar-io/manifest are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. ## [2.0.4] - 03-03-2024 ### Changed - Make `EMail` an optional attribute for author - Stick with PHP 7.2 compatibilty - Do not use implict nullable type (thanks @sebastianbergmann), this should make things work on PHP 8.4 ## [2.0.3] - 20.07.2021 - Fixed PHP 7.2 / PHP 7.3 incompatibility introduced in previous release ## [2.0.2] - 20.07.2021 - Fixed PHP 8.1 deprecation notice ## [2.0.1] - 27.06.2020 This release now supports the use of PHP 7.2+ and ^8.0 ## [2.0.0] - 10.05.2020 This release now requires PHP 7.2+ ### Changed - Upgraded to phar-io/version 3.0 - Version strings `v1.2.3` will now be converted to valid semantic version strings `1.2.3` - Abreviated strings like `1.0` will get expaneded to `1.0.0` ### Unreleased [Unreleased]: https://github.com/phar-io/manifest/compare/2.1.0...HEAD [2.1.0]: https://github.com/phar-io/manifest/compare/2.0.3...2.1.0 [2.0.3]: https://github.com/phar-io/manifest/compare/2.0.2...2.0.3 [2.0.2]: https://github.com/phar-io/manifest/compare/2.0.1...2.0.2 [2.0.1]: https://github.com/phar-io/manifest/compare/2.0.0...2.0.1 [2.0.0]: https://github.com/phar-io/manifest/compare/1.0.1...2.0.0 [1.0.3]: https://github.com/phar-io/manifest/compare/1.0.2...1.0.3 [1.0.2]: https://github.com/phar-io/manifest/compare/1.0.1...1.0.2 [1.0.1]: https://github.com/phar-io/manifest/compare/1.0.0...1.0.1 PK!AAmanifest/.github/FUNDING.ymlnu[# These are supported funding model platforms github: [theseer] PK!_cOS!manifest/.github/workflows/ci.ymlnu[name: "CI" on: push: branches: - "master" pull_request: null jobs: qa: name: "QA" runs-on: "ubuntu-latest" steps: - name: "Checkout" uses: "actions/checkout@v3.5.2" - name: "Set up PHP" uses: "shivammathur/setup-php@2.25.1" with: coverage: "none" php-version: "8.0" tools: "phive" - name: "Install dependencies with composer" run: "composer install --no-interaction --optimize-autoloader --prefer-dist" - name: "Install dependencies with phive" env: GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: "ant install-tools" - name: "Run php-cs-fixer" run: "ant php-cs-fixer" - name: "Run psalm" run: "ant psalm" tests: name: "Tests" runs-on: "ubuntu-latest" strategy: fail-fast: false matrix: php-versions: - "7.2" - "7.3" - "7.4" - "8.0" - "8.1" - "8.2" steps: - name: "Checkout" uses: "actions/checkout@v3.5.2" - name: "Set up PHP" uses: "shivammathur/setup-php@2.25.1" env: COMPOSER_TOKEN: "${{ secrets.GITHUB_TOKEN }}" with: coverage: "pcov" extensions: "${{ env.extensions }}" ini-values: "display_errors=On, error_reporting=-1, memory_limit=2G" php-version: "${{ matrix.php-versions }}" tools: "phive" - name: "Install dependencies with composer" run: "composer install --no-interaction --optimize-autoloader --prefer-dist" - name: "Install dependencies with phive" env: GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: "ant install-tools" - name: "Run PHPUnit" run: "tools/phpunit --coverage-clover build/logs/clover.xml" - name: "Send code coverage report to codecov.io" uses: "codecov/codecov-action@v3.1.4" with: files: "build/logs/clover.xml" PK!R|OOmanifest/composer.jsonnu[{ "name": "phar-io/manifest", "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "license": "BSD-3-Clause", "authors": [ { "name": "Arne Blankerts", "email": "arne@blankerts.de", "role": "Developer" }, { "name": "Sebastian Heuer", "email": "sebastian@phpeople.de", "role": "Developer" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "Developer" } ], "support": { "issues": "https://github.com/phar-io/manifest/issues" }, "require": { "php": "^5.6 || ^7.0", "ext-dom": "*", "ext-phar": "*", "phar-io/version": "^2.0" }, "autoload": { "classmap": [ "src/" ] }, "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } } } PK!Vhmanifest/README.mdnu[# Manifest Component for reading [phar.io](https://phar.io/) manifest information from a [PHP Archive (PHAR)](http://php.net/phar). [![Build Status](https://travis-ci.org/phar-io/manifest.svg?branch=master)](https://travis-ci.org/phar-io/manifest) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phar-io/manifest/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phar-io/manifest/?branch=master) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/d8cc6035-69ad-477d-bd1a-ccc605480fd7/mini.png)](https://insight.sensiolabs.com/projects/d8cc6035-69ad-477d-bd1a-ccc605480fd7) ## Installation You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): composer require phar-io/manifest If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: composer require --dev phar-io/manifest ## Usage ```php use PharIo\Manifest\ManifestLoader; use PharIo\Manifest\ManifestSerializer; $manifest = ManifestLoader::fromFile('manifest.xml'); var_dump($manifest); echo (new ManifestSerializer)->serializeToString($manifest); ``` PK!ڈU77(manifest/tools/php-cs-fixer.d/header.txtnu[This file is part of PharIo\Manifest. Copyright (c) Arne Blankerts , Sebastian Heuer , Sebastian Bergmann and contributors For the full copyright and license information, please view the LICENSE file that was distributed with this source code. PK! :manifest/tools/php-cs-fixer.d/PhpdocSingleLineVarFixer.phpnu[isTokenKindFound(T_DOC_COMMENT); } public function isRisky(): bool { return false; } public function fix(\SplFileInfo $file, Tokens $tokens): void { foreach($tokens as $index => $token) { if (!$token->isGivenKind(T_DOC_COMMENT)) { continue; } if (\stripos($token->getContent(), '@var') === false) { continue; } if (preg_match('#^/\*\*[\s\*]+(@var[^\r\n]+)[\s\*]*\*\/$#u', $token->getContent(), $matches) !== 1) { continue; } $newContent = '/** ' . \rtrim($matches[1]) . ' */'; if ($newContent === $token->getContent()) { continue; } $tokens[$index] = new Token([T_DOC_COMMENT, $newContent]); } } public function getPriority(): int { return 0; } public function getName(): string { return 'PharIo/phpdoc_single_line_var_fixer'; } public function supports(\SplFileInfo $file): bool { return true; } } PK!t, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\AnyVersionConstraint; use PharIo\Version\Version; use PharIo\Version\VersionConstraint; use XMLWriter; class ManifestSerializer { /** * @var XMLWriter */ private $xmlWriter; public function serializeToFile(Manifest $manifest, $filename) { file_put_contents( $filename, $this->serializeToString($manifest) ); } public function serializeToString(Manifest $manifest) { $this->startDocument(); $this->addContains($manifest->getName(), $manifest->getVersion(), $manifest->getType()); $this->addCopyright($manifest->getCopyrightInformation()); $this->addRequirements($manifest->getRequirements()); $this->addBundles($manifest->getBundledComponents()); return $this->finishDocument(); } private function startDocument() { $xmlWriter = new XMLWriter(); $xmlWriter->openMemory(); $xmlWriter->setIndent(true); $xmlWriter->setIndentString(str_repeat(' ', 4)); $xmlWriter->startDocument('1.0', 'UTF-8'); $xmlWriter->startElement('phar'); $xmlWriter->writeAttribute('xmlns', 'https://phar.io/xml/manifest/1.0'); $this->xmlWriter = $xmlWriter; } private function finishDocument() { $this->xmlWriter->endElement(); $this->xmlWriter->endDocument(); return $this->xmlWriter->outputMemory(); } private function addContains($name, Version $version, Type $type) { $this->xmlWriter->startElement('contains'); $this->xmlWriter->writeAttribute('name', $name); $this->xmlWriter->writeAttribute('version', $version->getVersionString()); switch (true) { case $type->isApplication(): { $this->xmlWriter->writeAttribute('type', 'application'); break; } case $type->isLibrary(): { $this->xmlWriter->writeAttribute('type', 'library'); break; } case $type->isExtension(): { /* @var $type Extension */ $this->xmlWriter->writeAttribute('type', 'extension'); $this->addExtension($type->getApplicationName(), $type->getVersionConstraint()); break; } default: { $this->xmlWriter->writeAttribute('type', 'custom'); } } $this->xmlWriter->endElement(); } private function addCopyright(CopyrightInformation $copyrightInformation) { $this->xmlWriter->startElement('copyright'); foreach($copyrightInformation->getAuthors() as $author) { $this->xmlWriter->startElement('author'); $this->xmlWriter->writeAttribute('name', $author->getName()); $this->xmlWriter->writeAttribute('email', (string) $author->getEmail()); $this->xmlWriter->endElement(); } $license = $copyrightInformation->getLicense(); $this->xmlWriter->startElement('license'); $this->xmlWriter->writeAttribute('type', $license->getName()); $this->xmlWriter->writeAttribute('url', $license->getUrl()); $this->xmlWriter->endElement(); $this->xmlWriter->endElement(); } private function addRequirements(RequirementCollection $requirementCollection) { $phpRequirement = new AnyVersionConstraint(); $extensions = []; foreach($requirementCollection as $requirement) { if ($requirement instanceof PhpVersionRequirement) { $phpRequirement = $requirement->getVersionConstraint(); continue; } if ($requirement instanceof PhpExtensionRequirement) { $extensions[] = (string) $requirement; } } $this->xmlWriter->startElement('requires'); $this->xmlWriter->startElement('php'); $this->xmlWriter->writeAttribute('version', $phpRequirement->asString()); foreach($extensions as $extension) { $this->xmlWriter->startElement('ext'); $this->xmlWriter->writeAttribute('name', $extension); $this->xmlWriter->endElement(); } $this->xmlWriter->endElement(); $this->xmlWriter->endElement(); } private function addBundles(BundledComponentCollection $bundledComponentCollection) { if (count($bundledComponentCollection) === 0) { return; } $this->xmlWriter->startElement('bundles'); foreach($bundledComponentCollection as $bundledComponent) { $this->xmlWriter->startElement('component'); $this->xmlWriter->writeAttribute('name', $bundledComponent->getName()); $this->xmlWriter->writeAttribute('version', $bundledComponent->getVersion()->getVersionString()); $this->xmlWriter->endElement(); } $this->xmlWriter->endElement(); } private function addExtension($application, VersionConstraint $versionConstraint) { $this->xmlWriter->startElement('extension'); $this->xmlWriter->writeAttribute('for', $application); $this->xmlWriter->writeAttribute('compatible', $versionConstraint->asString()); $this->xmlWriter->endElement(); } } PK!By  ,manifest/src/xml/AuthorElementCollection.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class AuthorElementCollection extends ElementCollection { public function current() { return new AuthorElement( $this->getCurrentElement() ); } } PK! 44#manifest/src/xml/LicenseElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class LicenseElement extends ManifestElement { public function getType() { return $this->getAttributeValue('type'); } public function getUrl() { return $this->getAttributeValue('url'); } } PK!)manifest/src/xml/ExtElementCollection.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class ExtElementCollection extends ElementCollection { public function current() { return new ExtElement( $this->getCurrentElement() ); } } PK!'*&manifest/src/xml/ElementCollection.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use DOMElement; use DOMNodeList; abstract class ElementCollection implements \Iterator { /** * @var DOMNodeList */ private $nodeList; private $position; /** * ElementCollection constructor. * * @param DOMNodeList $nodeList */ public function __construct(DOMNodeList $nodeList) { $this->nodeList = $nodeList; $this->position = 0; } abstract public function current(); /** * @return DOMElement */ protected function getCurrentElement() { return $this->nodeList->item($this->position); } public function next() { $this->position++; } public function key() { return $this->position; } public function valid() { return $this->position < $this->nodeList->length; } public function rewind() { $this->position = 0; } } PK!h/j3manifest/src/xml/ExtElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class ExtElement extends ManifestElement { public function getName() { return $this->getAttributeValue('name'); } } PK!(ͷ$manifest/src/xml/RequiresElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class RequiresElement extends ManifestElement { public function getPHPElement() { return new PhpElement( $this->getChildByName('php') ); } } PK!Z''$manifest/src/xml/ContainsElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class ContainsElement extends ManifestElement { public function getName() { return $this->getAttributeValue('name'); } public function getVersion() { return $this->getAttributeValue('version'); } public function getType() { return $this->getAttributeValue('type'); } public function getExtensionElement() { return new ExtensionElement( $this->getChildByName('extension') ); } } PK! +>>%manifest/src/xml/ComponentElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class ComponentElement extends ManifestElement { public function getName() { return $this->getAttributeValue('name'); } public function getVersion() { return $this->getAttributeValue('version'); } } PK!#I/manifest/src/xml/ComponentElementCollection.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class ComponentElementCollection extends ElementCollection { public function current() { return new ComponentElement( $this->getCurrentElement() ); } } PK!77"manifest/src/xml/AuthorElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class AuthorElement extends ManifestElement { public function getName() { return $this->getAttributeValue('name'); } public function getEmail() { return $this->getAttributeValue('email'); } } PK!Oϯ&&#manifest/src/xml/BundlesElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class BundlesElement extends ManifestElement { public function getComponentElements() { return new ComponentElementCollection( $this->getChildrenByName('component') ); } } PK!BB%manifest/src/xml/ExtensionElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class ExtensionElement extends ManifestElement { public function getFor() { return $this->getAttributeValue('for'); } public function getCompatible() { return $this->getAttributeValue('compatible'); } } PK!1 %manifest/src/xml/ManifestDocument.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use DOMDocument; use DOMElement; class ManifestDocument { const XMLNS = 'https://phar.io/xml/manifest/1.0'; /** * @var DOMDocument */ private $dom; /** * ManifestDocument constructor. * * @param DOMDocument $dom */ private function __construct(DOMDocument $dom) { $this->ensureCorrectDocumentType($dom); $this->dom = $dom; } public static function fromFile($filename) { if (!file_exists($filename)) { throw new ManifestDocumentException( sprintf('File "%s" not found', $filename) ); } return self::fromString( file_get_contents($filename) ); } public static function fromString($xmlString) { $prev = libxml_use_internal_errors(true); libxml_clear_errors(); $dom = new DOMDocument(); $dom->loadXML($xmlString); $errors = libxml_get_errors(); libxml_use_internal_errors($prev); if (count($errors) !== 0) { throw new ManifestDocumentLoadingException($errors); } return new self($dom); } public function getContainsElement() { return new ContainsElement( $this->fetchElementByName('contains') ); } public function getCopyrightElement() { return new CopyrightElement( $this->fetchElementByName('copyright') ); } public function getRequiresElement() { return new RequiresElement( $this->fetchElementByName('requires') ); } public function hasBundlesElement() { return $this->dom->getElementsByTagNameNS(self::XMLNS, 'bundles')->length === 1; } public function getBundlesElement() { return new BundlesElement( $this->fetchElementByName('bundles') ); } private function ensureCorrectDocumentType(DOMDocument $dom) { $root = $dom->documentElement; if ($root->localName !== 'phar' || $root->namespaceURI !== self::XMLNS) { throw new ManifestDocumentException('Not a phar.io manifest document'); } } /** * @param $elementName * * @return DOMElement * * @throws ManifestDocumentException */ private function fetchElementByName($elementName) { $element = $this->dom->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0); if (!$element instanceof DOMElement) { throw new ManifestDocumentException( sprintf('Element %s missing', $elementName) ); } return $element; } } PK!p{:manifest/src/xml/PhpElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class PhpElement extends ManifestElement { public function getVersion() { return $this->getAttributeValue('version'); } public function hasExtElements() { return $this->hasChild('ext'); } public function getExtElements() { return new ExtElementCollection( $this->getChildrenByName('ext') ); } } PK!:6X $manifest/src/xml/ManifestElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use DOMElement; use DOMNodeList; class ManifestElement { const XMLNS = 'https://phar.io/xml/manifest/1.0'; /** * @var DOMElement */ private $element; /** * ContainsElement constructor. * * @param DOMElement $element */ public function __construct(DOMElement $element) { $this->element = $element; } /** * @param string $name * * @return string * * @throws ManifestElementException */ protected function getAttributeValue($name) { if (!$this->element->hasAttribute($name)) { throw new ManifestElementException( sprintf( 'Attribute %s not set on element %s', $name, $this->element->localName ) ); } return $this->element->getAttribute($name); } /** * @param $elementName * * @return DOMElement * * @throws ManifestElementException */ protected function getChildByName($elementName) { $element = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0); if (!$element instanceof DOMElement) { throw new ManifestElementException( sprintf('Element %s missing', $elementName) ); } return $element; } /** * @param $elementName * * @return DOMNodeList * * @throws ManifestElementException */ protected function getChildrenByName($elementName) { $elementList = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName); if ($elementList->length === 0) { throw new ManifestElementException( sprintf('Element(s) %s missing', $elementName) ); } return $elementList; } /** * @param string $elementName * * @return bool */ protected function hasChild($elementName) { return $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->length !== 0; } } PK!%manifest/src/xml/CopyrightElement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class CopyrightElement extends ManifestElement { public function getAuthorElements() { return new AuthorElementCollection( $this->getChildrenByName('author') ); } public function getLicenseElement() { return new LicenseElement( $this->getChildByName('license') ); } } PK!@'manifest/src/ManifestDocumentMapper.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\Version; use PharIo\Version\Exception as VersionException; use PharIo\Version\VersionConstraintParser; class ManifestDocumentMapper { /** * @param ManifestDocument $document * * @returns Manifest * * @throws ManifestDocumentMapperException */ public function map(ManifestDocument $document) { try { $contains = $document->getContainsElement(); $type = $this->mapType($contains); $copyright = $this->mapCopyright($document->getCopyrightElement()); $requirements = $this->mapRequirements($document->getRequiresElement()); $bundledComponents = $this->mapBundledComponents($document); return new Manifest( new ApplicationName($contains->getName()), new Version($contains->getVersion()), $type, $copyright, $requirements, $bundledComponents ); } catch (VersionException $e) { throw new ManifestDocumentMapperException($e->getMessage(), $e->getCode(), $e); } catch (Exception $e) { throw new ManifestDocumentMapperException($e->getMessage(), $e->getCode(), $e); } } /** * @param ContainsElement $contains * * @return Type * * @throws ManifestDocumentMapperException */ private function mapType(ContainsElement $contains) { switch ($contains->getType()) { case 'application': return Type::application(); case 'library': return Type::library(); case 'extension': return $this->mapExtension($contains->getExtensionElement()); } throw new ManifestDocumentMapperException( sprintf('Unsupported type %s', $contains->getType()) ); } /** * @param CopyrightElement $copyright * * @return CopyrightInformation * * @throws InvalidUrlException * @throws InvalidEmailException */ private function mapCopyright(CopyrightElement $copyright) { $authors = new AuthorCollection(); foreach($copyright->getAuthorElements() as $authorElement) { $authors->add( new Author( $authorElement->getName(), new Email($authorElement->getEmail()) ) ); } $licenseElement = $copyright->getLicenseElement(); $license = new License( $licenseElement->getType(), new Url($licenseElement->getUrl()) ); return new CopyrightInformation( $authors, $license ); } /** * @param RequiresElement $requires * * @return RequirementCollection * * @throws ManifestDocumentMapperException */ private function mapRequirements(RequiresElement $requires) { $collection = new RequirementCollection(); $phpElement = $requires->getPHPElement(); $parser = new VersionConstraintParser; try { $versionConstraint = $parser->parse($phpElement->getVersion()); } catch (VersionException $e) { throw new ManifestDocumentMapperException( sprintf('Unsupported version constraint - %s', $e->getMessage()), $e->getCode(), $e ); } $collection->add( new PhpVersionRequirement( $versionConstraint ) ); if (!$phpElement->hasExtElements()) { return $collection; } foreach($phpElement->getExtElements() as $extElement) { $collection->add( new PhpExtensionRequirement($extElement->getName()) ); } return $collection; } /** * @param ManifestDocument $document * * @return BundledComponentCollection */ private function mapBundledComponents(ManifestDocument $document) { $collection = new BundledComponentCollection(); if (!$document->hasBundlesElement()) { return $collection; } foreach($document->getBundlesElement()->getComponentElements() as $componentElement) { $collection->add( new BundledComponent( $componentElement->getName(), new Version( $componentElement->getVersion() ) ) ); } return $collection; } /** * @param ExtensionElement $extension * * @return Extension * * @throws ManifestDocumentMapperException */ private function mapExtension(ExtensionElement $extension) { try { $parser = new VersionConstraintParser; $versionConstraint = $parser->parse($extension->getCompatible()); return Type::extension( new ApplicationName($extension->getFor()), $versionConstraint ); } catch (VersionException $e) { throw new ManifestDocumentMapperException( sprintf('Unsupported version constraint - %s', $e->getMessage()), $e->getCode(), $e ); } } } PK!q:3manifest/src/exceptions/NoEmailAddressException.phpnu[, Sebastian Heuer , Sebastian Bergmann and contributors * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * */ namespace PharIo\Manifest; use InvalidArgumentException; class NoEmailAddressException extends InvalidArgumentException implements Exception { } PK!Ynn%manifest/src/exceptions/Exception.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; interface Exception { } PK!w/uu4manifest/src/exceptions/ManifestElementException.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class InvalidUrlException extends \InvalidArgumentException implements Exception { } PK!8L:mm3manifest/src/exceptions/ManifestLoaderException.phpnu[, Sebastian Heuer , Sebastian Bergmann and contributors * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * */ namespace PharIo\Manifest; use InvalidArgumentException; class ElementCollectionException extends InvalidArgumentException implements Exception { } PK!գ<manifest/src/exceptions/ManifestDocumentLoadingException.phpnu[, Sebastian Heuer , Sebastian Bergmann and contributors * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * */ namespace PharIo\Manifest; use LibXMLError; use function sprintf; class ManifestDocumentLoadingException extends \Exception implements Exception { /** @var LibXMLError[] */ private $libxmlErrors; /** * ManifestDocumentLoadingException constructor. * * @param LibXMLError[] $libxmlErrors */ public function __construct(array $libxmlErrors) { $this->libxmlErrors = $libxmlErrors; $first = $this->libxmlErrors[0]; parent::__construct( sprintf( '%s (Line: %d / Column: %d / File: %s)', $first->message, $first->line, $first->column, $first->file ), $first->code ); } /** * @return LibXMLError[] */ public function getLibxmlErrors(): array { return $this->libxmlErrors; } } PK!6KQ;manifest/src/exceptions/InvalidApplicationNameException.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class InvalidApplicationNameException extends \InvalidArgumentException implements Exception { const NotAString = 1; const InvalidFormat = 2; } PK!vv5manifest/src/exceptions/ManifestDocumentException.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class InvalidEmailException extends \InvalidArgumentException implements Exception { } PK!B8 manifest/src/ManifestLoader.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class ManifestLoader { /** * @param string $filename * * @return Manifest * * @throws ManifestLoaderException */ public static function fromFile($filename) { try { return (new ManifestDocumentMapper())->map( ManifestDocument::fromFile($filename) ); } catch (Exception $e) { throw new ManifestLoaderException( sprintf('Loading %s failed.', $filename), $e->getCode(), $e ); } } /** * @param string $filename * * @return Manifest * * @throws ManifestLoaderException */ public static function fromPhar($filename) { return self::fromFile('phar://' . $filename . '/manifest.xml'); } /** * @param string $manifest * * @return Manifest * * @throws ManifestLoaderException */ public static function fromString($manifest) { try { return (new ManifestDocumentMapper())->map( ManifestDocument::fromString($manifest) ); } catch (Exception $e) { throw new ManifestLoaderException( 'Processing string failed', $e->getCode(), $e ); } } } PK!)-manifest/src/values/RequirementCollection.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class RequirementCollection implements \Countable, \IteratorAggregate { /** * @var Requirement[] */ private $requirements = []; public function add(Requirement $requirement) { $this->requirements[] = $requirement; } /** * @return Requirement[] */ public function getRequirements() { return $this->requirements; } /** * @return int */ public function count() { return count($this->requirements); } /** * @return RequirementCollectionIterator */ public function getIterator() { return new RequirementCollectionIterator($this); } } PK!0!manifest/src/values/Extension.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\Version; use PharIo\Version\VersionConstraint; class Extension extends Type { /** * @var ApplicationName */ private $application; /** * @var VersionConstraint */ private $versionConstraint; /** * @param ApplicationName $application * @param VersionConstraint $versionConstraint */ public function __construct(ApplicationName $application, VersionConstraint $versionConstraint) { $this->application = $application; $this->versionConstraint = $versionConstraint; } /** * @return ApplicationName */ public function getApplicationName() { return $this->application; } /** * @return VersionConstraint */ public function getVersionConstraint() { return $this->versionConstraint; } /** * @return bool */ public function isExtension() { return true; } /** * @param ApplicationName $name * * @return bool */ public function isExtensionFor(ApplicationName $name) { return $this->application->isEqual($name); } /** * @param ApplicationName $name * @param Version $version * * @return bool */ public function isCompatibleWith(ApplicationName $name, Version $version) { return $this->isExtensionFor($name) && $this->versionConstraint->complies($version); } } PK!Gr(manifest/src/values/AuthorCollection.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class AuthorCollection implements \Countable, \IteratorAggregate { /** * @var Author[] */ private $authors = []; public function add(Author $author) { $this->authors[] = $author; } /** * @return Author[] */ public function getAuthors() { return $this->authors; } /** * @return int */ public function count() { return count($this->authors); } /** * @return AuthorCollectionIterator */ public function getIterator() { return new AuthorCollectionIterator($this); } } PK!Fzmanifest/src/values/Library.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class Library extends Type { /** * @return bool */ public function isLibrary() { return true; } } PK!W8%%manifest/src/values/Author.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class Author { /** * @var string */ private $name; /** * @var Email */ private $email; /** * @param string $name * @param Email $email */ public function __construct($name, Email $email) { $this->name = $name; $this->email = $email; } /** * @return string */ public function getName() { return $this->name; } /** * @return Email */ public function getEmail() { return $this->email; } /** * @return string */ public function __toString() { return sprintf( '%s <%s>', $this->name, $this->email ); } } PK!6VApp#manifest/src/values/Requirement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; interface Requirement { } PK!D manifest/src/values/Manifest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\Version; class Manifest { /** * @var ApplicationName */ private $name; /** * @var Version */ private $version; /** * @var Type */ private $type; /** * @var CopyrightInformation */ private $copyrightInformation; /** * @var RequirementCollection */ private $requirements; /** * @var BundledComponentCollection */ private $bundledComponents; public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) { $this->name = $name; $this->version = $version; $this->type = $type; $this->copyrightInformation = $copyrightInformation; $this->requirements = $requirements; $this->bundledComponents = $bundledComponents; } /** * @return ApplicationName */ public function getName() { return $this->name; } /** * @return Version */ public function getVersion() { return $this->version; } /** * @return Type */ public function getType() { return $this->type; } /** * @return CopyrightInformation */ public function getCopyrightInformation() { return $this->copyrightInformation; } /** * @return RequirementCollection */ public function getRequirements() { return $this->requirements; } /** * @return BundledComponentCollection */ public function getBundledComponents() { return $this->bundledComponents; } /** * @return bool */ public function isApplication() { return $this->type->isApplication(); } /** * @return bool */ public function isLibrary() { return $this->type->isLibrary(); } /** * @return bool */ public function isExtension() { return $this->type->isExtension(); } /** * @param ApplicationName $application * @param Version|null $version * * @return bool */ public function isExtensionFor(ApplicationName $application, Version $version = null) { if (!$this->isExtension()) { return false; } /** @var Extension $type */ $type = $this->type; if ($version !== null) { return $type->isCompatibleWith($application, $version); } return $type->isExtensionFor($application); } } PK!</manifest/src/values/PhpExtensionRequirement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class PhpExtensionRequirement implements Requirement { /** * @var string */ private $extension; /** * @param string $extension */ public function __construct($extension) { $this->extension = $extension; } /** * @return string */ public function __toString() { return $this->extension; } } PK!f]manifest/src/values/Url.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class Url { /** * @var string */ private $url; /** * @param string $url * * @throws InvalidUrlException */ public function __construct($url) { $this->ensureUrlIsValid($url); $this->url = $url; } /** * @return string */ public function __toString() { return $this->url; } /** * @param string $url * * @throws InvalidUrlException */ private function ensureUrlIsValid($url) { if (filter_var($url, \FILTER_VALIDATE_URL) === false) { throw new InvalidUrlException; } } } PK!-Ũ(manifest/src/values/BundledComponent.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\Version; class BundledComponent { /** * @var string */ private $name; /** * @var Version */ private $version; /** * @param string $name * @param Version $version */ public function __construct($name, Version $version) { $this->name = $name; $this->version = $version; } /** * @return string */ public function getName() { return $this->name; } /** * @return Version */ public function getVersion() { return $this->version; } } PK!*manifest/src/values/License.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class License { /** * @var string */ private $name; /** * @var Url */ private $url; public function __construct($name, Url $url) { $this->name = $name; $this->url = $url; } /** * @return string */ public function getName() { return $this->name; } /** * @return Url */ public function getUrl() { return $this->url; } } PK!,-manifest/src/values/PhpVersionRequirement.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\VersionConstraint; class PhpVersionRequirement implements Requirement { /** * @var VersionConstraint */ private $versionConstraint; public function __construct(VersionConstraint $versionConstraint) { $this->versionConstraint = $versionConstraint; } /** * @return VersionConstraint */ public function getVersionConstraint() { return $this->versionConstraint; } } PK! ((2manifest/src/values/BundledComponentCollection.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class BundledComponentCollection implements \Countable, \IteratorAggregate { /** * @var BundledComponent[] */ private $bundledComponents = []; public function add(BundledComponent $bundledComponent) { $this->bundledComponents[] = $bundledComponent; } /** * @return BundledComponent[] */ public function getBundledComponents() { return $this->bundledComponents; } /** * @return int */ public function count() { return count($this->bundledComponents); } /** * @return BundledComponentCollectionIterator */ public function getIterator() { return new BundledComponentCollectionIterator($this); } } PK!pnmanifest/src/values/Type.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\VersionConstraint; abstract class Type { /** * @return Application */ public static function application() { return new Application; } /** * @return Library */ public static function library() { return new Library; } /** * @param ApplicationName $application * @param VersionConstraint $versionConstraint * * @return Extension */ public static function extension(ApplicationName $application, VersionConstraint $versionConstraint) { return new Extension($application, $versionConstraint); } /** * @return bool */ public function isApplication() { return false; } /** * @return bool */ public function isLibrary() { return false; } /** * @return bool */ public function isExtension() { return false; } } PK!cc'manifest/src/values/ApplicationName.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class ApplicationName { /** * @var string */ private $name; /** * ApplicationName constructor. * * @param string $name * * @throws InvalidApplicationNameException */ public function __construct($name) { $this->ensureIsString($name); $this->ensureValidFormat($name); $this->name = $name; } /** * @return string */ public function __toString() { return $this->name; } public function isEqual(ApplicationName $name) { return $this->name === $name->name; } /** * @param string $name * * @throws InvalidApplicationNameException */ private function ensureValidFormat($name) { if (!preg_match('#\w/\w#', $name)) { throw new InvalidApplicationNameException( sprintf('Format of name "%s" is not valid - expected: vendor/packagename', $name), InvalidApplicationNameException::InvalidFormat ); } } private function ensureIsString($name) { if (!is_string($name)) { throw new InvalidApplicationNameException( 'Name must be a string', InvalidApplicationNameException::NotAString ); } } } PK!7$~#manifest/src/values/Application.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class Application extends Type { /** * @return bool */ public function isApplication() { return true; } } PK!tbxx,manifest/src/values/CopyrightInformation.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class CopyrightInformation { /** * @var AuthorCollection */ private $authors; /** * @var License */ private $license; public function __construct(AuthorCollection $authors, License $license) { $this->authors = $authors; $this->license = $license; } /** * @return AuthorCollection */ public function getAuthors() { return $this->authors; } /** * @return License */ public function getLicense() { return $this->license; } } PK!cMmanifest/src/values/Email.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class Email { /** * @var string */ private $email; /** * @param string $email * * @throws InvalidEmailException */ public function __construct($email) { $this->ensureEmailIsValid($email); $this->email = $email; } /** * @return string */ public function __toString() { return $this->email; } /** * @param string $url * * @throws InvalidEmailException */ private function ensureEmailIsValid($url) { if (filter_var($url, \FILTER_VALIDATE_EMAIL) === false) { throw new InvalidEmailException; } } } PK!}:manifest/src/values/BundledComponentCollectionIterator.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class BundledComponentCollectionIterator implements \Iterator { /** * @var BundledComponent[] */ private $bundledComponents = []; /** * @var int */ private $position; public function __construct(BundledComponentCollection $bundledComponents) { $this->bundledComponents = $bundledComponents->getBundledComponents(); } public function rewind() { $this->position = 0; } /** * @return bool */ public function valid() { return $this->position < count($this->bundledComponents); } /** * @return int */ public function key() { return $this->position; } /** * @return BundledComponent */ public function current() { return $this->bundledComponents[$this->position]; } public function next() { $this->position++; } } PK!aa0manifest/src/values/AuthorCollectionIterator.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class AuthorCollectionIterator implements \Iterator { /** * @var Author[] */ private $authors = []; /** * @var int */ private $position; public function __construct(AuthorCollection $authors) { $this->authors = $authors->getAuthors(); } public function rewind() { $this->position = 0; } /** * @return bool */ public function valid() { return $this->position < count($this->authors); } /** * @return int */ public function key() { return $this->position; } /** * @return Author */ public function current() { return $this->authors[$this->position]; } public function next() { $this->position++; } } PK!n5manifest/src/values/RequirementCollectionIterator.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; class RequirementCollectionIterator implements \Iterator { /** * @var Requirement[] */ private $requirements = []; /** * @var int */ private $position; public function __construct(RequirementCollection $requirements) { $this->requirements = $requirements->getRequirements(); } public function rewind() { $this->position = 0; } /** * @return bool */ public function valid() { return $this->position < count($this->requirements); } /** * @return int */ public function key() { return $this->position; } /** * @return Requirement */ public function current() { return $this->requirements[$this->position]; } public function next() { $this->position++; } } PK!$W0QQmanifest/LICENSEnu[manifest Copyright (c) 2016 Arne Blankerts , Sebastian Heuer , Sebastian Bergmann , and contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Arne Blankerts nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PK!\||manifest/manifest.xsdnu[ PK!u*]manifest/composer.locknu[{ "_readme": [ "This file locks the dependencies of your project to a known state", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], "content-hash": "f00846dde236d314a19d00d268d737dd", "packages": [ { "name": "phar-io/version", "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "type": "library", "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Arne Blankerts", "email": "arne@blankerts.de", "role": "Developer" }, { "name": "Sebastian Heuer", "email": "sebastian@phpeople.de", "role": "Developer" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "Developer" } ], "description": "Library for handling version information and constraints", "time": "2018-07-08T19:19:57+00:00" } ], "packages-dev": [], "aliases": [], "minimum-stability": "stable", "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { "php": "^5.6 || ^7.0", "ext-dom": "*", "ext-phar": "*" }, "platform-dev": [] } PK!݈version/phpunit.xmlnu[ tests src PK!B-g`version/phive.xmlnu[ PK! psAversion/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\SpecificMajorAndMinorVersionConstraint */ class SpecificMajorAndMinorVersionConstraintTest extends TestCase { public function versionProvider() { return [ // compliant versions [1, 0, new Version('1.0.2'), true], [1, 0, new Version('1.0.3'), true], [1, 1, new Version('1.1.1'), true], // non-compliant versions [2, 9, new Version('0.9.9'), false], [3, 2, new Version('2.2.3'), false], [2, 8, new Version('2.9.9'), false], ]; } /** * @dataProvider versionProvider * * @param int $major * @param int $minor * @param Version $version * @param bool $expectedResult */ public function testReturnsTrueForCompliantVersions($major, $minor, Version $version, $expectedResult) { $constraint = new SpecificMajorAndMinorVersionConstraint('foo', $major, $minor); $this->assertSame($expectedResult, $constraint->complies($version)); } } PK!Qm3version/tests/Unit/OrVersionConstraintGroupTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\OrVersionConstraintGroup */ class OrVersionConstraintGroupTest extends TestCase { public function testReturnsTrueIfOneConstraintReturnsFalse() { $firstConstraint = $this->createMock(VersionConstraint::class); $secondConstraint = $this->createMock(VersionConstraint::class); $firstConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(false)); $secondConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(true)); $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]); $this->assertTrue($group->complies(new Version('1.0.0'))); } public function testReturnsTrueIfAllConstraintsReturnsTrue() { $firstConstraint = $this->createMock(VersionConstraint::class); $secondConstraint = $this->createMock(VersionConstraint::class); $firstConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(true)); $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]); $this->assertTrue($group->complies(new Version('1.0.0'))); } public function testReturnsFalseIfAllConstraintsReturnsFalse() { $firstConstraint = $this->createMock(VersionConstraint::class); $secondConstraint = $this->createMock(VersionConstraint::class); $firstConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(false)); $secondConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(false)); $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]); $this->assertFalse($group->complies(new Version('1.0.0'))); } } PK!I 5+version/tests/Unit/PreReleaseSuffixTest.phpnu[assertSame($expectedResult, $leftSuffix->isGreaterThan($rightSuffix)); } public function greaterThanProvider() { return [ ['alpha1', 'alpha2', false], ['alpha2', 'alpha1', true], ['beta1', 'alpha3', true], ['b1', 'alpha3', true], ['b1', 'a3', true], ['dev1', 'alpha2', false], ['dev1', 'alpha2', false], ['alpha2', 'dev5', true], ['rc1', 'beta2', true], ['patch5', 'rc7', true], ['alpha1', 'alpha.2', false], ['alpha.3', 'alpha2', true], ['alpha.3', 'alpha.2', true], ]; } } PK!(S}}1version/tests/Unit/ExactVersionConstraintTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\ExactVersionConstraint */ class ExactVersionConstraintTest extends TestCase { public function compliantVersionProvider() { return [ ['1.0.2', new Version('1.0.2')], ['4.8.9', new Version('4.8.9')], ['4.8', new Version('4.8')], ]; } public function nonCompliantVersionProvider() { return [ ['1.0.2', new Version('1.0.3')], ['4.8.9', new Version('4.7.9')], ['4.8', new Version('4.8.5')], ]; } /** * @dataProvider compliantVersionProvider * * @param string $constraintValue * @param Version $version */ public function testReturnsTrueForCompliantVersion($constraintValue, Version $version) { $constraint = new ExactVersionConstraint($constraintValue); $this->assertTrue($constraint->complies($version)); } /** * @dataProvider nonCompliantVersionProvider * * @param string $constraintValue * @param Version $version */ public function testReturnsFalseForNonCompliantVersion($constraintValue, Version $version) { $constraint = new ExactVersionConstraint($constraintValue); $this->assertFalse($constraint->complies($version)); } } PK! "version/tests/Unit/VersionTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\Version */ class VersionTest extends TestCase { /** * @dataProvider versionProvider * * @param string $versionString * @param string $expectedMajor * @param string $expectedMinor * @param string $expectedPatch * @param string $expectedPreReleaseValue * @param int $expectedReleaseCount */ public function testParsesVersionNumbers( $versionString, $expectedMajor, $expectedMinor, $expectedPatch, $expectedPreReleaseValue = '', $expectedReleaseCount = 0 ) { $version = new Version($versionString); $this->assertSame($expectedMajor, $version->getMajor()->getValue()); $this->assertSame($expectedMinor, $version->getMinor()->getValue()); $this->assertSame($expectedPatch, $version->getPatch()->getValue()); if ($expectedPreReleaseValue !== '') { $this->assertSame($expectedPreReleaseValue, $version->getPreReleaseSuffix()->getValue()); } if ($expectedReleaseCount !== 0) { $this->assertSame($expectedReleaseCount, $version->getPreReleaseSuffix()->getNumber()); } $this->assertSame($versionString, $version->getVersionString()); } public function versionProvider() { return [ ['0.0.1', '0', '0', '1'], ['0.1.2', '0', '1', '2'], ['1.0.0-alpha', '1', '0', '0', 'alpha'], ['3.4.12-dev3', '3', '4', '12', 'dev', 3], ]; } /** * @dataProvider versionGreaterThanProvider * * @param Version $versionA * @param Version $versionB * @param bool $expectedResult */ public function testIsGreaterThan(Version $versionA, Version $versionB, $expectedResult) { $this->assertSame($expectedResult, $versionA->isGreaterThan($versionB)); } /** * @return array */ public function versionGreaterThanProvider() { return [ [new Version('1.0.0'), new Version('1.0.1'), false], [new Version('1.0.1'), new Version('1.0.0'), true], [new Version('1.1.0'), new Version('1.0.1'), true], [new Version('1.1.0'), new Version('2.0.1'), false], [new Version('1.1.0'), new Version('1.1.0'), false], [new Version('2.5.8'), new Version('1.6.8'), true], [new Version('2.5.8'), new Version('2.6.8'), false], [new Version('2.5.8'), new Version('3.1.2'), false], [new Version('3.0.0-alpha1'), new Version('3.0.0-alpha2'), false], [new Version('3.0.0-alpha2'), new Version('3.0.0-alpha1'), true], [new Version('3.0.0-alpha.1'), new Version('3.0.0'), false], [new Version('3.0.0'), new Version('3.0.0-alpha.1'), true], ]; } /** * @dataProvider invalidVersionStringProvider * * @param string $versionString */ public function testThrowsExceptionIfVersionStringDoesNotFollowSemVer($versionString) { $this->expectException(InvalidVersionException::class); new Version($versionString); } /** * @return array */ public function invalidVersionStringProvider() { return [ ['foo'], ['0.0.1-dev+ABC', '0', '0', '1', 'dev', 'ABC'], ['1.0.0-x.7.z.92', '1', '0', '0', 'x.7.z.92'] ]; } } PK!D,L229version/tests/Unit/SpecificMajorVersionConstraintTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\SpecificMajorVersionConstraint */ class SpecificMajorVersionConstraintTest extends TestCase { public function versionProvider() { return [ // compliant versions [1, new Version('1.0.2'), true], [1, new Version('1.0.3'), true], [1, new Version('1.1.1'), true], // non-compliant versions [2, new Version('0.9.9'), false], [3, new Version('2.2.3'), false], [3, new Version('2.9.9'), false], ]; } /** * @dataProvider versionProvider * * @param int $major * @param Version $version * @param bool $expectedResult */ public function testReturnsTrueForCompliantVersions($major, Version $version, $expectedResult) { $constraint = new SpecificMajorVersionConstraint('foo', $major); $this->assertSame($expectedResult, $constraint->complies($version)); } } PK!4version/tests/Unit/AbstractVersionConstraintTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\AbstractVersionConstraint */ class AbstractVersionConstraintTest extends TestCase { public function testAsString() { /** @var AbstractVersionConstraint|\PHPUnit_Framework_MockObject_MockObject $constraint */ $constraint = $this->getMockForAbstractClass(AbstractVersionConstraint::class, ['foo']); $this->assertSame('foo', $constraint->asString()); } } PK!hE4version/tests/Unit/AndVersionConstraintGroupTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\AndVersionConstraintGroup */ class AndVersionConstraintGroupTest extends TestCase { public function testReturnsFalseIfOneConstraintReturnsFalse() { $firstConstraint = $this->createMock(VersionConstraint::class); $secondConstraint = $this->createMock(VersionConstraint::class); $firstConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(true)); $secondConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(false)); $group = new AndVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]); $this->assertFalse($group->complies(new Version('1.0.0'))); } public function testReturnsTrueIfAllConstraintsReturnsTrue() { $firstConstraint = $this->createMock(VersionConstraint::class); $secondConstraint = $this->createMock(VersionConstraint::class); $firstConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(true)); $secondConstraint->expects($this->once()) ->method('complies') ->will($this->returnValue(true)); $group = new AndVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]); $this->assertTrue($group->complies(new Version('1.0.0'))); } } PK! [9@version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\GreaterThanOrEqualToVersionConstraint */ class GreaterThanOrEqualToVersionConstraintTest extends TestCase { public function versionProvider() { return [ // compliant versions [new Version('1.0.2'), new Version('1.0.2'), true], [new Version('1.0.2'), new Version('1.0.3'), true], [new Version('1.0.2'), new Version('1.1.1'), true], [new Version('1.0.2'), new Version('2.0.0'), true], [new Version('1.0.2'), new Version('1.0.3'), true], // non-compliant versions [new Version('1.0.2'), new Version('1.0.1'), false], [new Version('1.9.8'), new Version('0.9.9'), false], [new Version('2.3.1'), new Version('2.2.3'), false], [new Version('3.0.2'), new Version('2.9.9'), false], ]; } /** * @dataProvider versionProvider * * @param Version $constraintVersion * @param Version $version * @param bool $expectedResult */ public function testReturnsTrueForCompliantVersions(Version $constraintVersion, Version $version, $expectedResult) { $constraint = new GreaterThanOrEqualToVersionConstraint('foo', $constraintVersion); $this->assertSame($expectedResult, $constraint->complies($version)); } } PK! z!/version/tests/Unit/AnyVersionConstraintTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\AnyVersionConstraint */ class AnyVersionConstraintTest extends TestCase { public function versionProvider() { return [ [new Version('1.0.2')], [new Version('4.8')], [new Version('0.1.1-dev')] ]; } /** * @dataProvider versionProvider * * @param Version $version */ public function testReturnsTrue(Version $version) { $constraint = new AnyVersionConstraint; $this->assertTrue($constraint->complies($version)); } public function testAsString() { $this->assertSame('*', (new AnyVersionConstraint())->asString()); } } PK!ö9version/tests/Integration/VersionConstraintParserTest.phpnu[, Sebastian Heuer , Sebastian Bergmann * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Version\VersionConstraintParser */ class VersionConstraintParserTest extends TestCase { /** * @dataProvider versionStringProvider * * @param string $versionString * @param VersionConstraint $expectedConstraint */ public function testReturnsExpectedConstraint($versionString, VersionConstraint $expectedConstraint) { $parser = new VersionConstraintParser; $this->assertEquals($expectedConstraint, $parser->parse($versionString)); } /** * @dataProvider unsupportedVersionStringProvider * * @param string $versionString */ public function testThrowsExceptionIfVersionStringIsNotSupported($versionString) { $parser = new VersionConstraintParser; $this->expectException(UnsupportedVersionConstraintException::class); $parser->parse($versionString); } /** * @return array */ public function versionStringProvider() { return [ ['1.0.2', new ExactVersionConstraint('1.0.2')], [ '~4.6', new AndVersionConstraintGroup( '~4.6', [ new GreaterThanOrEqualToVersionConstraint('~4.6', new Version('4.6')), new SpecificMajorVersionConstraint('~4.6', 4) ] ) ], [ '~4.6.2', new AndVersionConstraintGroup( '~4.6.2', [ new GreaterThanOrEqualToVersionConstraint('~4.6.2', new Version('4.6.2')), new SpecificMajorAndMinorVersionConstraint('~4.6.2', 4, 6) ] ) ], [ '^2.6.1', new AndVersionConstraintGroup( '^2.6.1', [ new GreaterThanOrEqualToVersionConstraint('^2.6.1', new Version('2.6.1')), new SpecificMajorVersionConstraint('^2.6.1', 2) ] ) ], ['5.1.*', new SpecificMajorAndMinorVersionConstraint('5.1.*', 5, 1)], ['5.*', new SpecificMajorVersionConstraint('5.*', 5)], ['*', new AnyVersionConstraint()], [ '1.0.2 || 1.0.5', new OrVersionConstraintGroup( '1.0.2 || 1.0.5', [ new ExactVersionConstraint('1.0.2'), new ExactVersionConstraint('1.0.5') ] ) ], [ '^5.6 || ^7.0', new OrVersionConstraintGroup( '^5.6 || ^7.0', [ new AndVersionConstraintGroup( '^5.6', [ new GreaterThanOrEqualToVersionConstraint('^5.6', new Version('5.6')), new SpecificMajorVersionConstraint('^5.6', 5) ] ), new AndVersionConstraintGroup( '^7.0', [ new GreaterThanOrEqualToVersionConstraint('^7.0', new Version('7.0')), new SpecificMajorVersionConstraint('^7.0', 7) ] ) ] ) ], ['7.0.28-1', new ExactVersionConstraint('7.0.28-1')], [ '^3.0.0-alpha1', new AndVersionConstraintGroup( '^3.0.0-alpha1', [ new GreaterThanOrEqualToVersionConstraint('^3.0.0-alpha1', new Version('3.0.0-alpha1')), new SpecificMajorVersionConstraint('^3.0.0-alpha1', 3) ] ) ], [ '^3.0.0-alpha.1', new AndVersionConstraintGroup( '^3.0.0-alpha.1', [ new GreaterThanOrEqualToVersionConstraint('^3.0.0-alpha.1', new Version('3.0.0-alpha.1')), new SpecificMajorVersionConstraint('^3.0.0-alpha.1', 3) ] ) ] ]; } public function unsupportedVersionStringProvider() { return [ ['foo'], ['+1.0.2'], ['>=2.0'], ['^5.6 || >= 7.0'], ['2.0 || foo'] ]; } } PK!D\Cversion/.travis.ymlnu[os: - linux language: php before_install: - wget https://phar.io/releases/phive.phar - wget https://phar.io/releases/phive.phar.asc - gpg --keyserver hkps.pool.sks-keyservers.net --recv-keys 0x9B2D5D79 - gpg --verify phive.phar.asc phive.phar - chmod +x phive.phar - sudo mv phive.phar /usr/bin/phive install: - ant setup script: ./tools/phpunit php: - 5.6 - 7.0 - 7.1 - 7.0snapshot - 7.1snapshot - master matrix: allow_failures: - php: master fast_finish: true notifications: email: false PK!Krversion/.php_csnu[files() ->in('src') ->in('tests') ->name('*.php'); return Symfony\CS\Config\Config::create() ->setUsingCache(true) ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) ->fixers( array( 'align_double_arrow', 'align_equals', 'concat_with_spaces', 'duplicate_semicolon', 'elseif', 'empty_return', 'encoding', 'eof_ending', 'extra_empty_lines', 'function_call_space', 'function_declaration', 'indentation', 'join_function', 'line_after_namespace', 'linefeed', 'list_commas', 'lowercase_constants', 'lowercase_keywords', 'method_argument_space', 'multiple_use', 'namespace_no_leading_whitespace', 'no_blank_lines_after_class_opening', 'no_empty_lines_after_phpdocs', 'parenthesis', 'php_closing_tag', 'phpdoc_indent', 'phpdoc_no_access', 'phpdoc_no_empty_return', 'phpdoc_no_package', 'phpdoc_params', 'phpdoc_scalar', 'phpdoc_separation', 'phpdoc_to_comment', 'phpdoc_trim', 'phpdoc_types', 'phpdoc_var_without_name', 'remove_lines_between_uses', 'return', 'self_accessor', 'short_array_syntax', 'short_tag', 'single_line_after_imports', 'single_quote', 'spaces_before_semicolon', 'spaces_cast', 'ternary_spaces', 'trailing_spaces', 'trim_array_spaces', 'unused_use', 'visibility', 'whitespacy_lines' ) ) ->finder($finder); PK!TMMversion/build.xmlnu[ PK!>GGversion/.gitignorenu[/.idea /.php_cs.cache /composer.lock /src/autoload.php /tools /vendor PK!@manifest/phpunit.xmlnu[ tests src PK!r$manifest/phive.xmlnu[ PK!X5H  %manifest/tests/ManifestLoaderTest.phpnu[assertInstanceOf( Manifest::class, ManifestLoader::fromFile(__DIR__ . '/_fixture/library.xml') ); } public function testCanBeLoadedFromString() { $this->assertInstanceOf( Manifest::class, ManifestLoader::fromString( file_get_contents(__DIR__ . '/_fixture/library.xml') ) ); } public function testCanBeLoadedFromPhar() { $this->assertInstanceOf( Manifest::class, ManifestLoader::fromPhar(__DIR__ . '/_fixture/test.phar') ); } public function testLoadingNonExistingFileThrowsException() { $this->expectException(ManifestLoaderException::class); ManifestLoader::fromFile('/not/existing'); } /** * @uses \PharIo\Manifest\ManifestDocumentLoadingException */ public function testLoadingInvalidXmlThrowsException() { $this->expectException(ManifestLoaderException::class); ManifestLoader::fromString(''); } } PK!Б-manifest/tests/ManifestDocumentMapperTest.phpnu[assertInstanceOf( Manifest::class, $mapper->map($manifestDocument) ); } public function dataProvider() { return [ 'application' => [__DIR__ . '/_fixture/phpunit-5.6.5.xml'], 'library' => [__DIR__ . '/_fixture/library.xml'], 'extension' => [__DIR__ . '/_fixture/extension.xml'] ]; } public function testThrowsExceptionOnUnsupportedType() { $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/custom.xml'); $mapper = new ManifestDocumentMapper(); $this->expectException(ManifestDocumentMapperException::class); $mapper->map($manifestDocument); } public function testInvalidVersionInformationThrowsException() { $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/invalidversion.xml'); $mapper = new ManifestDocumentMapper(); $this->expectException(ManifestDocumentMapperException::class); $mapper->map($manifestDocument); } public function testInvalidVersionConstraintThrowsException() { $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/invalidversionconstraint.xml'); $mapper = new ManifestDocumentMapper(); $this->expectException(ManifestDocumentMapperException::class); $mapper->map($manifestDocument); } /** * @uses \PharIo\Manifest\ExtensionElement */ public function testInvalidCompatibleConstraintThrowsException() { $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/extension-invalidcompatible.xml'); $mapper = new ManifestDocumentMapper(); $this->expectException(ManifestDocumentMapperException::class); $mapper->map($manifestDocument); } } PK!&1[[)manifest/tests/ManifestSerializerTest.phpnu[assertXmlStringEqualsXmlString( $expected, $serializer->serializeToString($manifest) ); } public function dataProvider() { return [ 'application' => [file_get_contents(__DIR__ . '/_fixture/phpunit-5.6.5.xml')], 'library' => [file_get_contents(__DIR__ . '/_fixture/library.xml')], 'extension' => [file_get_contents(__DIR__ . '/_fixture/extension.xml')] ]; } /** * @uses \PharIo\Manifest\Library * @uses \PharIo\Manifest\ApplicationName */ public function testCanSerializeToFile() { $src = __DIR__ . '/_fixture/library.xml'; $dest = '/tmp/' . uniqid('serializer', true); $manifest = ManifestLoader::fromFile($src); $serializer = new ManifestSerializer(); $serializer->serializeToFile($manifest, $dest); $this->assertXmlFileEqualsXmlFile($src, $dest); unlink($dest); } /** * @uses \PharIo\Manifest\ApplicationName */ public function testCanHandleUnknownType() { $type = $this->getMockForAbstractClass(Type::class); $manifest = new Manifest( new ApplicationName('testvendor/testname'), new Version('1.0.0'), $type, new CopyrightInformation( new AuthorCollection(), new License('bsd-3', new Url('https://some/uri')) ), new RequirementCollection(), new BundledComponentCollection() ); $serializer = new ManifestSerializer(); $this->assertXmlStringEqualsXmlFile( __DIR__ . '/_fixture/custom.xml', $serializer->serializeToString($manifest) ); } } PK!Ծ!manifest/tests/_fixture/test.pharnu[ 2, 'c' => 'text/plain', 'cc' => 'text/plain', 'cpp' => 'text/plain', 'c++' => 'text/plain', 'dtd' => 'text/plain', 'h' => 'text/plain', 'log' => 'text/plain', 'rng' => 'text/plain', 'txt' => 'text/plain', 'xsd' => 'text/plain', 'php' => 1, 'inc' => 1, 'avi' => 'video/avi', 'bmp' => 'image/bmp', 'css' => 'text/css', 'gif' => 'image/gif', 'htm' => 'text/html', 'html' => 'text/html', 'htmls' => 'text/html', 'ico' => 'image/x-ico', 'jpe' => 'image/jpeg', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'js' => 'application/x-javascript', 'midi' => 'audio/midi', 'mid' => 'audio/midi', 'mod' => 'audio/mod', 'mov' => 'movie/quicktime', 'mp3' => 'audio/mp3', 'mpg' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'pdf' => 'application/pdf', 'png' => 'image/png', 'swf' => 'application/shockwave-flash', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'wav' => 'audio/wav', 'xbm' => 'image/xbm', 'xml' => 'text/xml', ); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); $basename = basename(__FILE__); if (!strpos($_SERVER['REQUEST_URI'], $basename)) { chdir(Extract_Phar::$temp); include $web; return; } $pt = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], $basename) + strlen($basename)); if (!$pt || $pt == '/') { $pt = $web; header('HTTP/1.1 301 Moved Permanently'); header('Location: ' . $_SERVER['REQUEST_URI'] . '/' . $pt); exit; } $a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt); if (!$a || strlen(dirname($a)) < strlen(Extract_Phar::$temp)) { header('HTTP/1.0 404 Not Found'); echo "\n \n File Not Found<title>\n </head>\n <body>\n <h1>404 - File ", $pt, " Not Found</h1>\n </body>\n</html>"; exit; } $b = pathinfo($a); if (!isset($b['extension'])) { header('Content-Type: text/plain'); header('Content-Length: ' . filesize($a)); readfile($a); exit; } if (isset($mimes[$b['extension']])) { if ($mimes[$b['extension']] === 1) { include $a; exit; } if ($mimes[$b['extension']] === 2) { highlight_file($a); exit; } header('Content-Type: ' .$mimes[$b['extension']]); header('Content-Length: ' . filesize($a)); readfile($a); exit; } } class Extract_Phar { static $temp; static $origdir; const GZ = 0x1000; const BZ2 = 0x2000; const MASK = 0x3000; const START = 'index.php'; const LEN = 6685; static function go($return = false) { $fp = fopen(__FILE__, 'rb'); fseek($fp, self::LEN); $L = unpack('V', $a = (binary)fread($fp, 4)); $m = (binary)''; do { $read = 8192; if ($L[1] - strlen($m) < 8192) { $read = $L[1] - strlen($m); } $last = (binary)fread($fp, $read); $m .= $last; } while (strlen($last) && strlen($m) < $L[1]); if (strlen($m) < $L[1]) { die('ERROR: manifest length read was "' . strlen($m) .'" should be "' . $L[1] . '"'); } $info = self::_unpack($m); $f = $info['c']; if ($f & self::GZ) { if (!function_exists('gzinflate')) { die('Error: zlib extension is not enabled -' . ' gzinflate() function needed for zlib-compressed .phars'); } } if ($f & self::BZ2) { if (!function_exists('bzdecompress')) { die('Error: bzip2 extension is not enabled -' . ' bzdecompress() function needed for bz2-compressed .phars'); } } $temp = self::tmpdir(); if (!$temp || !is_writable($temp)) { $sessionpath = session_save_path(); if (strpos ($sessionpath, ";") !== false) $sessionpath = substr ($sessionpath, strpos ($sessionpath, ";")+1); if (!file_exists($sessionpath) || !is_dir($sessionpath)) { die('Could not locate temporary directory to extract phar'); } $temp = $sessionpath; } $temp .= '/pharextract/'.basename(__FILE__, '.phar'); self::$temp = $temp; self::$origdir = getcwd(); @mkdir($temp, 0777, true); $temp = realpath($temp); if (!file_exists($temp . DIRECTORY_SEPARATOR . md5_file(__FILE__))) { self::_removeTmpFiles($temp, getcwd()); @mkdir($temp, 0777, true); @file_put_contents($temp . '/' . md5_file(__FILE__), ''); foreach ($info['m'] as $path => $file) { $a = !file_exists(dirname($temp . '/' . $path)); @mkdir(dirname($temp . '/' . $path), 0777, true); clearstatcache(); if ($path[strlen($path) - 1] == '/') { @mkdir($temp . '/' . $path, 0777); } else { file_put_contents($temp . '/' . $path, self::extractFile($path, $file, $fp)); @chmod($temp . '/' . $path, 0666); } } } chdir($temp); if (!$return) { include self::START; } } static function tmpdir() { if (strpos(PHP_OS, 'WIN') !== false) { if ($var = getenv('TMP') ? getenv('TMP') : getenv('TEMP')) { return $var; } if (is_dir('/temp') || mkdir('/temp')) { return realpath('/temp'); } return false; } if ($var = getenv('TMPDIR')) { return $var; } return realpath('/tmp'); } static function _unpack($m) { $info = unpack('V', substr($m, 0, 4)); $l = unpack('V', substr($m, 10, 4)); $m = substr($m, 14 + $l[1]); $s = unpack('V', substr($m, 0, 4)); $o = 0; $start = 4 + $s[1]; $ret['c'] = 0; for ($i = 0; $i < $info[1]; $i++) { $len = unpack('V', substr($m, $start, 4)); $start += 4; $savepath = substr($m, $start, $len[1]); $start += $len[1]; $ret['m'][$savepath] = array_values(unpack('Va/Vb/Vc/Vd/Ve/Vf', substr($m, $start, 24))); $ret['m'][$savepath][3] = sprintf('%u', $ret['m'][$savepath][3] & 0xffffffff); $ret['m'][$savepath][7] = $o; $o += $ret['m'][$savepath][2]; $start += 24 + $ret['m'][$savepath][5]; $ret['c'] |= $ret['m'][$savepath][4] & self::MASK; } return $ret; } static function extractFile($path, $entry, $fp) { $data = ''; $c = $entry[2]; while ($c) { if ($c < 8192) { $data .= @fread($fp, $c); $c = 0; } else { $c -= 8192; $data .= @fread($fp, 8192); } } if ($entry[4] & self::GZ) { $data = gzinflate($data); } elseif ($entry[4] & self::BZ2) { $data = bzdecompress($data); } if (strlen($data) != $entry[0]) { die("Invalid internal .phar file (size error " . strlen($data) . " != " . $stat[7] . ")"); } if ($entry[3] != sprintf("%u", crc32((binary)$data) & 0xffffffff)) { die("Invalid internal .phar file (checksum error)"); } return $data; } static function _removeTmpFiles($temp, $origdir) { chdir($temp); foreach (glob('*') as $f) { if (file_exists($f)) { is_dir($f) ? @rmdir($f) : @unlink($f); if (file_exists($f) && is_dir($f)) { self::_removeTmpFiles($f, getcwd()); } } } @rmdir($temp); clearstatcache(); chdir($origdir); } } Extract_Phar::go(); __HALT_COMPILER(); ?>:������������������ ���manifest.xml��';X��vyP������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="some/library" version="1.0.0" type="library" /> <copyright> <author name="Reiner Zufall" email="reiner@zufall.de"/> <license type="BSD-3-Clause" url="https://domain.tld/LICENSE"/> </copyright> <requires> <php version="7.0"/> </requires> </phar> !7]O>a~^Yy���GBMBPK�������!�D%,��,��%��manifest/tests/_fixture/extension.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="phpunit/phpunit-example-extension" version="1.0.0" type="extension"> <extension for="phpunit/phpunit" compatible="^5.7"/> </contains> <copyright> <author name="Sebastian Bergmann" email="sebastian@phpunit.de"/> <license type="BSD-3-Clause" url="https://github.com/sebastianbergmann/phpunit-example-extension/blob/master/LICENSE"/> </copyright> <requires> <php version="^7.0"/> </requires> </phar> PK�������!�vyP����$��manifest/tests/_fixture/manifest.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="some/library" version="1.0.0" type="library" /> <copyright> <author name="Reiner Zufall" email="reiner@zufall.de"/> <license type="BSD-3-Clause" url="https://domain.tld/LICENSE"/> </copyright> <requires> <php version="7.0"/> </requires> </phar> PK�������!�zٌ����4��manifest/tests/_fixture/invalidversionconstraint.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="some/library" version="1.0.0" type="library" /> <copyright> <author name="Reiner Zufall" email="reiner@zufall.de"/> <license type="BSD-3-Clause" url="https://domain.tld/LICENSE"/> </copyright> <requires> <php version="invalid"/> </requires> </phar> PK�������!�vyP����#��manifest/tests/_fixture/library.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="some/library" version="1.0.0" type="library" /> <copyright> <author name="Reiner Zufall" email="reiner@zufall.de"/> <license type="BSD-3-Clause" url="https://domain.tld/LICENSE"/> </copyright> <requires> <php version="7.0"/> </requires> </phar> PK�������!� V/��/��7��manifest/tests/_fixture/extension-invalidcompatible.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="phpunit/phpunit-example-extension" version="1.0.0" type="extension"> <extension for="phpunit/phpunit" compatible="invalid"/> </contains> <copyright> <author name="Sebastian Bergmann" email="sebastian@phpunit.de"/> <license type="BSD-3-Clause" url="https://github.com/sebastianbergmann/phpunit-example-extension/blob/master/LICENSE"/> </copyright> <requires> <php version="^7.0"/> </requires> </phar> PK�������!�- �� ��)��manifest/tests/_fixture/phpunit-5.6.5.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="phpunit/phpunit" version="5.6.5" type="application"/> <copyright> <author name="Sebastian Bergmann" email="sebastian@phpunit.de"/> <license type="BSD-3-Clause" url="https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE"/> </copyright> <requires> <!-- constraint on next line should be ^5.6 || ^7.0 --> <php version="^7.0"> <ext name="dom"/> <ext name="json"/> <ext name="mbstring"/> <ext name="xml"/> <ext name="libxml"/> </php> </requires> <bundles> <component name="doctrine/instantiator" version="1.0.5"/> <component name="myclabs/deep-copy" version="1.5.5"/> <component name="phpdocumentor/reflection-common" version="1.0"/> <component name="phpdocumentor/reflection-docblock" version="3.1.1"/> <component name="phpdocumentor/type-resolver" version="0.2"/> <component name="phpspec/prophecy" version="v1.6.2"/> <component name="phpunit/dbunit" version="2.0.2"/> <component name="phpunit/php-code-coverage" version="4.0.2"/> <component name="phpunit/php-file-iterator" version="1.4.1"/> <component name="phpunit/php-invoker" version="1.1.4"/> <component name="phpunit/php-text-template" version="1.2.1"/> <component name="phpunit/php-timer" version="1.0.8"/> <component name="phpunit/php-token-stream" version="1.4.9"/> <component name="phpunit/phpunit-mock-objects" version="3.4.1"/> <component name="sebastian/code-unit-reverse-lookup" version="1.0.0"/> <component name="sebastian/comparator" version="1.2.2"/> <component name="sebastian/diff" version="1.4.1"/> <component name="sebastian/environment" version="1.3.8"/> <component name="sebastian/exporter" version="2.0.0"/> <component name="sebastian/global-state" version="1.1.1"/> <component name="sebastian/object-enumerator" version="2.0.0"/> <component name="sebastian/recursion-context" version="2.0.0"/> <component name="sebastian/resource-operations" version="1.0.0"/> <component name="sebastian/version" version="2.0.0"/> <component name="symfony/yaml" version="v3.1.7"/> <component name="webmozart/assert" version="1.1.0"/> </bundles> </phar> PK�������!�)����*��manifest/tests/_fixture/invalidversion.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="some/library" version="abc" type="library" /> <copyright> <author name="Reiner Zufall" email="reiner@zufall.de"/> <license type="BSD-3-Clause" url="https://domain.tld/LICENSE"/> </copyright> <requires> <php version="7.0"/> </requires> </phar> PK�������!�o:��:��"��manifest/tests/_fixture/custom.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <phar xmlns="https://phar.io/xml/manifest/1.0"> <contains name="testvendor/testname" version="1.0.0" type="custom"/> <copyright> <license type="bsd-3" url="https://some/uri"/> </copyright> <requires> <php version="*"/> </requires> </phar> PK�������!�hEL��L��2��manifest/tests/xml/AuthorElementCollectionTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; class AuthorElementCollectionTest extends \PHPUnit\Framework\TestCase { public function testAuthorElementCanBeRetrievedFromCollection() { $dom = new DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><author xmlns="https://phar.io/xml/manifest/1.0" name="Reiner Zufall" email="reiner@zufall.de" />'); $collection = new AuthorElementCollection($dom->childNodes); foreach($collection as $authorElement) { $this->assertInstanceOf(AuthorElement::class, $authorElement); } } } PK�������!�E+����+��manifest/tests/xml/ComponentElementTest.phpnu�[��������<?php namespace PharIo\Manifest; class ComponentElementTest extends \PHPUnit\Framework\TestCase { /** * @var ComponentElement */ private $component; protected function setUp() { $dom = new \DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><component xmlns="https://phar.io/xml/manifest/1.0" name="phar-io/phive" version="0.6.0" />'); $this->component = new ComponentElement($dom->documentElement); } public function testNameCanBeRetrieved() { $this->assertEquals('phar-io/phive', $this->component->getName()); } public function testEmailCanBeRetrieved() { $this->assertEquals('0.6.0', $this->component->getVersion()); } } PK�������!�ߎ����(��manifest/tests/xml/AuthorElementTest.phpnu�[��������<?php namespace PharIo\Manifest; class AuthorElementTest extends \PHPUnit\Framework\TestCase { /** * @var AuthorElement */ private $author; protected function setUp() { $dom = new \DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><author xmlns="https://phar.io/xml/manifest/1.0" name="Reiner Zufall" email="reiner@zufall.de" />'); $this->author = new AuthorElement($dom->documentElement); } public function testNameCanBeRetrieved() { $this->assertEquals('Reiner Zufall', $this->author->getName()); } public function testEmailCanBeRetrieved() { $this->assertEquals('reiner@zufall.de', $this->author->getEmail()); } } PK�������!�JYK��K��/��manifest/tests/xml/ExtElementCollectionTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; class ExtElementCollectionTest extends \PHPUnit\Framework\TestCase { public function testComponentElementCanBeRetrievedFromCollection() { $dom = new DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><ext xmlns="https://phar.io/xml/manifest/1.0" />'); $collection = new ExtElementCollection($dom->childNodes); foreach($collection as $position => $extElement) { $this->assertInstanceOf(ExtElement::class, $extElement); $this->assertEquals(0, $position); } } } PK�������!�a����)��manifest/tests/xml/BundlesElementTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; class BundlesElementTest extends \PHPUnit\Framework\TestCase { /** * @var DOMDocument */ private $dom; /** * @var BundlesElement */ private $bundles; protected function setUp() { $this->dom = new DOMDocument(); $this->dom->loadXML('<?xml version="1.0" ?><bundles xmlns="https://phar.io/xml/manifest/1.0" />'); $this->bundles = new BundlesElement($this->dom->documentElement); } public function testThrowsExceptionWhenGetComponentElementsIsCalledButNodesAreMissing() { $this->expectException(ManifestElementException::class); $this->bundles->getComponentElements(); } public function testGetComponentElementsReturnsComponentElementCollection() { $this->addComponent(); $this->assertInstanceOf( ComponentElementCollection::class, $this->bundles->getComponentElements() ); } private function addComponent() { $this->dom->documentElement->appendChild( $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'component') ); } } PK�������!�1J��J��%��manifest/tests/xml/PhpElementTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; class PhpElementTest extends \PHPUnit\Framework\TestCase { /** * @var DOMDocument */ private $dom; /** * @var PhpElement */ private $php; protected function setUp() { $this->dom = new DOMDocument(); $this->dom->loadXML('<?xml version="1.0" ?><php xmlns="https://phar.io/xml/manifest/1.0" version="^5.6 || ^7.0" />'); $this->php = new PhpElement($this->dom->documentElement); } public function testVersionConstraintCanBeRetrieved() { $this->assertEquals('^5.6 || ^7.0', $this->php->getVersion()); } public function testHasExtElementsReturnsFalseWhenNoExtensionsAreRequired() { $this->assertFalse($this->php->hasExtElements()); } public function testHasExtElementsReturnsTrueWhenExtensionsAreRequired() { $this->addExtElement(); $this->assertTrue($this->php->hasExtElements()); } public function testGetExtElementsReturnsExtElementCollection() { $this->addExtElement(); $this->assertInstanceOf(ExtElementCollection::class, $this->php->getExtElements()); } private function addExtElement() { $this->dom->documentElement->appendChild( $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'ext') ); } } PK�������!�Tܪ����+��manifest/tests/xml/ExtensionElementTest.phpnu�[��������<?php namespace PharIo\Manifest; class ExtensionElementTest extends \PHPUnit\Framework\TestCase { /** * @var ExtensionElement */ private $extension; protected function setUp() { $dom = new \DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><extension xmlns="https://phar.io/xml/manifest/1.0" for="phar-io/phive" compatible="~0.6" />'); $this->extension = new ExtensionElement($dom->documentElement); } public function testNForCanBeRetrieved() { $this->assertEquals('phar-io/phive', $this->extension->getFor()); } public function testCompatibleVersionConstraintCanBeRetrieved() { $this->assertEquals('~0.6', $this->extension->getCompatible()); } } PK�������!�����)��manifest/tests/xml/LicenseElementTest.phpnu�[��������<?php namespace PharIo\Manifest; class LicenseElementTest extends \PHPUnit\Framework\TestCase { /** * @var LicenseElement */ private $license; protected function setUp() { $dom = new \DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><license xmlns="https://phar.io/xml/manifest/1.0" type="BSD-3" url="https://some.tld/LICENSE" />'); $this->license = new LicenseElement($dom->documentElement); } public function testTypeCanBeRetrieved() { $this->assertEquals('BSD-3', $this->license->getType()); } public function testUrlCanBeRetrieved() { $this->assertEquals('https://some.tld/LICENSE', $this->license->getUrl()); } } PK�������!�+ ����%��manifest/tests/xml/ExtElementTest.phpnu�[��������<?php namespace PharIo\Manifest; class ExtElementTest extends \PHPUnit\Framework\TestCase { /** * @var ExtElement */ private $ext; protected function setUp() { $dom = new \DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><ext xmlns="https://phar.io/xml/manifest/1.0" name="dom" />'); $this->ext = new ExtElement($dom->documentElement); } public function testNameCanBeRetrieved() { $this->assertEquals('dom', $this->ext->getName()); } } PK�������!�>3��3��5��manifest/tests/xml/ComponentElementCollectionTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; class ComponentElementCollectionTest extends \PHPUnit\Framework\TestCase { public function testComponentElementCanBeRetrievedFromCollection() { $dom = new DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><component xmlns="https://phar.io/xml/manifest/1.0" />'); $collection = new ComponentElementCollection($dom->childNodes); foreach($collection as $componentElement) { $this->assertInstanceOf(ComponentElement::class, $componentElement); } } } PK�������!� x]��]��+��manifest/tests/xml/CopyrightElementTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; class CopyrightElementTest extends \PHPUnit\Framework\TestCase { /** * @var DOMDocument */ private $dom; /** * @var CopyrightElement */ private $copyright; protected function setUp() { $this->dom = new DOMDocument(); $this->dom->loadXML('<?xml version="1.0" ?><copyright xmlns="https://phar.io/xml/manifest/1.0" />'); $this->copyright = new CopyrightElement($this->dom->documentElement); } public function testThrowsExceptionWhenGetAuthroElementsIsCalledButNodesAreMissing() { $this->expectException(ManifestElementException::class); $this->copyright->getAuthorElements(); } public function testThrowsExceptionWhenGetLicenseElementIsCalledButNodeIsMissing() { $this->expectException(ManifestElementException::class); $this->copyright->getLicenseElement(); } public function testGetAuthorElementsReturnsAuthorElementCollection() { $this->dom->documentElement->appendChild( $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'author') ); $this->assertInstanceOf( AuthorElementCollection::class, $this->copyright->getAuthorElements() ); } public function testGetLicenseElementReturnsLicenseElement() { $this->dom->documentElement->appendChild( $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'license') ); $this->assertInstanceOf( LicenseElement::class, $this->copyright->getLicenseElement() ); } } PK�������!�sP����*��manifest/tests/xml/ContainsElementTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; use DOMElement; class ContainsElementTest extends \PHPUnit\Framework\TestCase { /** * @var DOMElement */ private $domElement; /** * @var ContainsElement */ private $contains; protected function setUp() { $dom = new DOMDocument(); $dom->loadXML('<?xml version="1.0" ?><php xmlns="https://phar.io/xml/manifest/1.0" name="phpunit/phpunit" version="5.6.5" type="application" />'); $this->domElement = $dom->documentElement; $this->contains = new ContainsElement($this->domElement); } public function testVersionCanBeRetrieved() { $this->assertEquals('5.6.5', $this->contains->getVersion()); } public function testThrowsExceptionWhenVersionAttributeIsMissing() { $this->domElement->removeAttribute('version'); $this->expectException(ManifestElementException::class); $this->contains->getVersion(); } public function testNameCanBeRetrieved() { $this->assertEquals('phpunit/phpunit', $this->contains->getName()); } public function testThrowsExceptionWhenNameAttributeIsMissing() { $this->domElement->removeAttribute('name'); $this->expectException(ManifestElementException::class); $this->contains->getName(); } public function testTypeCanBeRetrieved() { $this->assertEquals('application', $this->contains->getType()); } public function testThrowsExceptionWhenTypeAttributeIsMissing() { $this->domElement->removeAttribute('type'); $this->expectException(ManifestElementException::class); $this->contains->getType(); } public function testGetExtensionElementReturnsExtensionElement() { $this->domElement->appendChild( $this->domElement->ownerDocument->createElementNS('https://phar.io/xml/manifest/1.0', 'extension') ); $this->assertInstanceOf(ExtensionElement::class, $this->contains->getExtensionElement()); } } PK�������!�H0,K����*��manifest/tests/xml/RequiresElementTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; class RequiresElementTest extends \PHPUnit\Framework\TestCase { /** * @var DOMDocument */ private $dom; /** * @var RequiresElement */ private $requires; protected function setUp() { $this->dom = new DOMDocument(); $this->dom->loadXML('<?xml version="1.0" ?><requires xmlns="https://phar.io/xml/manifest/1.0" />'); $this->requires = new RequiresElement($this->dom->documentElement); } public function testThrowsExceptionWhenGetPhpElementIsCalledButElementIsMissing() { $this->expectException(ManifestElementException::class); $this->requires->getPHPElement(); } public function testHasExtElementsReturnsTrueWhenExtensionsAreRequired() { $this->dom->documentElement->appendChild( $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'php') ); $this->assertInstanceOf(PhpElement::class, $this->requires->getPHPElement()); } } PK�������!�1����+��manifest/tests/xml/ManifestDocumentTest.phpnu�[��������<?php namespace PharIo\Manifest; class ManifestDocumentTest extends \PHPUnit\Framework\TestCase { public function testThrowsExceptionWhenFileDoesNotExist() { $this->expectException(ManifestDocumentException::class); ManifestDocument::fromFile('/does/not/exist'); } public function testCanBeCreatedFromFile() { $this->assertInstanceOf( ManifestDocument::class, ManifestDocument::fromFile(__DIR__ . '/../_fixture/phpunit-5.6.5.xml') ); } public function testCaneBeConstructedFromString() { $content = file_get_contents(__DIR__ . '/../_fixture/phpunit-5.6.5.xml'); $this->assertInstanceOf( ManifestDocument::class, ManifestDocument::fromString($content) ); } public function testThrowsExceptionOnInvalidXML() { $this->expectException(ManifestDocumentLoadingException::class); ManifestDocument::fromString('<?xml version="1.0" ?><root>'); } public function testLoadingDocumentWithWrongRootNameThrowsException() { $this->expectException(ManifestDocumentException::class); ManifestDocument::fromString('<?xml version="1.0" ?><root />'); } public function testLoadingDocumentWithWrongNamespaceThrowsException() { $this->expectException(ManifestDocumentException::class); ManifestDocument::fromString('<?xml version="1.0" ?><phar xmlns="foo:bar" />'); } public function testContainsElementCanBeRetrieved() { $this->assertInstanceOf( ContainsElement::class, $this->loadFixture()->getContainsElement() ); } public function testRequiresElementCanBeRetrieved() { $this->assertInstanceOf( RequiresElement::class, $this->loadFixture()->getRequiresElement() ); } public function testCopyrightElementCanBeRetrieved() { $this->assertInstanceOf( CopyrightElement::class, $this->loadFixture()->getCopyrightElement() ); } public function testBundlesElementCanBeRetrieved() { $this->assertInstanceOf( BundlesElement::class, $this->loadFixture()->getBundlesElement() ); } public function testThrowsExceptionWhenContainsIsMissing() { $this->expectException(ManifestDocumentException::class); $this->loadEmptyFixture()->getContainsElement(); } public function testThrowsExceptionWhenCopyirhgtIsMissing() { $this->expectException(ManifestDocumentException::class); $this->loadEmptyFixture()->getCopyrightElement(); } public function testThrowsExceptionWhenRequiresIsMissing() { $this->expectException(ManifestDocumentException::class); $this->loadEmptyFixture()->getRequiresElement(); } public function testThrowsExceptionWhenBundlesIsMissing() { $this->expectException(ManifestDocumentException::class); $this->loadEmptyFixture()->getBundlesElement(); } public function testHasBundlesReturnsTrueWhenBundlesNodeIsPresent() { $this->assertTrue( $this->loadFixture()->hasBundlesElement() ); } public function testHasBundlesReturnsFalseWhenBundlesNoNodeIsPresent() { $this->assertFalse( $this->loadEmptyFixture()->hasBundlesElement() ); } private function loadFixture() { return ManifestDocument::fromFile(__DIR__ . '/../_fixture/phpunit-5.6.5.xml'); } private function loadEmptyFixture() { return ManifestDocument::fromString( '<?xml version="1.0" ?><phar xmlns="https://phar.io/xml/manifest/1.0" />' ); } } PK�������!�?��?��B��manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.phpnu�[��������<?php namespace PharIo\Manifest; use DOMDocument; use LibXMLError; class ManifestDocumentLoadingExceptionTest extends \PHPUnit\Framework\TestCase { public function testXMLErrorsCanBeRetrieved() { $dom = new DOMDocument(); $prev = libxml_use_internal_errors(true); $dom->loadXML('<?xml version="1.0" ?><broken>'); $exception = new ManifestDocumentLoadingException(libxml_get_errors()); libxml_use_internal_errors($prev); $this->assertContainsOnlyInstancesOf(LibXMLError::class, $exception->getLibxmlErrors()); } } PK�������!�(����2��manifest/tests/values/CopyrightInformationTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\CopyrightInformation * * @uses PharIo\Manifest\AuthorCollection * @uses PharIo\Manifest\AuthorCollectionIterator * @uses PharIo\Manifest\Author * @uses PharIo\Manifest\Email * @uses PharIo\Manifest\License * @uses PharIo\Manifest\Url */ class CopyrightInformationTest extends TestCase { /** * @var CopyrightInformation */ private $copyrightInformation; /** * @var Author */ private $author; /** * @var License */ private $license; protected function setUp() { $this->author = new Author('Joe Developer', new Email('user@example.com')); $this->license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE')); $authors = new AuthorCollection; $authors->add($this->author); $this->copyrightInformation = new CopyrightInformation($authors, $this->license); } public function testCanBeCreated() { $this->assertInstanceOf(CopyrightInformation::class, $this->copyrightInformation); } public function testAuthorsCanBeRetrieved() { $this->assertContains($this->author, $this->copyrightInformation->getAuthors()); } public function testLicenseCanBeRetrieved() { $this->assertEquals($this->license, $this->copyrightInformation->getLicense()); } } PK�������!�as��s��.��manifest/tests/values/AuthorCollectionTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Manifest\AuthorCollection * @covers \PharIo\Manifest\AuthorCollectionIterator * * @uses \PharIo\Manifest\Author * @uses \PharIo\Manifest\Email */ class AuthorCollectionTest extends TestCase { /** * @var AuthorCollection */ private $collection; /** * @var Author */ private $item; protected function setUp() { $this->collection = new AuthorCollection; $this->item = new Author('Joe Developer', new Email('user@example.com')); } public function testCanBeCreated() { $this->assertInstanceOf(AuthorCollection::class, $this->collection); } public function testCanBeCounted() { $this->collection->add($this->item); $this->assertCount(1, $this->collection); } public function testCanBeIterated() { $this->collection->add( new Author('Dummy First', new Email('dummy@example.com')) ); $this->collection->add($this->item); $this->assertContains($this->item, $this->collection); } public function testKeyPositionCanBeRetreived() { $this->collection->add($this->item); foreach($this->collection as $key => $item) { $this->assertEquals(0, $key); } } } PK�������!�!����8��manifest/tests/values/BundledComponentCollectionTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\Version; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Manifest\BundledComponentCollection * @covers \PharIo\Manifest\BundledComponentCollectionIterator * * @uses \PharIo\Manifest\BundledComponent * @uses \PharIo\Version\Version */ class BundledComponentCollectionTest extends TestCase { /** * @var BundledComponentCollection */ private $collection; /** * @var BundledComponent */ private $item; protected function setUp() { $this->collection = new BundledComponentCollection; $this->item = new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2')); } public function testCanBeCreated() { $this->assertInstanceOf(BundledComponentCollection::class, $this->collection); } public function testCanBeCounted() { $this->collection->add($this->item); $this->assertCount(1, $this->collection); } public function testCanBeIterated() { $this->collection->add($this->createMock(BundledComponent::class)); $this->collection->add($this->item); $this->assertContains($this->item, $this->collection); } public function testKeyPositionCanBeRetreived() { $this->collection->add($this->item); foreach($this->collection as $key => $item) { $this->assertEquals(0, $key); } } } PK�������!�_,3��3��3��manifest/tests/values/PhpVersionRequirementTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\ExactVersionConstraint; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\PhpVersionRequirement * * @uses \PharIo\Version\VersionConstraint */ class PhpVersionRequirementTest extends TestCase { /** * @var PhpVersionRequirement */ private $requirement; protected function setUp() { $this->requirement = new PhpVersionRequirement(new ExactVersionConstraint('7.1.0')); } public function testCanBeCreated() { $this->assertInstanceOf(PhpVersionRequirement::class, $this->requirement); } public function testVersionConstraintCanBeRetrieved() { $this->assertEquals('7.1.0', $this->requirement->getVersionConstraint()->asString()); } } PK�������!��\����$��manifest/tests/values/AuthorTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\Author * * @uses PharIo\Manifest\Email */ class AuthorTest extends TestCase { /** * @var Author */ private $author; protected function setUp() { $this->author = new Author('Joe Developer', new Email('user@example.com')); } public function testCanBeCreated() { $this->assertInstanceOf(Author::class, $this->author); } public function testNameCanBeRetrieved() { $this->assertEquals('Joe Developer', $this->author->getName()); } public function testEmailCanBeRetrieved() { $this->assertEquals('user@example.com', $this->author->getEmail()); } public function testCanBeUsedAsString() { $this->assertEquals('Joe Developer <user@example.com>', $this->author); } } PK�������!� м �� ��'��manifest/tests/values/ExtensionTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\AnyVersionConstraint; use PharIo\Version\Version; use PharIo\Version\VersionConstraint; use PharIo\Version\VersionConstraintParser; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Manifest\Extension * @covers \PharIo\Manifest\Type * * @uses \PharIo\Version\VersionConstraint * @uses \PharIo\Manifest\ApplicationName */ class ExtensionTest extends TestCase { /** * @var Extension */ private $type; /** * @var ApplicationName|\PHPUnit_Framework_MockObject_MockObject */ private $name; protected function setUp() { $this->name = $this->createMock(ApplicationName::class); $this->type = Type::extension($this->name, new AnyVersionConstraint); } public function testCanBeCreated() { $this->assertInstanceOf(Extension::class, $this->type); } public function testIsNotApplication() { $this->assertFalse($this->type->isApplication()); } public function testIsNotLibrary() { $this->assertFalse($this->type->isLibrary()); } public function testIsExtension() { $this->assertTrue($this->type->isExtension()); } public function testApplicationCanBeRetrieved() { $this->assertInstanceOf(ApplicationName::class, $this->type->getApplicationName()); } public function testVersionConstraintCanBeRetrieved() { $this->assertInstanceOf( VersionConstraint::class, $this->type->getVersionConstraint() ); } public function testApplicationCanBeQueried() { $this->name->method('isEqual')->willReturn(true); $this->assertTrue( $this->type->isExtensionFor($this->createMock(ApplicationName::class)) ); } public function testCompatibleWithReturnsTrueForMatchingVersionConstraintAndApplicaiton() { $app = new ApplicationName('foo/bar'); $extension = Type::extension($app, (new VersionConstraintParser)->parse('^1.0')); $version = new Version('1.0.0'); $this->assertTrue( $extension->isCompatibleWith($app, $version) ); } public function testCompatibleWithReturnsFalseForNotMatchingVersionConstraint() { $app = new ApplicationName('foo/bar'); $extension = Type::extension($app, (new VersionConstraintParser)->parse('^1.0')); $version = new Version('2.0.0'); $this->assertFalse( $extension->isCompatibleWith($app, $version) ); } public function testCompatibleWithReturnsFalseForNotMatchingApplication() { $app1 = new ApplicationName('foo/bar'); $app2 = new ApplicationName('foo/foo'); $extension = Type::extension($app1, (new VersionConstraintParser)->parse('^1.0')); $version = new Version('1.0.0'); $this->assertFalse( $extension->isCompatibleWith($app2, $version) ); } } PK�������!�����-��manifest/tests/values/ApplicationNameTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; class ApplicationNameTest extends TestCase { public function testCanBeCreatedWithValidName() { $this->assertInstanceOf( ApplicationName::class, new ApplicationName('foo/bar') ); } public function testUsingInvalidFormatForNameThrowsException() { $this->expectException(InvalidApplicationNameException::class); $this->expectExceptionCode(InvalidApplicationNameException::InvalidFormat); new ApplicationName('foo'); } public function testUsingWrongTypeForNameThrowsException() { $this->expectException(InvalidApplicationNameException::class); $this->expectExceptionCode(InvalidApplicationNameException::NotAString); new ApplicationName(123); } public function testReturnsTrueForEqualNamesWhenCompared() { $app = new ApplicationName('foo/bar'); $this->assertTrue( $app->isEqual($app) ); } public function testReturnsFalseForNonEqualNamesWhenCompared() { $app1 = new ApplicationName('foo/bar'); $app2 = new ApplicationName('foo/foo'); $this->assertFalse( $app1->isEqual($app2) ); } public function testCanBeConvertedToString() { $this->assertEquals( 'foo/bar', new ApplicationName('foo/bar') ); } } PK�������!�K'I����!��manifest/tests/values/UrlTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\Url */ class UrlTest extends TestCase { public function testCanBeCreatedForValidUrl() { $this->assertInstanceOf(Url::class, new Url('https://phar.io/')); } public function testCanBeUsedAsString() { $this->assertEquals('https://phar.io/', new Url('https://phar.io/')); } /** * @covers PharIo\Manifest\InvalidUrlException */ public function testCannotBeCreatedForInvalidUrl() { $this->expectException(InvalidUrlException::class); new Url('invalid'); } } PK�������!�+;����%��manifest/tests/values/LibraryTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\Library * @covers PharIo\Manifest\Type */ class LibraryTest extends TestCase { /** * @var Library */ private $type; protected function setUp() { $this->type = Type::library(); } public function testCanBeCreated() { $this->assertInstanceOf(Library::class, $this->type); } public function testIsNotApplication() { $this->assertFalse($this->type->isApplication()); } public function testIsLibrary() { $this->assertTrue($this->type->isLibrary()); } public function testIsNotExtension() { $this->assertFalse($this->type->isExtension()); } } PK�������!�^ w����&��manifest/tests/values/ManifestTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\Version; use PharIo\Version\AnyVersionConstraint; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Manifest\Manifest * * @uses \PharIo\Manifest\ApplicationName * @uses \PharIo\Manifest\Author * @uses \PharIo\Manifest\AuthorCollection * @uses \PharIo\Manifest\BundledComponent * @uses \PharIo\Manifest\BundledComponentCollection * @uses \PharIo\Manifest\CopyrightInformation * @uses \PharIo\Manifest\Email * @uses \PharIo\Manifest\License * @uses \PharIo\Manifest\RequirementCollection * @uses \PharIo\Manifest\PhpVersionRequirement * @uses \PharIo\Manifest\Type * @uses \PharIo\Manifest\Application * @uses \PharIo\Manifest\Url * @uses \PharIo\Version\Version * @uses \PharIo\Version\VersionConstraint */ class ManifestTest extends TestCase { /** * @var ApplicationName */ private $name; /** * @var Version */ private $version; /** * @var Type */ private $type; /** * @var CopyrightInformation */ private $copyrightInformation; /** * @var RequirementCollection */ private $requirements; /** * @var BundledComponentCollection */ private $bundledComponents; /** * @var Manifest */ private $manifest; protected function setUp() { $this->version = new Version('5.6.5'); $this->type = Type::application(); $author = new Author('Joe Developer', new Email('user@example.com')); $license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE')); $authors = new AuthorCollection; $authors->add($author); $this->copyrightInformation = new CopyrightInformation($authors, $license); $this->requirements = new RequirementCollection; $this->requirements->add(new PhpVersionRequirement(new AnyVersionConstraint)); $this->bundledComponents = new BundledComponentCollection; $this->bundledComponents->add(new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2'))); $this->name = new ApplicationName('phpunit/phpunit'); $this->manifest = new Manifest( $this->name, $this->version, $this->type, $this->copyrightInformation, $this->requirements, $this->bundledComponents ); } public function testCanBeCreated() { $this->assertInstanceOf(Manifest::class, $this->manifest); } public function testNameCanBeRetrieved() { $this->assertEquals($this->name, $this->manifest->getName()); } public function testVersionCanBeRetrieved() { $this->assertEquals($this->version, $this->manifest->getVersion()); } public function testTypeCanBeRetrieved() { $this->assertEquals($this->type, $this->manifest->getType()); } public function testTypeCanBeQueried() { $this->assertTrue($this->manifest->isApplication()); $this->assertFalse($this->manifest->isLibrary()); $this->assertFalse($this->manifest->isExtension()); } public function testCopyrightInformationCanBeRetrieved() { $this->assertEquals($this->copyrightInformation, $this->manifest->getCopyrightInformation()); } public function testRequirementsCanBeRetrieved() { $this->assertEquals($this->requirements, $this->manifest->getRequirements()); } public function testBundledComponentsCanBeRetrieved() { $this->assertEquals($this->bundledComponents, $this->manifest->getBundledComponents()); } /** * @uses \PharIo\Manifest\Extension */ public function testExtendedApplicationCanBeQueriedForExtension() { $appName = new ApplicationName('foo/bar'); $manifest = new Manifest( new ApplicationName('foo/foo'), new Version('1.0.0'), Type::extension($appName, new AnyVersionConstraint), $this->copyrightInformation, new RequirementCollection, new BundledComponentCollection ); $this->assertTrue($manifest->isExtensionFor($appName)); } public function testNonExtensionReturnsFalseWhenQueriesForExtension() { $appName = new ApplicationName('foo/bar'); $manifest = new Manifest( new ApplicationName('foo/foo'), new Version('1.0.0'), Type::library(), $this->copyrightInformation, new RequirementCollection, new BundledComponentCollection ); $this->assertFalse($manifest->isExtensionFor($appName)); } /** * @uses \PharIo\Manifest\Extension */ public function testExtendedApplicationCanBeQueriedForExtensionWithVersion() { $appName = new ApplicationName('foo/bar'); $manifest = new Manifest( new ApplicationName('foo/foo'), new Version('1.0.0'), Type::extension($appName, new AnyVersionConstraint), $this->copyrightInformation, new RequirementCollection, new BundledComponentCollection ); $this->assertTrue($manifest->isExtensionFor($appName, new Version('1.2.3'))); } } PK�������!�m��m��%��manifest/tests/values/LicenseTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\License * * @uses PharIo\Manifest\Url */ class LicenseTest extends TestCase { /** * @var License */ private $license; protected function setUp() { $this->license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE')); } public function testCanBeCreated() { $this->assertInstanceOf(License::class, $this->license); } public function testNameCanBeRetrieved() { $this->assertEquals('BSD-3-Clause', $this->license->getName()); } public function testUrlCanBeRetrieved() { $this->assertEquals('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE', $this->license->getUrl()); } } PK�������!�Uij����#��manifest/tests/values/EmailTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\Email */ class EmailTest extends TestCase { public function testCanBeCreatedForValidEmail() { $this->assertInstanceOf(Email::class, new Email('user@example.com')); } public function testCanBeUsedAsString() { $this->assertEquals('user@example.com', new Email('user@example.com')); } /** * @covers PharIo\Manifest\InvalidEmailException */ public function testCannotBeCreatedForInvalidEmail() { $this->expectException(InvalidEmailException::class); new Email('invalid'); } } PK�������!�`����5��manifest/tests/values/PhpExtensionRequirementTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\PhpExtensionRequirement */ class PhpExtensionRequirementTest extends TestCase { public function testCanBeCreated() { $this->assertInstanceOf(PhpExtensionRequirement::class, new PhpExtensionRequirement('dom')); } public function testCanBeUsedAsString() { $this->assertEquals('dom', new PhpExtensionRequirement('dom')); } } PK�������!�h����3��manifest/tests/values/RequirementCollectionTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\ExactVersionConstraint; use PHPUnit\Framework\TestCase; /** * @covers \PharIo\Manifest\RequirementCollection * @covers \PharIo\Manifest\RequirementCollectionIterator * * @uses \PharIo\Manifest\PhpVersionRequirement * @uses \PharIo\Version\VersionConstraint */ class RequirementCollectionTest extends TestCase { /** * @var RequirementCollection */ private $collection; /** * @var Requirement */ private $item; protected function setUp() { $this->collection = new RequirementCollection; $this->item = new PhpVersionRequirement(new ExactVersionConstraint('7.1.0')); } public function testCanBeCreated() { $this->assertInstanceOf(RequirementCollection::class, $this->collection); } public function testCanBeCounted() { $this->collection->add($this->item); $this->assertCount(1, $this->collection); } public function testCanBeIterated() { $this->collection->add(new PhpVersionRequirement(new ExactVersionConstraint('5.6.0'))); $this->collection->add($this->item); $this->assertContains($this->item, $this->collection); } public function testKeyPositionCanBeRetreived() { $this->collection->add($this->item); foreach($this->collection as $key => $item) { $this->assertEquals(0, $key); } } } PK�������!�9+��+��)��manifest/tests/values/ApplicationTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\Application * @covers PharIo\Manifest\Type */ class ApplicationTest extends TestCase { /** * @var Application */ private $type; protected function setUp() { $this->type = Type::application(); } public function testCanBeCreated() { $this->assertInstanceOf(Application::class, $this->type); } public function testIsApplication() { $this->assertTrue($this->type->isApplication()); } public function testIsNotLibrary() { $this->assertFalse($this->type->isLibrary()); } public function testIsNotExtension() { $this->assertFalse($this->type->isExtension()); } } PK�������!�㸷O����.��manifest/tests/values/BundledComponentTest.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use PharIo\Version\Version; use PHPUnit\Framework\TestCase; /** * @covers PharIo\Manifest\BundledComponent * * @uses \PharIo\Version\Version */ class BundledComponentTest extends TestCase { /** * @var BundledComponent */ private $bundledComponent; protected function setUp() { $this->bundledComponent = new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2')); } public function testCanBeCreated() { $this->assertInstanceOf(BundledComponent::class, $this->bundledComponent); } public function testNameCanBeRetrieved() { $this->assertEquals('phpunit/php-code-coverage', $this->bundledComponent->getName()); } public function testVersionCanBeRetrieved() { $this->assertEquals('4.0.2', $this->bundledComponent->getVersion()->getVersionString()); } } PK�������!�D\C������manifest/.travis.ymlnu�[��������os: - linux language: php before_install: - wget https://phar.io/releases/phive.phar - wget https://phar.io/releases/phive.phar.asc - gpg --keyserver hkps.pool.sks-keyservers.net --recv-keys 0x9B2D5D79 - gpg --verify phive.phar.asc phive.phar - chmod +x phive.phar - sudo mv phive.phar /usr/bin/phive install: - ant setup script: ./tools/phpunit php: - 5.6 - 7.0 - 7.1 - 7.0snapshot - 7.1snapshot - master matrix: allow_failures: - php: master fast_finish: true notifications: email: false PK�������!�Kr������manifest/.php_csnu�[��������<?php $finder = Symfony\CS\Finder\DefaultFinder::create() ->files() ->in('src') ->in('tests') ->name('*.php'); return Symfony\CS\Config\Config::create() ->setUsingCache(true) ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) ->fixers( array( 'align_double_arrow', 'align_equals', 'concat_with_spaces', 'duplicate_semicolon', 'elseif', 'empty_return', 'encoding', 'eof_ending', 'extra_empty_lines', 'function_call_space', 'function_declaration', 'indentation', 'join_function', 'line_after_namespace', 'linefeed', 'list_commas', 'lowercase_constants', 'lowercase_keywords', 'method_argument_space', 'multiple_use', 'namespace_no_leading_whitespace', 'no_blank_lines_after_class_opening', 'no_empty_lines_after_phpdocs', 'parenthesis', 'php_closing_tag', 'phpdoc_indent', 'phpdoc_no_access', 'phpdoc_no_empty_return', 'phpdoc_no_package', 'phpdoc_params', 'phpdoc_scalar', 'phpdoc_separation', 'phpdoc_to_comment', 'phpdoc_trim', 'phpdoc_types', 'phpdoc_var_without_name', 'remove_lines_between_uses', 'return', 'self_accessor', 'short_array_syntax', 'short_tag', 'single_line_after_imports', 'single_quote', 'spaces_before_semicolon', 'spaces_cast', 'ternary_spaces', 'trailing_spaces', 'trim_array_spaces', 'unused_use', 'visibility', 'whitespacy_lines' ) ) ->finder($finder); PK�������!�>����5��manifest/src/xml/ManifestDocumentLoadingException.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PharIo\Manifest; use LibXMLError; class ManifestDocumentLoadingException extends \Exception implements Exception { /** * @var LibXMLError[] */ private $libxmlErrors; /** * ManifestDocumentLoadingException constructor. * * @param LibXMLError[] $libxmlErrors */ public function __construct(array $libxmlErrors) { $this->libxmlErrors = $libxmlErrors; $first = $this->libxmlErrors[0]; parent::__construct( sprintf( '%s (Line: %d / Column: %d / File: %s)', $first->message, $first->line, $first->column, $first->file ), $first->code ); } /** * @return LibXMLError[] */ public function getLibxmlErrors() { return $this->libxmlErrors; } } PK�������!�n������manifest/build.xmlnu�[��������<?xml version="1.0" encoding="UTF-8"?> <project name="manifest" default="setup"> <target name="setup" depends="clean,install-tools,install-dependencies"/> <target name="clean" unless="clean.done" description="Cleanup build artifacts"> <delete dir="${basedir}/tools"/> <delete dir="${basedir}/vendor"/> <delete file="${basedir}/src/autoload.php"/> <property name="clean.done" value="true"/> </target> <target name="prepare" unless="prepare.done" depends="clean" description="Prepare for build"> <property name="prepare.done" value="true"/> </target> <target name="install-dependencies" unless="dependencies-installed" depends="-dependencies-installed" description="Install dependencies with Composer"> <exec executable="composer" taskname="composer"> <env key="COMPOSER_DISABLE_XDEBUG_WARN" value="1"/> <arg value="update"/> <arg value="--no-interaction"/> <arg value="--no-progress"/> <arg value="--no-ansi"/> <arg value="--no-suggest"/> <arg value="--optimize-autoloader"/> <arg value="--prefer-stable"/> </exec> </target> <target name="install-tools" unless="tools-installed" depends="-tools-installed" description="Install tools with Phive"> <exec executable="phive" taskname="phive"> <arg value="install"/> <arg value="--trust-gpg-keys" /> <arg value="4AA394086372C20A,2A8299CE842DD38C" /> </exec> </target> <target name="test" depends="install-tools,install-dependencies" description="Run tests"> <exec executable="${basedir}/tools/phpunit" taskname="phpunit"/> </target> <target name="-dependencies-installed"> <available file="${basedir}/composer.lock" property="dependencies-installed"/> </target> <target name="-tools-installed"> <available file="${basedir}/tools" property="tools-installed" type="dir"/> </target> </project> PK�������!�R ���� ��manifest/examples/example-01.phpnu�[��������<?php /* * This file is part of PharIo\Manifest. * * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use PharIo\Manifest\ManifestLoader; use PharIo\Manifest\ManifestSerializer; require __DIR__ . '/../vendor/autoload.php'; $manifest = ManifestLoader::fromFile(__DIR__ . '/../tests/_fixture/phpunit-5.6.5.xml'); echo sprintf( "Manifest for %s (%s):\n\n", $manifest->getName(), $manifest->getVersion()->getVersionString() ); echo (new ManifestSerializer)->serializeToString($manifest); PK�������!�VpH?���?�����manifest/.gitignorenu�[��������/.idea /.php_cs.cache /src/autoload.php /tools /vendor /build PK���������!�"n��n��4����������������version/40d39961466b12b36285c10a47f16a90731e5b71.zipnu�Iw��������PK���������!�!����5������������Ao��manifest/7594b0b62ecd9d09967f6a8274ba7381e265b200.zipnu�Iw��������PK���������!�.6(i��i���������������version/CHANGELOG.mdnu�[��������PK���������!�Z88E����������������S�version/composer.jsonnu�[��������PK���������!�9 ��9 ��������������9�version/README.mdnu�[��������PK���������!�^. �� ��'�������������version/src/VersionConstraintParser.phpnu�[��������PK���������!� �� ��&�������������version/src/VersionConstraintValue.phpnu�[��������PK���������!�H���������������� �version/src/BuildMetaData.phpnu�[��������PK���������!�@n[��[��B������������'�version/src/constraints/SpecificMajorAndMinorVersionConstraint.phpnu�[��������PK���������!�ru��u��:�������������version/src/constraints/SpecificMajorVersionConstraint.phpnu�[��������PK���������!� �� ��A������������Ӻ�version/src/constraints/GreaterThanOrEqualToVersionConstraint.phpnu�[��������PK���������!� Ch*��*��5������������P�version/src/constraints/AndVersionConstraintGroup.phpnu�[��������PK���������!�Whg����5�������������version/src/constraints/AbstractVersionConstraint.phpnu�[��������PK���������!�����0������������5�version/src/constraints/AnyVersionConstraint.phpnu�[��������PK���������!�wU6��6��-�������������version/src/constraints/VersionConstraint.phpnu�[��������PK���������!� Z��Z��2�������������version/src/constraints/ExactVersionConstraint.phpnu�[��������PK���������!�(��(��4������������l�version/src/constraints/OrVersionConstraintGroup.phpnu�[��������PK���������!�؈l��l��$�������������version/src/exceptions/Exception.phpnu�[��������PK���������!�v���v���;�������������version/src/exceptions/InvalidPreReleaseSuffixException.phpnu�[��������PK���������!�`r����@�������������version/src/exceptions/UnsupportedVersionConstraintException.phpnu�[��������PK���������!�������3�������������version/src/exceptions/NoBuildMetaDataException.phpnu�[��������PK���������!�XbpԊ������6�������������version/src/exceptions/NoPreReleaseSuffixException.phpnu�[��������PK���������!�O{���{���2�������������version/src/exceptions/InvalidVersionException.phpnu�[��������PK���������!�[A+^��^��������������y�version/src/Version.phpnu�[��������PK���������!�dg��g�� �������������version/src/PreReleaseSuffix.phpnu�[��������PK���������!�v"��"���������������version/src/VersionNumber.phpnu�[��������PK���������!�>:1��1��������������D�version/LICENSEnu�[��������PK���������!�nq/��q/���������������manifest/.php-cs-fixer.dist.phpnu�[��������PK���������!�Xy����������������t-�manifest/CHANGELOG.mdnu�[��������PK���������!�A���A���������������3�manifest/.github/FUNDING.ymlnu�[��������PK���������!�_cOS����!������������/4�manifest/.github/workflows/ci.ymlnu�[��������PK���������!�R|O��O��������������t<�manifest/composer.jsonnu�[��������PK���������!�Vh���������������� @�manifest/README.mdnu�[��������PK���������!�ڈU7��7��(������������E�manifest/tools/php-cs-fixer.d/header.txtnu�[��������PK���������!� ����:������������F�manifest/tools/php-cs-fixer.d/PhpdocSingleLineVarFixer.phpnu�[��������PK���������!�t<D����#������������O�manifest/src/ManifestSerializer.phpnu�[��������PK���������!�By �� ��,������������}e�manifest/src/xml/AuthorElementCollection.phpnu�[��������PK���������!� 4��4��#������������g�manifest/src/xml/LicenseElement.phpnu�[��������PK���������!�����)������������lj�manifest/src/xml/ExtElementCollection.phpnu�[��������PK���������!�'*����&������������l�manifest/src/xml/ElementCollection.phpnu�[��������PK���������!�h/j3����������������q�manifest/src/xml/ExtElement.phpnu�[��������PK���������!�(ͷ����$������������t�manifest/src/xml/RequiresElement.phpnu�[��������PK���������!�Z'��'��$������������tv�manifest/src/xml/ContainsElement.phpnu�[��������PK���������!� +>��>��%������������y�manifest/src/xml/ComponentElement.phpnu�[��������PK���������!�#I����/������������|�manifest/src/xml/ComponentElementCollection.phpnu�[��������PK���������!�7��7��"������������~�manifest/src/xml/AuthorElement.phpnu�[��������PK���������!�Oϯ&��&��#������������|�manifest/src/xml/BundlesElement.phpnu�[��������PK���������!�B��B��%�������������manifest/src/xml/ExtensionElement.phpnu�[��������PK���������!�1 �� ��%�������������manifest/src/xml/ManifestDocument.phpnu�[��������PK���������!�p{:�����������������manifest/src/xml/PhpElement.phpnu�[��������PK���������!�:6X �� ��$�������������manifest/src/xml/ManifestElement.phpnu�[��������PK���������!�����%�������������manifest/src/xml/CopyrightElement.phpnu�[��������PK���������!�@����'�������������manifest/src/ManifestDocumentMapper.phpnu�[��������PK���������!�q:����3������������k�manifest/src/exceptions/NoEmailAddressException.phpnu�[��������PK���������!�Yn��n��%������������ӻ�manifest/src/exceptions/Exception.phpnu�[��������PK���������!�w/u���u���4�������������manifest/src/exceptions/ManifestElementException.phpnu�[��������PK���������!�)�����/������������o�manifest/src/exceptions/InvalidUrlException.phpnu�[��������PK���������!�8L:m���m���3������������y�manifest/src/exceptions/ManifestLoaderException.phpnu�[��������PK���������!�A |���|���;������������I�manifest/src/exceptions/ManifestDocumentMapperException.phpnu�[��������PK���������!�_Uj����6������������0�manifest/src/exceptions/ElementCollectionException.phpnu�[��������PK���������!�գ����<�������������manifest/src/exceptions/ManifestDocumentLoadingException.phpnu�[��������PK���������!�6KQ����;�������������manifest/src/exceptions/InvalidApplicationNameException.phpnu�[��������PK���������!�v���v���5������������a�manifest/src/exceptions/ManifestDocumentException.phpnu�[��������PK���������!�3D����1������������<�manifest/src/exceptions/InvalidEmailException.phpnu�[��������PK���������!�B8 ����������������J�manifest/src/ManifestLoader.phpnu�[��������PK���������!�)����-������������!�manifest/src/values/RequirementCollection.phpnu�[��������PK���������!�0����!������������e�manifest/src/values/Extension.phpnu�[��������PK���������!�Gr����(�������������manifest/src/values/AuthorCollection.phpnu�[��������PK���������!�Fz�����������������manifest/src/values/Library.phpnu�[��������PK���������!�W8%��%���������������manifest/src/values/Author.phpnu�[��������PK���������!�6VAp��p��#������������E�manifest/src/values/Requirement.phpnu�[��������PK���������!�D �� �� �������������manifest/src/values/Manifest.phpnu�[��������PK���������!�<����/�������������manifest/src/values/PhpExtensionRequirement.phpnu�[��������PK���������!�f]����������������?�manifest/src/values/Url.phpnu�[��������PK���������!�-Ũ����(������������R�manifest/src/values/BundledComponent.phpnu�[��������PK���������!�*����������������R�manifest/src/values/License.phpnu�[��������PK���������!�,����-�������������manifest/src/values/PhpVersionRequirement.phpnu�[��������PK���������!� (��(��2������������% �manifest/src/values/BundledComponentCollection.phpnu�[��������PK���������!�pn�����������������manifest/src/values/Type.phpnu�[��������PK���������!�c��c��'�������������manifest/src/values/ApplicationName.phpnu�[��������PK���������!�7$~����#�������������manifest/src/values/Application.phpnu�[��������PK���������!�tbx��x��,�������������manifest/src/values/CopyrightInformation.phpnu�[��������PK���������!�c�M����������������"�manifest/src/values/Email.phpnu�[��������PK���������!�}����:������������&�manifest/src/values/BundledComponentCollectionIterator.phpnu�[��������PK���������!�a��a��0������������,�manifest/src/values/AuthorCollectionIterator.phpnu�[��������PK���������!�n����5������������0�manifest/src/values/RequirementCollectionIterator.phpnu�[��������PK���������!�$W0Q��Q��������������5�manifest/LICENSEnu�[��������PK���������!�\|��|��������������f<�manifest/manifest.xsdnu�[��������PK���������!�u*]����������������'K�manifest/composer.locknu�[��������PK���������!�݈����������������[T�version/phpunit.xmlnu�[��������PK���������!�B-g`����������������SW�version/phive.xmlnu�[��������PK���������!� ps����A������������X�version/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.phpnu�[��������PK���������!�Qm����3������������^�version/tests/Unit/OrVersionConstraintGroupTest.phpnu�[��������PK���������!�I 5����+������������g�version/tests/Unit/PreReleaseSuffixTest.phpnu�[��������PK���������!�(S}��}��1������������<m�version/tests/Unit/ExactVersionConstraintTest.phpnu�[��������PK���������!� ����"������������t�version/tests/Unit/VersionTest.phpnu�[��������PK���������!�D,L2��2��9������������$�version/tests/Unit/SpecificMajorVersionConstraintTest.phpnu�[��������PK���������!�����4�������������version/tests/Unit/AbstractVersionConstraintTest.phpnu�[��������PK���������!�hE����4������������9�version/tests/Unit/AndVersionConstraintGroupTest.phpnu�[��������PK���������!� [9����@�������������version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.phpnu�[��������PK���������!� z!����/�������������version/tests/Unit/AnyVersionConstraintTest.phpnu�[��������PK���������!�ö����9�������������version/tests/Integration/VersionConstraintParserTest.phpnu�[��������PK���������!�D\C�����������������version/.travis.ymlnu�[��������PK���������!�Kr����������������p�version/.php_csnu�[��������PK���������!�TM��M��������������D�version/build.xmlnu�[��������PK���������!�>G���G����������������version/.gitignorenu�[��������PK���������!�@����������������[�manifest/phpunit.xmlnu�[��������PK���������!�r$�������������������manifest/phive.xmlnu�[��������PK���������!�X5H �� ��%������������s�manifest/tests/ManifestLoaderTest.phpnu�[��������PK���������!�Б����-�������������manifest/tests/ManifestDocumentMapperTest.phpnu�[��������PK���������!�&1[��[��)������������/�manifest/tests/ManifestSerializerTest.phpnu�[��������PK���������!�Ծ����!�������������manifest/tests/_fixture/test.pharnu�[��������PK���������!�D%,��,��%������������1�manifest/tests/_fixture/extension.xmlnu�[��������PK���������!�vyP����$�������������manifest/tests/_fixture/manifest.xmlnu�[��������PK���������!�zٌ����4�������������manifest/tests/_fixture/invalidversionconstraint.xmlnu�[��������PK���������!�vyP����#������������~�manifest/tests/_fixture/library.xmlnu�[��������PK���������!� V/��/��7������������Y�manifest/tests/_fixture/extension-invalidcompatible.xmlnu�[��������PK���������!�- �� ��)�������������manifest/tests/_fixture/phpunit-5.6.5.xmlnu�[��������PK���������!�)����*������������$�manifest/tests/_fixture/invalidversion.xmlnu�[��������PK���������!�o:��:��"������������&�manifest/tests/_fixture/custom.xmlnu�[��������PK���������!�hEL��L��2������������O(�manifest/tests/xml/AuthorElementCollectionTest.phpnu�[��������PK���������!�E+����+������������*�manifest/tests/xml/ComponentElementTest.phpnu�[��������PK���������!�ߎ����(������������!.�manifest/tests/xml/AuthorElementTest.phpnu�[��������PK���������!�JYK��K��/������������<1�manifest/tests/xml/ExtElementCollectionTest.phpnu�[��������PK���������!�a����)������������3�manifest/tests/xml/BundlesElementTest.phpnu�[��������PK���������!�1J��J��%������������8�manifest/tests/xml/PhpElementTest.phpnu�[��������PK���������!�Tܪ����+������������h>�manifest/tests/xml/ExtensionElementTest.phpnu�[��������PK���������!�����)������������A�manifest/tests/xml/LicenseElementTest.phpnu�[��������PK���������!�+ ����%������������D�manifest/tests/xml/ExtElementTest.phpnu�[��������PK���������!�>3��3��5������������G�manifest/tests/xml/ComponentElementCollectionTest.phpnu�[��������PK���������!� x]��]��+������������I�manifest/tests/xml/CopyrightElementTest.phpnu�[��������PK���������!�sP����*������������eP�manifest/tests/xml/ContainsElementTest.phpnu�[��������PK���������!�H0,K����*������������X�manifest/tests/xml/RequiresElementTest.phpnu�[��������PK���������!�1����+������������]�manifest/tests/xml/ManifestDocumentTest.phpnu�[��������PK���������!�?��?��B������������k�manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.phpnu�[��������PK���������!�(����2������������n�manifest/tests/values/CopyrightInformationTest.phpnu�[��������PK���������!�as��s��.������������u�manifest/tests/values/AuthorCollectionTest.phpnu�[��������PK���������!�!����8������������|�manifest/tests/values/BundledComponentCollectionTest.phpnu�[��������PK���������!�_,3��3��3�������������manifest/tests/values/PhpVersionRequirementTest.phpnu�[��������PK���������!��\����$������������x�manifest/tests/values/AuthorTest.phpnu�[��������PK���������!� м �� ��'������������^�manifest/tests/values/ExtensionTest.phpnu�[��������PK���������!�����-������������q�manifest/tests/values/ApplicationNameTest.phpnu�[��������PK���������!�K'I����!�������������manifest/tests/values/UrlTest.phpnu�[��������PK���������!�+;����%�������������manifest/tests/values/LibraryTest.phpnu�[��������PK���������!�^ w����&�������������manifest/tests/values/ManifestTest.phpnu�[��������PK���������!�m��m��%������������ �manifest/tests/values/LicenseTest.phpnu�[��������PK���������!�Uij����#�������������manifest/tests/values/EmailTest.phpnu�[��������PK���������!�`����5�������������manifest/tests/values/PhpExtensionRequirementTest.phpnu�[��������PK���������!�h����3������������L�manifest/tests/values/RequirementCollectionTest.phpnu�[��������PK���������!�9+��+��)�������������manifest/tests/values/ApplicationTest.phpnu�[��������PK���������!�㸷O����.�������������manifest/tests/values/BundledComponentTest.phpnu�[��������PK���������!�D\C���������������� �manifest/.travis.ymlnu�[��������PK���������!�Kr����������������e�manifest/.php_csnu�[��������PK���������!�>����5������������:�manifest/src/xml/ManifestDocumentLoadingException.phpnu�[��������PK���������!�n����������������Q�manifest/build.xmlnu�[��������PK���������!�R ���� �������������manifest/examples/example-01.phpnu�[��������PK���������!�VpH?���?����������������manifest/.gitignorenu�[��������PK������?�����