! X9 [6 D! r3 { ^8 }7 ]
人类生存的地球,表面有5.1 亿平方公里,其中,海洋的总面积有3.6 亿平方公里,约占地球表面积的71%。
$ o- J y$ L, o% f1 |+ [ 人类或起源于海洋,与海为邻,傍海而居,又随着科技的发展潜入深海。「从古至今,人们一直都踏在研究海洋的基础上,为了生存」,这是接受我们的采访时,李明悝副教授说的一句话。
$ f B( z( ^, v/ U% I6 ~ 李明悝老师是中国海洋大学物理海洋教育部重点实验室的硕士生导师,主要从事海洋动力过程及海气相互作用、耦合气候数值模式和科研数据可视化等研究工作。 1 m5 r7 R" _2 Q3 S5 N8 A# t6 w
接受我们的采访,所有回答都以尽可能通俗易理解的话进行表达,李老师说「希望我的分享能起到一定的作用」。以下是李明悝老师与和鲸之间关于大气海洋、关于他的研究、经历、思考的对话—— 8 E+ n/ V ?, M6 Z6 K" o m" y [
01 两洋一海 6 i$ I9 x9 g* H1 @9 W5 B4 g
「两洋一海」是李明悝老师与其所在的团队自2015 年开始研究的项目。
8 ~/ N$ N5 x6 w5 U% `! p 项目基于区域天气研究预报模式WRF和区域海洋数值模式ROMS建立了大西洋高分辨率海气耦合模式系统,而后将其移植到西北太平洋-印度洋区域,构建了“两洋一海”区域海气耦合数值模式,并由此发展了“两洋一海”区域海气耦合预报系统。
/ ]% Z# x4 Z c# r* z& I 说到「两洋一海」,就像一个故事。
; Y' {) O- }& V0 I7 ~ 大气离不开海洋,海洋离不开大气
5 x2 B3 [; f% ^! C/ @8 d 「我们这个行业用到的一个研究方法,就是利用数值计算的方法,即这些年随着计算机的发展,产生的一种不同于以前的研究方法。以前是先调查,后进行科研的理论研究,而近些年基于计算机技术发展起来的这个方法叫做数值模拟研究,其中需要用到建模的方式。这里提到的 WRF 和 ROMS 正是我们行业里面两个方向的两大代表性的数值模式,其中 WRF 是区域性的大气模式,而 ROMS 是区域性的海洋模式,它们的针对性不太一样。这两个模式发展到一定程度以后,成为了在气象、海洋研究这些领域里面被大家公认这些年发展得比较好的数值模式。」
9 C; I5 K( t5 \! z 关于将WRF模式与ROMS模式进行耦合的研究,李老师称是机缘巧合。 4 y" n) n" E' u' D& J5 D% B4 t
「我在国外待过几年,当时接触的两个团队都是在这两个模式上有比较大的贡献的,其中一个就是以ROMS为主的团队,通过这个团队接触到了ROMS模式开发小组的其中一个人,就是后来的区域海气耦合模式的作者。也就是说,区域海气耦合模式的作者本身就是来源于ROMS团队的。当时在发展这个模式的过程当中,我还有幸地参与了一段时间,所以相对来说了解一些。在这个基础上,他们发布了这么一个海气耦合的模式,它叫做COAWST,其中的两个分支分别就是大气的 WRF 模式和海洋的 ROMS 模式,那么这就是这个耦合模式的来源。
* U) v; C$ K8 Y8 }# [; x 关于这个研究方法,一般行业外的人可能会去区分这是气象的还是海洋的,但是事实上气象和海洋虽然是两个不同的专业,它们之间有千丝万缕的联系,大气离不开海洋,海洋离不开大气。比如最常见的一个和人类生活息息相关的极端天气过程——台风。台风它源于海上生成,但是它的主体又发生在大气里面。它依赖于海洋给它提供热源,然后才能在海洋上方形成大的气旋,逐渐地越来越生长壮大,最后接近于岸边,给人类生活带来剧烈的影响。
o9 c5 b% I; d& G: x 所以其实大气和海洋,它们之间是分不开的。开始人们是针对大气做 WRF ,针对海洋做 ROMS ,那随着技术发展的话,人们就考虑现实生活当中大气和海洋之间的相互作用,所以才要提到海气耦合这个事情。」 ' g% f, e; I0 v
区域海气耦合模式结果示例 $ f7 W4 H0 c J r3 _
不断打补丁,一步步发展
& @8 Y5 f- H! W 将两个模式进行耦合,是否一定能提高预测的精度?李老师表示,这还是分方面的。而受限于物理机制或者计算机条件,很多东西目前还尚未研究到,但是在将来一定会有进一步的发展。
6 ]% ^. t$ {& }$ ^3 A: V2 P 「在某些方面它确实能够提高精度。如果去对行业的一些科研前沿进行一定了解的话,会发现近些年国家海洋局首先海洋研究所,现在改成自然资源部首先海洋研究所,那边的乔方利研究员,他们工作组提出了一种概念,就是海浪会对海洋上层的混合层,以及对台风的发展过程起到作用。这一系列的科研成果,都表明在大气海洋的各种各样的现象之中,海浪,这个我们常见的现象对天气过程有这么大的影响,就说明了如果我们单纯去看大气模式的话,由于它里面肯定不包括海洋内的东西,它就会缺乏了海浪这样的一环。而对于单纯去看海洋模式,我们又该把海浪放到什么位置,就算把海浪放进来,怎么去反映它对大气的影响呢?
7 R0 m& w, j8 y 所以说,如果不把 WRF 模式和 ROMS 模式耦合起来的话,这种过程就很难用一种更科学的方法引进去,而想引进去的话,按照以前的做法就是引入一种所谓的参数化。所谓参数化就是我们平常所说的经验公式的方式,那经验公式的方式肯定不如有一个真正的科学原理在背后,有一个科学的控制方程解析方程或者动力原理在背后来支持更准确对吧。 5 B1 I0 k) r1 G
所以从这个角度来讲的话,在某些方面它还是比以前的两者分开的时候能起到提高预报精度的作用,但是不能一概而论,因为我们的发展过程毕竟还是受限的。尽管各种技术发展得都很好,但是毕竟有很多东西我们还是不能面面俱到的,有些物理过程有些天气过程我们到现在还在研究当中。」
1 N" |; w1 `3 O) @' K* M1 F 单单从耦合模式上来讲,它是一个工具,是一个在不断完善的工具。 2 x, j# ~4 v& H
「海气耦合模式开发出来之前,有其他的耦合方式,也有其他的一些近似的方法,只不过它(指COAWST)是后发展出来的,相对来说是在区域海洋大气的计算方面用的比较好的一个模式而已。比如说刚才提到了 WRF 和 ROMS 分别是大气和海洋的数值模式的代表之一,但是就拿海洋来说的话,除了 ROMS 以外,其实还有其他的一些模式,比如说FVCOM、HYCOM,还有比如说像全球的这种CESM以及 MITgcm等等这一些数值模式,都是有它各自特点的,也都在不同的领域有它的作用。
) \! p' p7 L* k9 @# G 海气耦合模式,我的印象里当时用了也就是两年左右,这个模式基本上就已经到了从开始开发到最后发布的阶段了,只不过在发布之后,随着不断的发展,就是 WRF 和 ROMS 自己本身的发展,比如说 WRF 刚开始是1.0 版本,后来二点几,到现在已经是四点几的版本,而 ROMS 也已经到了三点几的版本,随着它们发展,耦合模式也在不断地打补丁也好,再往前一步一步地走也好,加新的特性也好,也是在不断往前发展的。」
0 T$ q7 b( g5 `! Z5 N" A; Q 而随着计算机的发展,因为物理机制问题用数值模式解决得不够好的场景,机器学习可以在其中的参数化过程进行一定助力。
+ [! U- b; v9 l# S8 |- Z0 H0 q 「我们刚才提到参数化,什么是参数化?当某些过程在数值计算没有办法用公式来解决的时候,那这几乎就是用一种统计或者是经验的方式。而这个经验的方式怎么用计算机的语言来实现,实现了以后又叫什么,我们通常在数值模式当中就把它称之为是某种参数化的过程,即把某一个物理过程进行的参数化的表达。
( J( q( i9 ~ _6 Y0 I" C 机器学习是通过现有的各种数据,在海量数据支持的情况下,一种总结出来的关系,然后得到一种基于 AI 的理论框架和实践下的一种计算结果。而且现在好多方面确实也证明了,这个计算结果不一定差。关于这方面,其实现在已经有了发展,比如说刚才说到的 WRF 模式,据我所知,它这两年已经开发出了包含与原来的动力模型框架相结合的 AI 模块的 WRF 模式,也就是说把其中的某些参数化过程利用机器学习的方式来实现了,已经有人开始这么做了。」 1 n8 `6 m6 H2 p3 q" S4 { j/ @
02 流场动态可视化 3 G( B# v! W- f& [9 d
科学研究的继往开来都需要工具进行支持,在气象海洋领域,将各种要素放在同一张图上进行表达是最为常见的,由此,读图绘图也成为了每个研究者的必修课。并行化二维流场多元数据动态可视化软件是李老师结合数值模式和预报系统的需求开发的科学数据可视化工具。 0 R, p D3 F( X: @5 H/ ~3 ]2 T
降低大气海洋领域科研工作者绘图的计算机能力门槛,大概是李老师最开始的初衷。
" I( t* q0 t. e- U6 i* q" @ 为了手到擒来
* P' `) P) e& ?7 t5 O. R 「它有一个发展的历史背景。当时这套软件出来的时候正好是处在,在我们把科学数据进行可视化的过程中出现了一类比较新颖的展现方式,叫做粒子动态流场,这样一个过程中,那么我写的软件主要就是为了产生类似这样的一个流场的描述结果,也就是提供一种描述二维流场的可视化方法。
' ^8 d& Z {/ V' {$ I, M; r 这个方法可能本身形式上比较新颖,但其实大家一直都在采取各种不同的方法去实现这样的效果。我们很多科研领域的人,并不是计算机领域的人,那么他们对计算机的,尤其是计算机图形学这方面肯定不像计算机专业的人那么精通,要想实现一些可视化的效果就会有些困难。恰巧我利用了我们这个行业经常接触到的一些可视化软件,手到擒来的这种大部分人都会用的软件,在这个基础上来实现相对大家都比较认可,而且比较感兴趣的一种可视化方式。这时候它就解决了对于像我们这个行业或者领域的人去做类似可视化结果的入门门槛的问题,他们不需要再去花大量时间学习那么多大量的更专业的计算机图形知识了,而只需要使用我们一般在使用的软件,那么无形之中降低了门槛。」 0 @" c. r1 ^/ r) j# L; O, h
一个科普的方式 2 E) A' f o6 A) Q' X* f! F
李老师表示,大家都对这种可视化方式比较追捧的一个原因是因为它在一定程度上改变了之前对流场的描述方法,让这个流场的体现更直观、更漂亮,而正是这样的效果却在“科普”的方面起到了意料之外的作用。
; W; i1 m. _- r2 ?5 ?& \1 }$ b+ I% ^% m 「这种可视化的效果,一般来讲,它的使用场景大多体现在两个方面,当然这是我个人总结的,不见得对。
# f8 V' R! V2 ~7 v 首先就是它在对科研成果的展示方面起到了比较大的作用。你不能整天拿着一堆比较枯燥无味的科研图形,让一些老百姓或者说业外的人士、非专业人士来看你这图以后觉得看不懂也说不清对吧。当你用了比较生动的方法之后,一下就会引起别人的兴趣。这一点其实我当时有一个很大的感触,就是我用这种方法画出来的海洋流场,在我的周围的非专业领域的朋友,对我们行业完全不了解的,他们看了之后也能感觉到说你这画的是不是海洋怎么流的,而如果按照以前的方式,他们根本就得不到这样的感官。这是给我的一个很大的触动,这是对我们科研成果向外去展示、去介绍、去科普的一个非常好的方式,也是我发展这一套方法的一个重要的动力源泉。
$ I/ n2 g* J; l8 f( y! | 第二点就是这个方法确实在细节表现上面比以前的普通做法还是有一定改进了,所以在科研的角度来说,它也是能起到一定的辅助作用。」
8 s2 p; [/ n2 h/ D) Q7 T+ N' ? 03 研究方法的选择
8 n6 O4 f" M. F; {& a 研究方法是人们解决科学问题时采用的基本手段、措施和程序。不同的方法,与事实和理论有着不同的相容性,因而在应用范围和使用场景上都有一定的差别。 7 Z. N6 y, f" v3 p5 S
在对大气和海洋进行预测研究的时候,动力学模式等的研究方法与现代的机器学习、人工智能算法,虽各有差异、各有利弊,然都能协助研究者们走进那片蔚蓝。
& x+ V, s8 T( m7 l; P/ W4 C 物理学原理与数学计算 " r* ~ W& ]& z F ]4 Q
「其实这是个比较大的问题,我只能粗浅地谈一点我自己的认识。 $ G7 ~$ H5 J1 n1 N E
这两者的大致区别就是,动力学模式是基于控制方程的,以数值计算为方法。从物理学这个角度来讲的话,它的动力框架应该是严谨的。在某些动力框架或者解析的方法上解决不了的地方,我们至少还有一些刚才提到的经验公式,或者是参数方法,或是统计的结果能用在里面。但是它的总体的框架,从物理学角度来讲,相对是比较严谨的,我说的是从物理学的角度。
4 s& [& `, X4 E9 \ 但是对于机器学习或者 AI 人工智能的话,它基本上是以大量的数据为基础的,而这个数据其实更多依赖的是数学,尤其像概率论、统计分析等等,与这些关系更强一些。而它与物理本身,比如说气象也好,海洋也好,它与气象海洋等等这方面的物理原理的关系的并不那么直接。所以相比较而言,并不是说它肯定没有物理原理,只能说相比较而言,它里面所直接体现的物理框架、动力框架等等这方面是相对缺乏的。 8 Q/ {7 |; }$ j7 n4 x5 ]* z
所以这是两者的一个很大的不同,而这两者之间也确实各有利弊。 5 S+ w" [) X$ Q1 \2 c1 m/ `$ i
比如说我们前面说的动力学模型,它从物理角度来讲是严谨的,有控制方程来控制,那么它的求解方式也就相对来说比较固定。这时候,它在计算的过程当中受计算机算力的影响就比较大,你算得越精细、范围越大、规模越大,计算需要的计算量越大,计算就越慢。相反,用 AI 的方式,需要数据作为它的饲料,不断地喂它成长。只要它训练,一旦训练成功后拿来进行应用,它的速度是非常快的,所以它主要只受数据量和训练过程的影响。
% K3 k5 w: k; C! |, n$ x' V 那么这个数据量直接影响了什么呢。就 AI 来说,它其实最主要体现的是预测的方面,因为它没有什么动力方程来控制,就不太会存在我们所谓的机理研究等等。这也是它的一个缺陷吧,它主要的功能更侧重于预测预报。而动力学模型除了预测预报以外,虽然它算的慢,但是从物理学角度来说,它是可以用作一个强有力的科研工具。从我们物理海洋的角度来说,拿它可以做一些机理研究,做一些数值实验。就像我们以前做水动力的实验,在实验室里做一个水槽的实验,做一个转盘的实验,我们完全可以类似地把它搬到计算机上做成这种数值的实验。如果仅仅是 AI 的话,它是从数据出发的,想做这样的实验的可能就不太一样了。所以说它们两者之间的应用范围和解决的问题上其实都是有一定的差别的。」 # \" v4 _: |: D8 q/ x( y k) d
气象科研人员的选型,不同场景、不同价值,黑盒与白盒究竟如何去选择?关于这一点,李老师表示,还是应该从问题出发,要认清自己的研究目的。 . S2 V& r0 k$ {, D5 s) h
「如果你的目的就是去谈数据,谈预报等等的话,黑盒应该是很好用的一个工具。而且其实它并不是说完全没有机理在里面,只不过机理有待我们去发掘,去和物理方面的一些原理去进行建立联系,就像我们当初刚开始发展这门学科一样,应该从各种不同的现象里去抓规律。现在也是一样的,我们只不过现在还没有完全的,从 AI 或者是它的计算方法里面去抓出来我们想要的一些物理规律,但是并不代表它就一定没有,我只能说只不过现在没发现而已。」 / G4 g, g2 N3 u4 {/ |2 E, t
一则忠告 $ l. i7 P6 x% i6 I7 s
新技术的出现、发展与应用,是踏着短处的阶梯挺立起来的。要脚踏实地,要取长补短。从机器学习、从 AI 的角度去考虑,如果想要在海洋学中使用大数据进行长期深入科研,李老师也给出了指引建议。 + I4 y" G+ v5 V( K$ q$ i! K
「到目前为止,海洋学中的大数据还真跟我们去做 AI 的原始意义下的大数据,还是有一定差距的。我觉得海洋数据处在一个叫做海量数据和大数据之间的一个状态,它不是完完全全的真正的大数据,但是它的数据量确实是非常大的。真正的大数据是杂七杂八各种领域各种方面的,它们之间甚至没有直接联系,但是目前我们的海洋数据,相对来说,数据与数据之间的联系还是比较紧密的。但是量上,确实随着我们技术的发展,包括全世界各个国家对海洋事业发展的支持,观测得多了,各种各样的解决方式多了,那么从而产生的数据确实也多了,所以说它是海量的。
4 _- D8 { A* @8 M- L! y/ I 在这种情况下的话,不管怎样,我们姑且把它称为是大数据的情况下,如果有人想从这个角度去出发,我认为的一个忠告是,从海洋学的角度,海洋学相关的专业基础知识还是要打牢的,除了这个以外,数学基础知识也要打牢。 , s1 H# k+ K, A1 R: L8 @
之前提到,大数据或者说机器学习人工智能这方面,它的一个根源,与数学是息息相关的,从数学出来,它真正的内部还是很严谨的。而现在有一个情况是,越来越多的工具发展得非常便利,人们能够直接拿来就用,但是对里面的很多东西他还是不太懂。这种情况下,只能懵懵懂懂的去照猫画虎去做一些分析,进行一些训练和学习,然后拿来用而已。 ' U3 z) G, Q" w" D+ Q9 V5 f, q
但是比如说你拿来了一堆海洋数据,你想做一个学习的数据集,这个数据集,你必须得了解它里面的数据有哪些特征,而你想把这个特征和什么东西联系起来,要想做这方面的联系,你必须得具备一定的相关的海洋学的知识才可能。打个比方,你想研究台风生成的原因,你总不能把一个和台风生成完全无关的数据,比如海洋数据里面有鱼群群落的分布,然后你把这个数据跟台风生成的原因联系起来,这肯定不行的,你只能去想跟台风生成有关系的是哪些,肯定和温度和湿度等等这些东西是相关的。 & L i: D6 w9 ~; M: }9 d; t
所以说还是必须得有一定的物理学方面的专业知识,其次另外一个就是数学的基础知识,这两个不分伯仲,否则在这条路上面是走不太远的,只能走到皮毛。」 3 D h6 ?9 l+ n z$ z. D
04 和鲸Workshop
; t" J% h/ |0 P7 e0 m" n$ D: R 李明悝老师受邀担任12 月13 日和鲸举办的线上公益培训活动 Python 气象海洋数据分析 Workshop 第二期的导师。关于 Workshop ,李老师选择了“从海洋数据开始来认识海洋”作为主题。了解与认识海洋有不同的方法和角度,如此选择,李老师也给出了自己的原因。 : U! _( h( C' A
从海洋数据出发 7 S% u3 o2 u, C: g
「我举个例子,首先让大家有个感受。从古至今,人们都一直踏在研究海洋的基础上。为什么?为了生存。从远古时代,人们为了生存,就需要从海洋获取各种各样的资源,包括动力资源和比如说生活的食物等这一系列的资源,不管是轻是重、是难是易、是浅是深,人类都在了解海洋,在学习海洋。
) b% r. v& _1 d5 z, w. h6 t 最古老的学习海洋的方式无外乎就是观察,发展到现在其实就是调查。那么调查之后得到的东西是什么呢?其实就是数据。所以我们现代人去研究一样东西的时候,比起古代人有一个好处是,我们站在了巨人的肩膀上。有了那么多的坚实基础,我们不用再自己造轮子了,而是可以在现有的基础上进行研究,这时候我们最容易得到的东西其实就是在网上等等这些地方,有着各种科研机构发布出来的免费的供我们使用的大量的海洋数据。这么多数据在这儿,就使得从这个角度出发去着手认识海洋、感受海洋、了解海洋,相对来说会更容易上手,因为获取这些数据的方式简单,处理一些数据的方式也相对于便捷,正如咱们之前说的现在有很多的工具,比如在我们这次Workshop,用ModelWhale去进行处理分析,复现学习。而且有了这些数据以后,可以通过一些方式把一些具有信息的变量用可视化的方法展示出来,通过这些方式就能比较直观地知道海洋长什么样,它有多深,它的温度分布哪高哪低,我们就能有初步的认识,这肯定比你出去开个船出去调查一番要容易得多。 ! s/ ]7 W! q3 n9 s
所以我觉得从这个方面来讲的话,从数据出发,这是一个非常易于实施的手段。再者,数据这个概念从广义上来讲的话,其实就是信息。任何得到的能够记录在案的,能够再重复使用的关于海洋的任何信息都可以称之为数据,只不过我们现在能够用常规方式,用常用的分析手段和软件能够直接去使用的这些数据更为直观更为方便而已。那么把这些称之为某一类的这种数据拿来去研究,是再简单不过了。
% n& c" f z( n5 p! n. w 所以就从这两个角度来讲,我觉得从数据开始认识海洋,比其他的方式来的容易和直观。」 + |$ {# {$ M1 ~( o$ c
需求驱动 2 H. b: @7 r( }0 R* k; u" Y0 H
将 Workshop 作为起点的人们可能各自希望通往不同的终点,让需求驱动自己的行动,李老师给出了这样的建议。
8 @- m3 Y" x* P" R5 Q 「我认为能够通过 Workshop 的形式学一些知识的人们,大约有两类。首先类是将来有可能从事气象或者海洋方面研究的,那么对于这些我个人建议去按部就班地,类似我们国家各个高校科研领域的这种培养的方式去进行学习,多读文献积累专业知识,多了解科研的前沿,如果还没有基础的话,去打一打相关专业的基础,这一方面相对来说比较重要。
" ^+ i, D& |; M7 O* ` 还有一类我个人认为是本身已经有了一定的自己的事业或者研究方向,那很可能是抱着学习 Python 处理数据的角度来看这件事情的,对于这一类的话,我的建议其实很简单,多练习,多看案例,多动手,这个东西就是熟能生巧的事情。」
2 E, i+ J8 i7 g% I( T$ x+ D( K 05 关于热爱
6 e+ X+ d+ p9 f8 e 访谈的尾声,我们问了李老师最后一个问题:从本科毕业到现在,您研究物理海洋好像已经有20 几年了,这么多年过去,您觉得自己在研究的过程中,心境有什么变化吗? - B# @" k" I( _% x
老师顿了一下,笑了,我想应该也有过其他的后辈向他请教过这些看似虚头巴脑的问题吧。
& p* z# E* ]+ h6 K0 C+ e8 i 「这个问题其实也是蛮大的,人在某一个领域里面角色不同,心境肯定也不同,而且随着整体工作状态的发展变化,这不是可以一言以蔽之的。像我的话,我感觉任何一个专业,随着研究得越来越深入,从广义的面上来看,也就是随着你学历的增长,你的专业就越来越细分。细分到一定程度以后,非专业的人对你研究的这一块就已经不了解了,这说明庞大的知识体系里面,等你真正去参与进去之后,你可能只能为其中的一部分去工作、去研究、去学习或者去享受。 4 T) c& H! |9 d" b2 W
在这个情况下,较好的事情就是什么?找自己喜欢做的,找自己能做的,把能力和爱好兴趣结合在一起,寻找到一个平衡点,然后来达到一个比较好的状态。兴趣引导着你的工作方向,这是一个比较好的工作方式。如果说你为了某一个艰难的目标去做,而没有任何的兴趣在里面,我觉得这样一是可能会比较痛苦,二是可能也走不远。
: Q- M# K1 Z- i" Y o( N 当然了我说的也不一定对,但是这是我自己的感受。」 + T5 `' n- o/ I( W4 e
从事自己喜欢的事业要有天分和机遇,热爱是成就的充分非必要条件。 5 V5 l6 ]# Z- ?" e
感谢李老师带给我们的分享。
$ ^, ]- U' {! s: H7 ^ (推广) . n1 s2 i( I( p/ h( j( k1 Z
) l! y; F' x. W9 q3 ?
2 a8 D2 A7 n, L" n2 e8 y5 d
+ a& p9 p1 |/ S N8 y$ J* _/ V$ P7 v7 R$ Z9 t' \3 `$ @6 K
# G/ U( S3 V9 }9 w. P5 @2 _# q1 w9 U' L
+ k: [0 l* i& f* M& d2 v
/ m4 @3 U% t+ O$ n% D5 F% r7 N |