TA的每日心情 | 开心 5 天前 |
---|
签到天数: 40 天 [LV.5]常住居民I
管理员
- 积分
- 2824
|
Java吧 视频教程: 零基础Scala系统入门与实战视频教程
2 q; {: | j9 \& W. uJava教程编号:【S0220】-166
) ~9 v, J* Y% Z2 y7 a# ^- \) I* ^
3 E {' E4 D$ U8 k- F3 _6 g/ ?0 H) W* r1 ?: s3 I
^" n3 r* h+ _$ n
〖课程目录〗:9 a/ |3 n- x, d W- {$ ~
├─01 第1章 零基础:为什么大数据编程首选Scala语言
* I; I% F) @$ r8 c) U1 I) T9 H│ 1-1 玩转Scala,进击大数据.mp48 G* r! F3 o; Y( T; H) N. L5 X: f5 ~8 E1 P. T* I n
│ 1-2 本章概览.mp4
+ O- Y5 j3 u6 g& O│ 1-3 Scala是什么.mp4) _$ X }5 n; s1 k! Z- O8 f
5 S( z( f5 L1 G8 l* J│ 1-4 学习Scala的意义何在.mp4
u& z4 W1 Q8 S1 {│ 1-5 Scala安装及快速使用.mp4
& r$ O3 b' r* \9 p│ 1-6 Scala与JVM的关系.mp44 m" A+ s7 g+ r7 y. L( N' R
/ ~ q' M \- m8 v9 |7 O8 v8 T│ 1-7 基于IDEA构建Scala项目.mp4
0 {2 }& z' D% m" M$ x. N. u5 j│ 1-8 【面试官来啦】面试讨论题.html [# ^+ @: A) ^8 I# g- C8 Q- A' k
│ 1-9 【练练练】阶段作业题.html/ a) h# X+ X) M; R
│ 1-10 基于IDEA+Maven构建本地开发环境补充.html
6 F; v$ L, D" e3 u `│ & Q. Z6 M; j8 u) {( J, E' m
├─02 第2章 零基础:急速入门大数据编程首选语言Scala c/ i' {) u2 k9 b! l0 f, [% N2 D/ s
h) O3 w0 X7 m│ 2-1 课程目录.mp4: Q; }. A4 j9 G$ d) t* U7 [, S
│ 2-2 注释之论一个码农的自我修养.mp4
+ B. [4 G- b) m) r" X. K6 e" m│ 2-3 标识符之论起名的艺术.mp4: ~1 Q5 q" }$ Y" V0 X3 [- F; y: [; o
│ 2-4 宏观了解Scala中的数据类型.mp4) o3 V. b! F3 y6 [7 U$ G0 i4 e$ `
│ 2-5 值和变量(注意理解第二个场景).mp4" v; d) f+ t6 [6 \( I6 f
│ 2-6 数据类型.mp40 S* W6 s! P: ^' ^+ h- H/ S
0 m7 M2 i5 x' ?: ?│ 2-7 数据类型转换.mp4, g6 E) s7 B- b) H/ Q4 k% f! p) ^* s' ^$ x+ }' Y
│ 2-8 【重要!必掌握】字符串操作.mp4- Q% i' |; ]/ l
2 }- r7 {7 d( b1 @" \) B4 @│ 2-9 实操之从控制台终端获取数据.mp4+ {; f2 O% R$ B- S, Z; d' n
│ 2-10 运算符的用法.mp4. D+ ~1 z( e* R# Q7 K0 [; i3 n% y$ H2 r" r: x) W2 s" c3 K
│ 2-11 条件分支详解.mp40 J9 P1 Z' B, Q2 F
2 B1 m0 u; W+ N2 P│ 2-12 循环之while&dowhile.mp4
2 J% @6 O0 r' n) H* y│ 2-13 循环之while以优雅的方式退出.mp4; r. g( Z J# u* M( k" P6 f+ ]* `, D( Y! D# |( L' w; q
│ 2-14 【重要!必掌握】循环之for.mp41 Y4 V# V1 y- i! ?1 a: r6 |
0 V! \; t+ P* R W t7 C│ 2-15 通过场景引出方法.mp4+ Z2 M* M# o* f0 U. V" m% @+ u! G. j, L4 Q
│ 2-16 【重要!必掌握】方法的定义和使用.mp4/ i, v" S+ Y5 h; r/ d, k6 d
│ 2-17 【重要!必掌握】 默认参数.mp4' @; e' w; ?2 A1 Z, F/ T+ x0 y# Y% o
│ 2-18 命名参数.mp4- Y3 x7 b8 J: l0 O1 ?7 p3 K( P, ?3 N3 i% D0 k( M, {2 @- H
│ 2-19 【重要!必掌握】变长参数.mp4: R6 p8 \* }( E& \/ L% E
│ 2-20 数据类型补充之Unit&Null&Nothing.mp4; v/ ~, G2 m! U( e% f
│ 2-21 【面试官来啦】面试讨论题.html0 j }9 k, v0 }) R, r. ~* ]1 k# _2 F1 H
│ 2-22 【练练练】阶段作业题.html
; ], c) ?% h' u0 w8 \" v, K+ f│ 1 @" i( o1 E- R& o$ D+ c( W$ V
├─03 第3章 入门到进阶:如何熟练掌握Scala面向对象编程: f" N7 V/ |8 Z4 t9 e, `
, G' s- r j/ i: ^+ E0 n( g│ 3-1 课程目录.mp4* S4 R6 c) ~# y [# h( U P6 n9 O$ r; i
8 V5 p- g3 e& L1 r% t' A( i, J│ 3-2 面向对象三大特性.mp47 H& k# f! ]7 z6 ^0 R4 P3 J5 X4 m6 C; v. S, ^ }1 ~$ T5 E
│ 3-3 【重要!必掌握】通过女朋友认识类和对象的关系.mp4+ M/ l1 H6 a; J5 W* o
│ 3-4 定义类并通过反编译掌握属性对应的方法构成.mp4/ L$ k. i: g3 [& C3 N6 D1 E8 X5 U1 b) _9 g5 \4 B H
│ 3-5 占位符在Scala中的使用(非常重要务必掌握).mp4+ V/ V7 J( m+ S" Y& q) q! V# o" d! V! `9 V+ A( \
│ 3-6 通过反编译掌握private关键字的使用.mp4 q. j( i G( |5 `$ k; c! f% ?& d9 U% [( k) Z
│ 3-7 构造器与附属构造器的使用及阅读源码.mp4( }7 `% ]- a% {+ Z2 e5 u# c: M/ M. v! Z* J% r% ~
│ 3-8 继承&重写的使用及阅读源码.mp4, o( s( h9 |6 E- W: v( x- o
│ 3-9 抽象类的使用及阅读源码.mp4
& @8 [% _% s, Z│ 3-10 【重要!必掌握】伴生类&伴生对象.mp49 C2 u# j' a7 e# Z8 h# k; Z5 m8 L+ B) t# i5 F7 ~+ B" n7 h
│ 3-11 从面试题说起case class&case object.mp4: a6 L- `9 ?9 Y2 ?% @
│ 3-12 trait的定义及使用.mp4 w, \6 i) v1 c v7 A7 x- `; v; C2 m2 ]" ?
│ 3-13 动态混入&自身类型.mp43 @6 ^( p, E, [& Z# J" M0 @& f0 t
│ 3-14 包管理以及隐式转换导入.mp4
4 r# r5 {8 p- v5 Z4 g5 _6 ^( a│ 3-15 【重要!必掌握】packageobject的使用.mp4/ @ H) B& U$ a" L' H, }% I ?
, t* V" S+ ?! o│ 3-16 类型转换&类型判断&类型别名.mp4; ^* R( ~0 w- G" {5 ^7 ~8 F
: |/ M0 w7 V2 Q, h1 }( Q│ 3-17 枚举的使用.mp4( b+ b9 u( `* D; c9 q' \9 U8 ?4 R2 N) ]; b
│ 3-18 App小技巧的使用.mp4, C( f8 C3 r/ A3 x
; E! u8 b6 t3 O8 z│ 3-19 【面试官来啦】面试讨论题.html! p, J" m4 d- r0 T7 O
│ 3-20 【练练练】阶段作业题.html/ M$ F7 ^9 I' N8 m5 r& x
│ 4 N/ S$ l- |% o' \% b L
4 ^1 w; h: x. u├─04 第4章 入门到进阶:如何熟练掌握Scala集合 h( t6 m0 n: R3 O( v( T: N* l2 R
│ 4-1 课程目录.mp40 q9 L9 W, @) L! M! F4 q3 o7 V4 k& y9 S
│ 4-2 Scala集合架构.mp4
( P' r$ j* b: k8 {1 v) _. e( S. x8 R│ 4-3 不可变数组的定义和使用.mp4
8 v9 m2 N5 ^& }0 f- L│ 4-4 可变数组的定义和使用(非常重要务必掌握).mp4
6 v L; D6 b9 b# z# O0 j$ G) s│ 4-5 不可变和可变Set的定义和使用.mp4
v' @5 ]0 s; g8 M d) j1 d% V│ 4-6 不可变和可变List的定义和使用(非常重要务必掌握).mp43 L0 L* O9 K. K& C. v
│ 4-7 List方法的补充.mp4, z' a6 w |0 Y+ T5 e" P4 E
│ 4-8 Tuple的定义和使用(非常重要务必掌握).mp4. r& E# Z% y/ s/ V2 A( h+ L3 ]1 V" p3 k
│ 4-9 不可变Map的定义和使用及使用注意事项(非常重要务必掌握).mp4( _+ H4 D0 y4 b$ [; A+ l
│ 4-10 可变Map的定义和使用.mp4& s- ]1 h. M+ J; H5 |4 g
1 U) ?) b6 f8 g7 m/ c│ 4-11 【面试官来啦】面试讨论题.html& j# o/ S# i+ `6 }. _$ W$ U
│ 4-12 【练练练】阶段作业题.html& O4 O; q0 t2 b& s2 K. G8 x$ m# Y$ D' e
│
* k) T* c/ r% H1 B3 i6 A+ {├─05 第5章 入门到进阶:如何熟练掌握Scala模式匹配% h& p( R# [ J3 j
│ 5-1 课程目录.mp4: ~$ D5 V$ e* ^' ^; W
; O* v/ z, h$ _/ e7 F0 X9 V│ 5-2 隐式转换能为我们带来什么.mp4
) e# T. X( }$ {5 o% O9 q4 G│ 5-3 模式匹配概念的理解.mp4/ D. C! x" B9 }* p$ o L# P% F' V# m* L
% ]' k9 c3 r6 u6 \5 o( g5 s; L- b│ 5-4 模式匹配之快速上手.mp4& Y' Q" d. z; T( ^2 g
│ 5-5 模式匹配之内容匹配.mp48 G9 O. c) c$ U8 s1 ^& O
9 c0 \& q. |1 l│ 5-6 模式匹配之守卫模式.mp4% b o9 s! u( I# x
. M. W/ W* X$ S# U. `│ 5-7 模式匹配之类型匹配.mp4
/ U7 U( a( N6 W% U│ 5-8 模式匹配之Array匹配.mp4- q K3 b$ R4 t% C }8 G7 L
1 G# T. r0 t4 h; }│ 5-9 模式匹配之Tuple匹配.mp44 v8 ~( n) r+ W, `( s3 H
+ o% T: Y1 U& k1 z/ M│ 5-10 模式匹配之List匹配.mp4" P( O, j- n0 F' J1 p9 M2 b
│ 5-11 模式匹配之class匹配.mp4# D B8 ~/ D( H! M3 o, _
% d- J! e6 {; \2 c7 O. H$ z│ 5-12 【重要!必掌握】模式匹配之caseclass匹配.mp4
: K6 }+ O! b: p; i│ 5-13 模式匹配之结合Spark讲解.mp4
1 i4 U5 f. v5 k v7 P) j│ 5-14 模式匹配之Scala异常处理.mp4( G1 w& B- x4 v `
. ?* U/ u4 T G _│ 5-15 初识偏函数.mp46 a/ T' J, Q1 A: \% m: l) {) \9 ~1 a7 L7 x
│ 5-16 【重要!必掌握】偏函数剥丝抽茧迭代.mp47 O$ o8 A ^0 e2 p
│ 5-17 【面试官来啦】面试讨论题.html0 r+ c$ N" q: Y* Q% b" O: k5 _# e+ u t9 i2 W# F3 ^. l5 u0 |
│ 5-18 【练练练】阶段作业题.html$ ^; j: U0 [* p" m1 [5 w' Q* f% O' ?. S, o3 j% H; p2 }7 g) I
│ 3 z8 ~! p% j% m; s0 [5 i
├─06 第6章 入门到进阶:如何熟练掌握Scala函数式编程/ P5 F3 S# |: f" k% m4 w( ^9 U" W6 {* T$ i
│ 6-1 课程目录.mp47 x! p0 N/ ^9 }1 t" `
│ 6-2 经典面试题之函数和方法的区别.mp4# d) g' Y; X0 Y; l8 _- \& e% c$ N' H3 b# Q3 ]$ g% w
│ 6-3 【重要!必掌握】方法与函数的转换.mp4
6 q8 B+ [8 M( V( B│ 6-4 【重要!必掌握】高阶函数定义及使用.mp4! G3 M% t7 Y/ l, S3 u: p. O2 J% f P+ d0 F) J0 R% [
│ 6-5 Currying定义及使用.mp4
+ x2 _% |. ]4 ?0 T8 g│ 6-6 【重要!必掌握】经典面试题之自定义实现一些高阶算子.mp4
8 f9 ], L0 b9 k" S' v4 J4 G│ 6-7 高阶算子详解之map.mp41 \" J8 f/ m% D, S
$ P0 h; [# \+ {2 s) ~9 j+ K│ 6-8 高阶算子详解之filter&foreach&结合map的综合使用.mp4- h6 G, U* {! d# F. t3 i# U8 X4 ^
% B- q% V: _" c9 [) A4 N│ 6-9 高阶算子详解之flatter&flatMap.mp4 f0 @0 a" P* a8 h* _/ A3 K1 w7 I5 i0 h
│ 6-10 高阶算子详解之reduce&reduceLeft&reduceRight(一定要体会中间过程的理解).mp42 T6 z- N' b4 @, w) K0 Y! X: b* C0 k; }9 Q( |& q1 Z
│ 6-11 高阶算子详解之fold&foldLeft&foldRight(一定要体会中间过程的理解).mp4
7 r+ E4 p1 S7 U$ L( `+ b│ 6-12 高阶算子详解之zip系列.mp4
- \. Y: v- R* U│ 6-13 高阶算子详解之groupBy.mp49 j/ a! N3 @- H- U
, a9 y; G/ V9 j& U; B9 c│ 6-14 高阶算子详解之mapValues.mp4( a% V8 z$ Q. Q$ ^+ Y1 t
) \& m. y& L; Y/ J# z│ 6-15 高阶算子详解之排序系列.mp4/ y; Q" Y/ G2 u X* {
6 ~0 F/ d" n) V9 e7 D│ 6-16 高阶算子详解之算子综合实操.mp4( l0 f8 y4 H, G
" v/ [+ h3 Z8 }) ~│ 6-17 注意一个小小的面试题.mp44 e$ \8 x* U8 r& q$ s' A8 P+ I8 F
│ 6-18 【面试官来啦】面试讨论题.html+ e- }+ U8 a$ d
& b6 Y& A5 K3 T2 z4 B│ 6-19 【练练练】阶段作业题.html. l g6 [6 n6 u) f! ~6 k; m, C: z
│ & I6 J2 p$ a) b9 s6 Y$ J
$ i* ~) A1 [) g6 S3 P- K6 ? \7 S├─07 第7章 入门到进阶:如何熟练掌握Scala隐式转换. Z/ t8 a- l) w. ]+ C) r T
│ 7-1 课程目录.mp44 ~* ?# w6 `6 k9 T/ v# {* [, W4 L' w; G t$ S
│ 7-2 隐式转换能为我们带来什么.mp4
& N/ [" x: P J+ a. p9 t│ 7-3 【重要!必掌握】隐式转换函数的定义和使用.mp4
* d; M3 d8 Y# O& ]: g: a│ 7-4 【重要!必掌握】隐式转换函数的封装.mp47 e8 H% Y& S0 z% q
│ 7-5 隐式类的定义和使用.mp4. K+ p& \# a1 i" w3 y4 ~
│ 7-6 隐式类的封装.mp4! _! l6 X" y6 E. }3 B& d: A2 ~5 x) }; ~# i
│ 7-7 隐式参数的定义和使用.mp4' a' z7 G( E! y
│ 7-8 【面试官来啦】面试讨论题.html2 ~4 \+ U2 c% [4 ?$ j& Y) }, u9 A1 o! J9 e
│ 7-9 【练练练】阶段作业题.html7 W. G5 M/ R& k
@# Y* R3 g1 O│ 3 p$ b G4 p: [* |# h0 x4 K
) j" ]% l( m+ i7 F. w├─08 第8章 入门到进阶:如何熟练掌握Scala泛型" I! ?- `8 f2 F2 ]% B- Z4 J, j: i! z- @$ u
│ 8-1 课程目录.mp4. [" c4 `3 e* y8 w. |6 G+ z! }) O, N, v" `0 y9 r5 U: W# w9 ?
│ 8-2 Java泛型基础回顾.mp4
" W$ M! U. U: r6 [5 d5 D( s1 m│ 8-3 Java泛型上下限回顾.mp4/ o" m$ T. T& \- E# }, I9 ]4 J3 L1 B1 g6 H9 T2 r
│ 8-4 Java中两种不同的排序.mp48 d0 j" U/ d0 w# E/ o% w8 s3 n% s
│ 8-5 Scala中泛型类的定义和使用.mp4% W" a6 }4 G: b( u
│ 8-6 Scala泛型上下限.mp4# T% N( D+ u% E( d' o# X3 e# T) v8 E3 S* A v+ h$ h' n
│ 8-7 【重要!必掌握】Scala视图界定.mp4/ a# w! F' [+ R' h
( ^5 L0 E: {; [* K, S) d3 f│ 8-8 【重要!必掌握】Scala泛型结合隐式转换的使用.mp45 P5 X* v, z+ p7 `* W
│ 8-9 Scala中的逆变和协变.mp49 I- }, f4 m/ q2 h; M& \; P M: s5 D L/ a0 D' {% Z
│ 8-10 【面试官来啦】面试讨论题.html, b$ T% E8 m3 X0 d: \! N' ^2 C
7 H* V. P' w2 j0 a' u│ 8-11 【面试官来啦】面试讨论题.html
) U9 L5 H+ y/ [. B. ^│ 8-12 【练练练】阶段作业题.html, q; N' w8 _0 n3 {" _
│ # V+ f/ W; N" a) _8 T
; x+ ]0 H# b! \( o' h, {+ c├─09 第9章 进阶实战:基于Akka编程模型实战通信项目
( G0 [. z4 K& }0 K+ _! N) b│ 9-1 课程目录.mp4( j" L9 h4 Z, E3 m; W
, U( E9 {8 X+ [6 y: [8 u│ 9-2 Akka概述.mp4
; [, p& Z0 H4 M s, \6 T" n│ 9-3 剖析Actor模型工作机制.mp4$ f A# H1 z5 ^3 x v0 F- b2 G$ {' B4 u" l
│ 9-4 需求分析.mp43 I5 y) B1 o* c' x$ d' s2 T- s4 E
│ 9-5 功能实现之启动NN和DN.mp4. K. z( Y W7 F2 a0 z# n( a1 D3 x, C V: w0 \: [9 Z. A
│ 9-6 功能实现之DN向NN建立连接并发送注册消息.mp48 \. n- G/ ]9 W# U; `3 G
│ 9-7 功能实现之封装消息.mp44 J2 d) D) l P- o5 I" V. x
│ 9-8 功能实现之NN向DN发送注册成功消息.mp46 r5 K+ {" p: Y1 g. a1 q# o$ E$ O \3 F
│ 9-9 功能实现之DN周期性的向NN发送心跳消息.mp4
8 t! c4 q! o( x& \: V8 n3 X9 V│ 9-10 功能实现之NN定期检查超时的DN并移除.mp4) I6 x0 X& L7 n! b* R. f# v5 x" z2 U3 w1 S! l" X
│ 9-11 功能实现之单机器多进程方式测试.mp4) e7 F) b3 i) d" }* E* F
0 @. f9 `2 k- t: i│ 9-12 【面试官来啦】面试讨论题.html4 L& p& _2 l2 C* Z I) Q/ `' S7 C
│ 9-13 【练练练】阶段作业题.html! c# |0 O/ u X9 k/ x
* @; V( q# x8 m│ & n' G+ k9 b e
+ h- |, m. M1 d# n/ f├─10 第10章 手把手撸个RDD实战:加强基础为Spark预热4 z) l5 o4 S& H. _& Y- \
│ 10-1 本章概览.mp4' X5 {3 x5 ]* s6 o4 V( d4 S. O; D! e) a0 i6 B
│ 10-2 快速认识Java中的Iterator.mp4
, O' s/ N: d4 l3 O$ j8 i│ 10-3 自定义Java Iterator.mp44 _( |7 Z5 R$ g" v* `/ T2 a( [6 Y$ \) f* ~' G" P
│ 10-4 自定义Java Iterable.mp4% x7 \2 |/ e8 [' D8 k
│ 10-5 【重要】Scala中迭代器的使用.mp48 X/ C5 r& `; [; E# v# E$ `' D* m+ r$ p
│ 10-6 【重要】自定义迭代器读取MySQL中的数据.mp4/ e- A2 O& f% x4 A6 v$ | F" N8 A& a7 _$ H- {' P% |
│ 10-7 统一上下文类封装.mp4) q7 w9 B: p: R# Y
│ 10-8 Scala中迭代器的lazy特性.mp4+ F6 @# W" d4 L+ x0 \+ A
│ 10-9 【重要】自定义RDD代码封装及实现.mp4
) K5 d9 I: d" N& B+ N2 D' @$ x$ w2 h│ 10-10 自定义RDD代码测试.mp4( l# F) |; ?# [/ `7 Y" X3 w) }/ l% g
│ 10-11 【面试官来啦】面试讨论题.html7 V& I0 c* U# b! u% d) _. o" i1 {1 `5 t( q1 Q
│ 10-12 【练练练】阶段作业题.html! W0 I4 x: X1 W" b
│ + z' \9 a( o. M* O1 n
. I) s# j% r6 D* P└─11 第11章 最热门的AI大模型入门:ChatGPT为工作插上翅膀0 {+ c8 W3 X1 a3 u; i: Y
0 ]/ J7 m! z2 l# ~6 D! v 11-1 本章概览.mp4/ `# c% l `7 W
11-2 认识OpenAI这家公司.mp4( ?6 e8 p: m* l
x2 D. W, R. H1 a% v. e 11-3 语言模型&大语言模型的趋势.mp42 S f2 w8 ?. }' R
11-4 NLP发展历程.mp49 P4 E# X( B! e2 h: N, G8 e- T3 _6 v. ]0 K
11-5 国内大模型介绍.mp45 t" |9 n& A( Z% y2 T2 B
11-6 【重要】Open AI账号注册.mp4
. o/ \& o9 y$ A. P6 P 11-7 OpenAI 接口测试.mp4/ i, Q& J$ _" w/ Q" h$ Q
11-8 通过案例演示大模型工作原理.mp4; k' r) l( |* c" H
^; u+ Q1 i. z# X6 B4 N 11-9 【重要】通过案例知晓大模型的使用场景.mp42 b! ?: k7 W. C/ g/ l" A
11-10 模型演化.mp4 java8.com# ~# ~5 E; j( B, y8 ~
11-11 OpenAI Mode详解.mp4' L* J% O/ U" e; p8 i# b
11-12 模型价格及Token.mp4
) T: ~) f' i+ M+ Z; V: x 11-13 Prompt工程.mp4
" `# j( ?/ w2 Z7 u# C 11-14 【重要】Chat CompletionAPI及多轮对话的使用.mp4. K1 M6 _& W7 k/ r! @# _! h) _0 U; M, v
11-15 【重要】使用ChatGPT助力日常开发的SQL编写.mp47 {/ s- _+ m* J; m' ~9 M, Z
11-16 Open AI开发者大会发布的新功能.mp4) x, R- P5 W; O2 w1 x9 b7 c( H" Y' P( q; W" d/ ` H& O9 K, \$ z
11-17 Open AI编程老版本.mp4
& ]) I0 w9 z7 N _% ?1 r# [ 11-18 Open AI编程新版本.mp47 T2 m, d% [# V( b
11-19 Assistants API 编程.mp4- h7 s0 z- e3 I- p! z
1 U( F# T( q0 q k* X% R+ @6 ~5 R百度云盘下载地址(完全免费-绝无套路):- D; Z3 f3 S5 U
. o: w9 C4 i, b
本资源由Java吧收集整理【www.java8.com】
! K" `( ~0 G# q* S3 m; s( A
# P( D- K/ h! e& T: t
* o' Z B( X! M# ^7 R5 z) C; p& L1 h D ^. ]% i8 | x3 g
' h( |7 @& u7 d/ \# S1 ?( F) Q
, P9 f4 k1 p' s0 a! ~+ r, s; `' } |
|