0
play

!"#$%&'&()*+,-&./)&0*./& - PowerPoint PPT Presentation

!"#$%&'&()*+,-&./)&0*./& !"#$#%&'()*+,#-.'/0123%#&'4565' 1/2.&23+4.&5)&6& & ! 7+"28+%'4-*93&#*&'3%'&9#':+;2"/-'/%;':+<3"#'!!' ! 4=/*9#'7+>?/-#'@+2%;/8+%' A


  1. 0+-492:$.*& 1/2.6& ! 7#=/-/8+%'+I'*+%*#-%)' ! 7&-2*&2-#' ! (%*/=)2"/8+%' ! @+*2)#)'+%' A !+9#)3+%'X"+?'3)'</;.'93L9'3)'L++;Y' A !+2="3%L'X"+?'3)'L++;.'93L9'3)'</;Y' 1/*6& ! V%;#=#%;#%&';#J#"+=$#%&' ! V%;#=#%;#%&'$/3%&#%/%*#'/%;'#J+"28+%' ! V$=-+J#'-#2)/<3"3&Q' D763'P'O#Q+%;'&9#':Q&9' HZ'

  2. !"#$&(4,-9)& D&34,-9)&$<&2&5+-49)&$,&!"#$&.):5$,+9+A*& D&34,-9)&$<&2&UDd&_9)&?+,.2$,$,A& ! !+;#' ! \#)+2-*#)' ! :#&/;/&/' E'(11#Z'&1# Module )&1.,)E&#Z'&1# +=0!# 7P-N# A+7# ;&$(J($(# D763'P'O#Q+%;'&9#':Q&9' H]'

  3. =+-)&W$<$3$9$.*&0).2-2.2& D&34,-9)&$<&2&UDd&_9)&?+,.2$,$,A&?+-)& ! G9/&'*+;#'3%'&9#'E4\'`"#'3)'J3)3<"#'&+'+&9#-'*+;#'3%'&9#'E4\'`"#j' ! G9/&'*+;#'3%'&9#'E4\'`"#'3)'J3)3<"#'&+'*+;#'+2&)3;#'&9#'E4\'`"#j' ! G9/&'*+;#'+2&)3;#'&9#'E4\'`"#'3)'J3)3<"#'&+'*+;#'3%)3;#'&9#'E4\'`"#j' e,9$7)&<.2,-2:-&UDd&_9)<E&!"#$&5).2-2.2&)\>9$?$.9*&2,<S):<&299&+@&./)<)& 84)<;+,<& D763'P'O#Q+%;'&9#':Q&9' H^'

  4. O,.):,29&=+-)&W$<$3$9$.*& O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' D763'P'O#Q+%;'&9#':Q&9' Hb'

  5. O,.):,29&=+-)&W$<$3$9$.*& O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./& ! !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4\'`"#'?9#%'"++03%L' I+-'*"/))#)' D763'P'O#Q+%;'&9#':Q&9' Hd'

  6. O,.):,29&=+-)&W$<$3$9$.*& O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./& ! !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4\'`"#'?9#%'"++03%L' I+-'*"/))#)' B+&A).&<.2,-2:-&UDd&3)/2Q$+:& ! O2%;"#K!"/))B/&9P'5' D763'P'O#Q+%;'&9#':Q&9' He'

  7. O,.):,29&=+-)&W$<$3$9$.*& O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./& ! !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4\'`"#'?9#%'"++03%L' I+-'*"/))#)' B+&A).&<.2,-2:-&UDd&3)/2Q$+:& ! O2%;"#K!"/))B/&9P'5' 02*&29<+&$,?94-)&)53)--)-&UDd<&2,-&-$:)?.+:$)<& P\25>9)<& ! O2%;"#K!"/))B/&9P'"3<[I++5F/-.*"/))#)[' ! O2%;"#K!"/))B/&9P'"3<[I++5F/-.5' D763'P'O#Q+%;'&9#':Q&9' Rh'

  8. P\>+<$,A&O,.):,29&=+-)&`KaIb& ".2,-2:-&UDd&_9)<&)\>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' D763'P'O#Q+%;'&9#':Q&9' Rg'

  9. P\>+<$,A&O,.):,29&=+-)&`KaIb& ".2,-2:-&UDd&_9)<&)\>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&P\>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'I-+$'&9#'<2%;"#'*"/))'=/&9'&+'#C=+)#' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' 1/*&-+&./$<6& D763'P'O#Q+%;'&9#':Q&9' RH'

  10. P\>+<$,A&O,.):,29&=+-)&`KaIb& ".2,-2:-&UDd&_9)<&)\>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&P\>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'I-+$'&9#'<2%;"#'*"/))'=/&9'&+'#C=+)#' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' 1/*&-+&./$<6& ! V&')#=/-/&#)'3%&#-%/"'J3)3<3"3&Q'I-+$'#C&#-%/"'J3)3<3"3&Q' ! V%'+&9#-'?+-;).'3&'/""+?)'<2%;"#)'&+'9/J#'=-3J/&#'*+%&#%&' D763'P'O#Q+%;'&9#':Q&9' RR'

  11. D??)<<$,A&P\.):,29&=+-)&`KaIb& ".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./& ! _+&'&9#'*/)#'?3&9'<2%;"#)' D763'P'O#Q+%;'&9#':Q&9' RZ'

  12. D??)<<$,A&P\.):,29&=+-)&`KaIb& ".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' D763'P'O#Q+%;'&9#':Q&9' R]'

  13. D??)<<$,A&P\.):,29&=+-)&`KaIb& ".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' (4,-9)<&54<.&$5>+:.&)Q):*&,))-)-&>2?72A)&,+.&?+,.2$,)-&$,&./)&34,-9)&$.<)9@E& )\?)>.&G2Q2fg& 1/*&-+&./$<6& D763'P'O#Q+%;'&9#':Q&9' R^'

  14. D??)<<$,A&P\.):,29&=+-)&`KaIb& ".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' (4,-9)<&54<.&$5>+:.&)Q):*&,))-)-&>2?72A)&,+.&?+,.2$,)-&$,&./)&34,-9)&$.<)9@E& )\?)>.&G2Q2fg& 1/*&-+&./$<6& ! :/0#';#=#%;#%*3#)' )\>9$?$.& ! :/0#';#=#%;#%*3#)' 52,2A)239)& D763'P'O#Q+%;'&9#':Q&9' Rb'

  15. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`Kaib& O52A$,)&34,-9)&D&<+5)/+S&A).<&<):Q9).&$,<.2,?)<&@:+5&34,-9)&(& B 5;4.)$# K(8(MA1&)8'&$[# &M4.)$# A K(8(MA1&)8'&$[# H"&#E.4F#.D# K(8(MA1&)8'&$A-&)8'&$# D763'P'O#Q+%;'&9#':Q&9' Rd'

  16. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`Kaib& 1/2.&$@&34,-9)&D&29<+&S2,.)-&.+&A).&<):Q9).&$,<.2,?)<&<+5)/+S&@:+5&34,-9)&=6& B 5;4.)$# K(8(MA1&)8'&$[# &M4.)$# A K(8(MA1&)8'&$[# H"&#E.4F#.D# K(8(MA1&)8'&$A-&)8'&$# D763'P'O#Q+%;'&9#':Q&9' Re'

  17. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`Iaib& (4,-9)&=&?+49-&$5>+:.&@:+5&34,-9)&(E&34.&./),&$.&$<&-)>),-),.&+,&$.& &M4.)$# B K(8(MA1&)8'&$[# 5;4.)$# K(8(MA1&)8'&$[# A H"&#E.4F#.D# K(8(MA1&)8'&$A-&)8'&$# C 5;4.)$# K(8(MA1&)8'&$[# D763'P'O#Q+%;'&9#':Q&9' Zh'

  18. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`jaib& (4,-9)&=&?+49-&)\>+:.&$.<&+S,&<):Q9).&>2?72A)E&34.&34,-9)&D&?+49-&+,9*&<))& )$./):&=&+:&(& &M4.)$# C K(8(MA1&)8'&$[# 5;4.)$# K(8(MA1&)8'&$[# :' A &M4.)$# N2.#E.45&1#.D# B K(8(MA1&)8'&$[# K(8(MA1&)8'&$A-&)8'&$# D763'P'O#Q+%;'&9#':Q&9' Zg'

  19. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`iaib& (4,-9)&=&?+49-&$5>+:.E&?+,.2$,&2,-&)\>+:.&<):Q9).&.+&<+9Q)&./)&-$9)552& PM4.)$#("J#5;4.)$# K(8(MA1&)8'&$[# C PM4.)$#("J#5;4.)$# K(8(MA1&)8'&$[# B 5;4.)$# K(8(MA1&)8'&$[# A D763'P'O#Q+%;'&9#':Q&9' ZH'

  20. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' ZR'

  21. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Indicates R4 Import-Package: semantics and syntax osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' ZZ'

  22. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", Indicates R4 org.foo.service; version="1.1" Globally unique ID semantics and syntax Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Z]'

  23. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Internal bundle class path Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Z^'

  24. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Import of a Bundle-Version: 1.0.0 package version range Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Zb'

  25. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Importing an exported Bundle-ClassPath: .,org/foo/embedded.jar package Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Zd'

  26. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Exported package with Import-Package: version and arbitrary osgi.service.log; version="[1.0.0,1.1.0)", attribute org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Ze'

  27. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", Provided package with org.foo.service; version="1.1" dependency on exported Export-Package: package org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' ]h'

  28. !"#$&V)>),-),?*&0+-)9& F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<& ! G9+'J)'?9/&' D763'P'O#Q+%;'&9#':Q&9' ]g'

  29. !"#$&V)>),-),?*&0+-)9& F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<& ! G9+'J)'?9/&' 0+-49)c9)Q)9&-)>),-),?$)<& ! !+/-)#'L-/3%#;' ! 4-#'<-3n"#' ! M3;#'&9#'&-2#';#=#%;#%*3#)' D763'P'O#Q+%;'&9#':Q&9' ]H'

  30. !"#$&V)>),-),?*&0+-)9& F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<& ! G9+'J)'?9/&' 0+-49)c9)Q)9&-)>),-),?$)<& ! !+/-)#'L-/3%#;' ! 4-#'<-3n"#' ! M3;#'&9#'&-2#';#=#%;#%*3#)' F2?72A)c9)Q)9&-)>),-),?$)<& ! @3%#'L-/3%#;' ! @"#C3<"#.'#%/<"#'-#I/*&+-3%L' ! 4-#'&9#'&-2#';#=#%;#%*3#)'X35#5.'&9#Qo-#'3%'&9#'*+;#Y' D763'P'O#Q+%;'&9#':Q&9' ]R'

  31. !"#$&V)>),-),?*&0+-)9& F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<& ! G9+'J)'?9/&' 0+-49)c9)Q)9&-)>),-),?$)<& ! !+/-)#'L-/3%#;' ! 4-#'<-3n"#' ! M3;#'&9#'&-2#';#=#%;#%*3#)' F2?72A)c9)Q)9&-)>),-),?$)<& ! @3%#'L-/3%#;' ! @"#C3<"#.'#%/<"#'-#I/*&+-3%L' ! 4-#'&9#'&-2#';#=#%;#%*3#)'X35#5.'&9#Qo-#'3%'&9#'*+;#Y' F2?72A)c9)Q)9&-)>),-),?$)<&:)84$:)&>2?72A)<&.+&3)&2.+5$?&`$f)fE&$,&2&<$,A9)& 34,-9)b& D763'P'O#Q+%;'&9#':Q&9' ]Z'

  32. V)>),-),?*&d)<+94;+,&`KaIb& D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7& ! (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;' D763'P'O#Q+%;'&9#':Q&9' ]]'

  33. V)>),-),?*&d)<+94;+,&`KaIb& D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7& ! (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;' O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<& >:+Q$-$,A&./)5& & 5;4.)$# & 5;4.)$# K(8(MA1&)8'&$# K(8(MA1&)8'&$A%\4# C A B & &M4.)$# &M4.)$# K(8(MA1&)8'&$A%\4# K(8(MA1&)8'&$# D763'P'O#Q+%;'&9#':Q&9' ]^'

  34. V)>),-),?*&d)<+94;+,&`KaIb& D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7& ! (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;' O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<& >:+Q$-$,A&./)5& & 5;4.)$# & 5;4.)$# K(8(MA1&)8'&$# K(8(MA1&)8'&$A%\4# C A B & &M4.)$# &M4.)$# & K(8(MA1&)8'&$A%\4# K(8(MA1&)8'&$# & ! aQ=3*/""Q.'-#)+"J3%L'/'<2%;"#'?3""'-#)2"&'3%'+&9#-'<2%;"#)'<#3%L'&-/%)38J#"Q' -#)+"J#;' D763'P'O#Q+%;'&9#':Q&9' ]b'

  35. V)>),-),?*&d)<+94;+,&`KaIb& D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7& ! (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;' O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<& >:+Q$-$,A&./)5& & 5;4.)$# 5;4.)$# K(8(MA1&)8'&$# & K(8(MA1&)8'&$A%\4# C A B & &M4.)$# &M4.)$# K(8(MA1&)8'&$A%\4# K(8(MA1&)8'&$# & ! aQ=3*/""Q.'-#)+"J3%L'/'<2%;"#'?3""'-#)2"&'3%'+&9#-'<2%;"#)'<#3%L'&-/%)38J#"Q' -#)+"J#;' ! VI'/'J#-)3+%'+-'/-<3&-/-Q'/n-3<2&#)'/-#')=#*3`#;'+%'3$=+-&).'&9#%'#C=+-&)'$2)&' $/&*9' A :2"8="#'/n-3<2&#)'+%'/%'3$=+-&'/-#'"+L3*/""Q' DMV)-& D763'P'O#Q+%;'&9#':Q&9' ]d'

  36. V)>),-),?*&d)<+94;+,&`IaIb& 049;>9)&52.?/$,A&>:+Q$-):<& & B & &M4.)$# 5;4.)$# & K(8(MA1&)8'&$[# K(8(MA1&)8'&$[# 8&)15."]^GA_A`^# 8&)15."]^GA_A`^# :' A & C & &M4.)$# & K(8(MA1&)8'&$[# 8&)15."]^GAaA`^# & D763'P'O#Q+%;'&9#':Q&9' ]e'

  37. V)>),-),?*&d)<+94;+,&`IaIb& 049;>9)&52.?/$,A&>:+Q$-):<& & B & & &M4.)$# 5;4.)$# K(8(MA1&)8'&$[# K(8(MA1&)8'&$[# & 8&)15."]^GA_A`^# 8&)15."]^GA_A`^# :' A & C & &M4.)$# K(8(MA1&)8'&$[# & 8&)15."]^GAaA`^# ! \#)+"28+%'/"L+-3&9$'+-;#-)'$/&*93%L'=-+J3;#-)' A 4"-#/;Q'-#)+"J#;'=-+J3;#-)'+-;#-#;'<Q';#*-#/)3%L'J#-)3+%' A N%-#)+"J#;'=-+J3;#-)'+-;#-#;'<Q';#*-#/)3%L'J#-)3+%' A VI'J#-)3+%)'/-#'#12/".'$/&*93%L'=-+J3;#-)'/-#'+-;#-#;'</)#;'+%'3%)&/""/8+%'+-;#-' D763'P'O#Q+%;'&9#':Q&9' ^h'

  38. M+,c0+-492:&F2$,.&F:+A:25&`Kajb& 1)&/2Q)&2&<$5>9)&>2$,.&>:+A:25& 7).;#$%&#H-65#5"#=EX."# :..C# D763'P'O#Q+%;'&9#':Q&9' ^g'

  39. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& META-INF/ META-INF/MANIFEST.MF org/ org/foo/ org/foo/paint/ org/foo/paint/PaintFrame$1$1.class org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ org/foo/shape/Circle.class org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^H'

  40. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& Main implementation META-INF/ package is META-INF/MANIFEST.MF org.foo.paint org/ org/foo/ org/foo/paint/ org/foo/paint/PaintFrame$1$1.class org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ org/foo/shape/Circle.class org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^R'

  41. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& META-INF/ META-INF/MANIFEST.MF org/ org/foo/ org/foo/paint/ Static main method in org/foo/paint/PaintFrame$1$1.class PaintFrame org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ org/foo/shape/Circle.class org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^Z'

  42. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& META-INF/ META-INF/MANIFEST.MF org/ org/foo/ org/foo/paint/ Interface SimpleShape org/foo/paint/PaintFrame$1$1.class supports multiple shape org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class implementations org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ org/foo/shape/Circle.class org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^]'

  43. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& META-INF/ META-INF/MANIFEST.MF org/ org/foo/ org/foo/paint/ org/foo/paint/PaintFrame$1$1.class org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ Shape implementations org/foo/shape/Circle.class defined in org.foo.shape org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^^'

  44. M+,c0+-492:&F2$,.&F:+A:25&`jajb& d)92;+,</$>&25+,A&?92<<)<& c# b# Simple Paint Shape Frame b# c# Shape Triangle Circle Square Component D763'P'O#Q+%;'&9#':Q&9' ^b'

  45. M+,c0+-492:&F2$,.&F:+A:25&`jajb& d)92;+,</$>&25+,A&?92<<)<& c# b# Simple Paint Shape Frame b# c# Shape Triangle Circle Square Component How to decompose into bundles? D763'P'O#Q+%;'&9#':Q&9' ^d'

  46. 0+-492:&F2$,.&F:+A:25&V)<$A,& &M4.)$# Shape .)*AD..A1%(4&# Paint Circle &M4.)$# .)*AD..A1%(4&AE5)E'&# Square &M4.)$# .)*AD..A1%(4&A1d,()&# Triangle &M4.)$# .)*AD..A1%(4&A$)5("*'&# D763'P'O#Q+%;'&9#':Q&9' ^e'

  47. (),)_.<&+@&0+-492:$H)-&F2$,.&F:+A:25& P,@+:?)-&9+A$?29&3+4,-2:$)<& & D4.+52;?&-)>),-),?*&:)<+94;+,& ! (%)2-#)'=-+=#-'*+%`L2-/8+%' ' O5>:+Q)<&:)4<23$9$.*&+@&?+-)& & O5>:+Q)<&23$9$.*&.+&?:)2.)&-$C):),.&?+,_A4:2;+,<& D763'P'O#Q+%;'&9#':Q&9' bh'

  48. D763'P'O#Q+%;'&9#':Q&9' bg'

  49. 1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):& !,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6& ! G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&' D763'P'O#Q+%;'&9#':Q&9' bH'

  50. 1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):& !,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6& ! G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&' 1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6& ! G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0' D763'P'O#Q+%;'&9#':Q&9' bR'

  51. 1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):& !,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6& ! G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&' 1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6& ! G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0' 1/2.&$@&S)&S2,.&.+&2--&2,-&:)5+Q)&34,-9)<&2.&:4,&;5)6& ! G#'%##;')+$#?/Q'&+'/**#))'&9#'2%;#-"Q3%L'I-/$#?+-0' D763'P'O#Q+%;'&9#':Q&9' bZ'

  52. 1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):& !,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6& ! G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&' 1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6& ! G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0' 1/2.&$@&S)&S2,.&.+&2--&2,-&:)5+Q)&34,-9)<&2.&:4,&;5)6& ! G#'%##;')+$#?/Q'&+'/**#))'&9#'2%;#-"Q3%L'I-/$#?+-0' 1)&?2,&-+&299&+@&./)<)&./$,A<&S$./&2&S)99c-)_,)-&9$@)?*?9)&@+:&34,-9)<& ! 4'"3I#*Q*"#';#`%#)'&9#')&/L#)'+I'/'<2%;"#o)'"3I#8$#' A a9#'I-/$#?+-0'/))+*3/&#)'/'"3I#*Q*"#')&/&#'?3&9'#/*9'<2%;"#' D763'P'O#Q+%;'&9#':Q&9' b]'

  53. (4,-9)&Z$@)&=*?9)& 5"1$(''# INSTALLED ,4J($&# ,"5"1$(''# )&1.'8&# ,"5"1$(''# UNINSTALLED RESOLVED 1$()$# STARTING STOPPING 1$.4# &M4'5E5$# (,$.;(XE# ACTIVE D763'P'O#Q+%;'&9#':Q&9' b^'

  54. (4,-9)&Z$@)&=*?9)& 5"1$(''# INSTALLED ,4J($&# ,"5"1$(''# )&1.'8&# ,"5"1$(''# UNINSTALLED RESOLVED 1$()$# ;&2<9*)./'"'=8.$9&>'#&2<9*&2')32' ?<$&'$&,&.$&.?)&2' STARTING STOPPING 1$.4# &M4'5E5$# (,$.;(XE# ACTIVE D763'P'O#Q+%;'&9#':Q&9' bb'

  55. (4,-9)&Z$@)&=*?9)& @?-*"-./'"'=8.$9&>',#<*)$&2'".' 5"1$(''# <,,<#38.)31'3<').)-"9)A&'".$' "??&22'3B&'C#"4&%<#D' INSTALLED ,4J($&# ,"5"1$(''# )&1.'8&# ,"5"1$(''# UNINSTALLED RESOLVED 1$()$# STARTING STOPPING 1$.4# &M4'5E5$# (,$.;(XE# ACTIVE D763'P'O#Q+%;'&9#':Q&9' bd'

  56. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& D763'P'O#Q+%;'&9#':Q&9' be'

  57. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& ! a9#'9++0'3)'3%J+0#;'3%'&9#'7a4\aV_6[7aDBBV_6')&/&#)' D763'P'O#Q+%;'&9#':Q&9' dh'

  58. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& ! a9#'9++0'3)'3%J+0#;'3%'&9#'7a4\aV_6[7aDBBV_6')&/&#)' ! 4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4\' `"#' public interface BundleActivator { & void start(BundleContext context) throws Exception; void stop(BundleContext context) throws Exception; } D763'P'O#Q+%;'&9#':Q&9' dg'

  59. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& ! a9#'9++0'3)'3%J+0#;'3%'&9#'7a4\aV_6[7aDBBV_6')&/&#)' ! 4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4\' `"#' public interface BundleActivator { & void start(BundleContext context) throws Exception; & void stop(BundleContext context) throws Exception; } & ! 4;;38+%/"'$/%3I#)&'$#&/;/&/'3)'%##;#;'&+';#*"/-#'&9#'/*8J/&+-' Bundle-Activator: <fully-qualified-class-name> &A*A># Bundle-Activator: org.foo.MyActivator D763'P'O#Q+%;'&9#':Q&9' dH'

  60. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& ! a9#'9++0'3)'3%J+0#;'3%'&9#'7a4\aV_6[7aDBBV_6')&/&#)' ! 4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4\' `"#' & public interface BundleActivator { void start( BundleContext context ) throws Exception; & void stop( BundleContext context ) throws Exception; } & ! 4;;38+%/"'$/%3I#)&'$#&/;/&/'3)'%##;#;'&+';#*"/-#'&9#'/*8J/&+-' Bundle-Activator: <fully-qualified-class-name> What are these? &A*A># Bundle-Activator: org.foo.MyActivator D763'P'O#Q+%;'&9#':Q&9' dR'

  61. (4,-9)&=+,.)\.& d)>:)<),.<&./)&34,-9)k<&)\)?4;+,&?+,.)\.& public interface BundleContext { String getProperty(String key); Bundle getBundle(); Bundle installBundle(String location) throws BundleException; Bundle installBundle(String location, InputStream input) throws BundleException; Bundle getBundle(long id); Bundle[] getBundles(); ... void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... File getDataFile(String filename); ... } D763'P'O#Q+%;'&9#':Q&9' dZ'

  62. (4,-9)&=+,.)\.& d)>:)<),.<&./)&34,-9)k<&)\)?4;+,&?+,.)\.& Lifecycle method public interface BundleContext { to install other bundles String getProperty(String key); Bundle getBundle(); Bundle installBundle(String location) throws BundleException; Bundle installBundle(String location, InputStream input) throws BundleException; Bundle getBundle(long id); Bundle[] getBundles(); ... void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... File getDataFile(String filename); ... } D763'P'O#Q+%;'&9#':Q&9' d]'

  63. (4,-9)&=+,.)\.& d)>:)<),.<&./)&34,-9)k<&)\)?4;+,&?+,.)\.& public interface BundleContext { String getProperty(String key); Bundle getBundle(); Bundle installBundle(String location) throws BundleException; Bundle installBundle(String location, InputStream input) throws BundleException; Access to other Bundle getBundle(long id); installed bundles Bundle[] getBundles(); ... void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... File getDataFile(String filename); ... } D763'P'O#Q+%;'&9#':Q&9' d^'

  64. (4,-9)&=+,.)\.& d)>:)<),.<&./)&34,-9)k<&)\)?4;+,&?+,.)\.& public interface BundleContext { String getProperty(String key); Access to our own bundle... Bundle getBundle(); what's that? Bundle installBundle(String location) throws BundleException; Bundle installBundle(String location, InputStream input) throws BundleException; Bundle getBundle(long id); Bundle[] getBundles(); ... void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... File getDataFile(String filename); ... } D763'P'O#Q+%;'&9#':Q&9' db'

  65. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); long getBundleId(); String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' dd'

  66. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& Lifecycle method to public interface Bundle { start bundle ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); long getBundleId(); String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' de'

  67. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& Lifecycle method to public interface Bundle { ... stop bundle int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); long getBundleId(); String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eh'

  68. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); Lifecycle method to long getBundleId(); update bundle String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eg'

  69. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); Lifecycle method to long getBundleId(); uninstall bundle String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eH'

  70. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); Access to long getBundleId(); bundle resources String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eR'

  71. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); Access to long getBundleId(); accessible classes String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eZ'

  72. (4,-9)&V*,25$<5& (4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)& ! O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)' N.#'51$&"#D.)#&8&"$1# BundleContext.addBundleListener() D763'P'O#Q+%;'&9#':Q&9' e]'

  73. (4,-9)&V*,25$<5& (4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)& ! O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)' !;4'&;&"$#'51$&"&)#5"$&)D(E&# public interface BundleListener extends EventListener { public void bundleChanged(BundleEvent event); } D763'P'O#Q+%;'&9#':Q&9' e^'

  74. (4,-9)&V*,25$<5& (4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)& ! O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)' e&E&58&J#&8&"$# public class BundleEvent extends EventObject { public final static int INSTALLED = 0x00000001; public final static int STARTED = 0x00000002; public final static int STOPPED = 0x00000004; public final static int UPDATED = 0x00000008; public final static int UNINSTALLED = 0x00000010; public final static int RESOLVED = 0x00000020; public final static int UNRESOLVED = 0x00000040; public final static int STARTING = 0x00000080; public final static int STOPPING = 0x00000100; … public Bundle getBundle() { … } public int getType() { … } } D763'P'O#Q+%;'&9#':Q&9' eb'

  75. (4,-9)c(2<)-&V*,25$?&P\.),<$3$9$.*& (4,-9)&9$@)?*?9)&)Q),.<&>:+Q$-)&2&5)?/2,$<5&@+:&-*,25$?&)\.),<$3$9$.*& B/)&)\.),-):&>2X):,& ! 4%'/=="3*/8+%'*+$=+%#%&.'*/""#;'&9#'#C&#%;#-.'"3)&#%)'I+-'<2%;"#)'&+'<#' 3%)&/""#;.')&/-&#;.'/%;')&+==#;' ! D%'3%)&/"".'&9#'#C&#%;#-'=-+<#)'<2%;"#)'&+')##'3I'&9#Q'/-#'#C&#%)3+%)' A aQ=3*/""Q.'#C&#%)3+%'*+%&/3%')=#*3/"'$#&/;/&/'+-'-#)+2-*#)'&+'3%;3*/&#'&9#Q' =-+J3;#'/%'#C&#%)3+%' ! G9#%')&/-&#;.'&9#'#C&#%;#-'=#-I+-$)')+$#'/*8+%'&+'3%&#L-/&#'&9#'#C&#%)3+%' 3%&+'&9#'/=="3*/8+%' ! G9#%')&+==#;.'&9#'#C&#%;#-'=#-I+-$)')+$#'/*8+%'&+'-#$+J#'&9#'#C&#%)3+%' I-+$'&9#'/=="3*/8+%' D763'P'O#Q+%;'&9#':Q&9' ed'

  76. P\.),-):&F2X):,& Installed bundles Tracker Frame W.)&# D763'P'O#Q+%;'&9#':Q&9' ee'

  77. P\.),-):&F2X):,& Installed bundles e&*51$&)# :,"J'&#'51$&"&)# Tracker Frame W.)&# D763'P'O#Q+%;'&9#':Q&9' ghh'

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend