徐雅琴,何成萬(wàn),嚴(yán)柯
武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北武漢 430205
基于REST服務(wù)的電子相冊(cè)的實(shí)現(xiàn)
徐雅琴,何成萬(wàn)*,嚴(yán)柯
武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北武漢 430205
為降低相冊(cè)系統(tǒng)開(kāi)發(fā)的復(fù)雜性,同時(shí)提高該系統(tǒng)的可伸縮性,從而設(shè)計(jì)并實(shí)現(xiàn)一個(gè)基于Representational State Transfer(REST)風(fēng)格的相冊(cè)管理系統(tǒng).該系統(tǒng)采用具有REST風(fēng)格的Web服務(wù)API的主流云開(kāi)發(fā)平臺(tái),通過(guò)使用Service、Bucket、Object和Multipart Upload操作,完成對(duì)相冊(cè)管理功能模塊和相片管理功能模塊的設(shè)計(jì)和實(shí)現(xiàn).首先,Bucket通過(guò)Service獲取并實(shí)現(xiàn)對(duì)相冊(cè)的管理;然后,Object通過(guò)上傳、設(shè)置、下載、獲取和刪除操作實(shí)現(xiàn)對(duì)相片的管理.最后,通過(guò)Multipart Up load補(bǔ)充了對(duì)相片的批處理操作.該電子相冊(cè)實(shí)現(xiàn)了在云端傳遞和下載圖片的功能,滿(mǎn)足了用戶(hù)能夠隨時(shí)隨地下載圖片需求,同時(shí)具有較好的可擴(kuò)展性.
電子相冊(cè);REST;Web服務(wù)
相冊(cè)是用來(lái)記錄人們生活中種種美好的瞬間[1],它本身具有存儲(chǔ)和共享功能[2].隨著新技術(shù)的發(fā)展和人們生活習(xí)慣的改變,“相冊(cè)”開(kāi)始以另外一種角色出現(xiàn)在人們的生活中.
20世紀(jì)50年代開(kāi)始,人類(lèi)走向了信息時(shí)代[3].信息時(shí)代為人類(lèi)傳播、存儲(chǔ)、共享信息提供了新方法[4],人類(lèi)的視角開(kāi)始由現(xiàn)實(shí)轉(zhuǎn)向?yàn)樘摂M[5].與此同時(shí),相冊(cè)也開(kāi)始了由紙質(zhì)版向電子檔的轉(zhuǎn)變.由于Internet存儲(chǔ)共享信息的不同,電子相冊(cè)也具有了新特性——更大的存儲(chǔ)量[6],只要有電子檔就可永久保存,共享信息的瞬時(shí)性,無(wú)視時(shí)間和空間限制[7]等等.
REST是可以視為一組軟件架構(gòu)約束、原則或規(guī)范[8],尚且處于概念階段.滿(mǎn)足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是RESTful.由于REST是基于URI和HTTP等協(xié)議標(biāo)準(zhǔn),因此稱(chēng)為對(duì)早期Internet協(xié)議的回歸.所以將REST應(yīng)用到Web服務(wù)中,構(gòu)成了REST風(fēng)格的API,形成了一種新的服務(wù)調(diào)用方法.通過(guò)這種方式可以降低開(kāi)發(fā)的復(fù)雜性,同時(shí)提高系統(tǒng)的可伸縮性.
本文基于REST服務(wù)設(shè)計(jì)并實(shí)現(xiàn)了電子相冊(cè)的管理.系統(tǒng)使用REST服務(wù)實(shí)現(xiàn)了照片的上傳、下載等各種操作,并把這些服務(wù)進(jìn)行了組合,提高了系統(tǒng)的可維護(hù)性.系統(tǒng)使用的是阿里OSS(Ob?ject Storage Service,對(duì)象存儲(chǔ))提供的REST服務(wù)[9]平臺(tái).
阿里OSS提供的REST API主要實(shí)現(xiàn)的操作有:關(guān)于服務(wù)(Service)操作;關(guān)于容器(Bucket)的操作;關(guān)于對(duì)象(Object)的操作;關(guān)于分片上傳(Multipart Upload)的操作;跨域資源共享(CORS);關(guān)于音、視頻上傳(Live Channel)的操作;OSS錯(cuò)誤回應(yīng).在電子相冊(cè)中主要用到前4種操作,下面是上述4種操作的主要信息.
1)關(guān)于服務(wù)的操作
關(guān)于Service的操作只有一種方法GetService(listBucket),該方法的功能是獲取請(qǐng)求者所創(chuàng)建的所有Bucket.對(duì)應(yīng)在電子相冊(cè)系統(tǒng)中,該功能的作用是獲取到所有創(chuàng)建成功的相冊(cè).
2)關(guān)于容器的操作
對(duì)Bucket的操作主要集中在創(chuàng)建Bucket,設(shè)置Bucket相關(guān)信息,獲取Bucket和Bucket相關(guān)信息,以及刪除Bucket和Bucket相關(guān)信息四個(gè)方面.Bucket在OSS中起到一個(gè)容器的作用,用于放置Object.對(duì)應(yīng)在電子相冊(cè)系統(tǒng)中,對(duì)Bucket的操作就是對(duì)相冊(cè)的操作.因?yàn)樵贠SS提供REST服務(wù)中Bucket相對(duì)Object來(lái)說(shuō),起著容器的作用;而相冊(cè)相對(duì)于相片,從邏輯上講也是一個(gè)容器的作用.因此對(duì)Bucket的操作就是對(duì)相冊(cè)的操作.
3)關(guān)于對(duì)象的操作
對(duì)Object的操作是OSS開(kāi)發(fā)中的核心部分,也是對(duì)OSS應(yīng)用的根源所在.Object可以是任意類(lèi)型的文件,并且由于OSS提供的服務(wù)是基于HTTP的RESTful API,所以在聯(lián)網(wǎng)的情況下,用戶(hù)可以在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)對(duì)Object進(jìn)行處理.因此對(duì)Object的操作主要集中在對(duì)文件的操作:上傳文件,對(duì)文件的相關(guān)操作,下載文件,刪除文件,以及獲取文件的相關(guān)信息等.通過(guò)2)中描述可知,對(duì)Object的操作就是對(duì)相片的操作.
4)關(guān)于分片上傳的操作
Multipart Upload操作是對(duì)PUTObject(上傳文件)操作的補(bǔ)充.它在滿(mǎn)足上傳文件基礎(chǔ)上,還支持?jǐn)帱c(diǎn)上傳,超過(guò)100 MB文件的上傳,網(wǎng)絡(luò)服務(wù)差或者OSS服務(wù)器之間連接經(jīng)常斷開(kāi)的上傳,以及上傳未知大小文件.根據(jù)該模式上傳文件特點(diǎn),首先使用先導(dǎo)功能Initiate Multipart Upload來(lái)創(chuàng)建一個(gè)全局唯一的Upload ID,以確保接下來(lái)的Multipart Upload操作.接下來(lái)的操作有:分塊上傳;將所有的數(shù)據(jù)塊合并為一個(gè)完整的Object;終止Multipart Upload操作;列出所有正在上傳的Multipart Upload操作;列出所有上傳完的塊.因此對(duì)MultipartUpload的操作就是對(duì)相片操作的補(bǔ)充.
阿里云通過(guò)RESTful API[10]的形式對(duì)外提供服務(wù),并提供了RESTful操作和相關(guān)示例,以及與開(kāi)發(fā)人員相關(guān)的開(kāi)發(fā)指南和相關(guān)主流編程語(yǔ)言的SDK工具包.在阿里云中有兩個(gè)重要的概念:Object(對(duì)象)和Bucket(阿里OSS提供的云存儲(chǔ)空間).第一,阿里云OSS的實(shí)現(xiàn)過(guò)程是將數(shù)據(jù)文件以O(shè)bject的形式與Bucket進(jìn)行交互;第二,OSS上一個(gè)賬戶(hù)可以創(chuàng)建一個(gè)或多個(gè)Bucket,但最多不能超過(guò)10個(gè);第三,每個(gè)Bucket中可以創(chuàng)建一個(gè)或者多個(gè)Object.
在電子相冊(cè)的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程中有兩個(gè)核心模塊[11]:相冊(cè)管理模塊和相片管理模塊.下面就對(duì)這兩個(gè)功能模塊進(jìn)行具體的描述.
2.1 相冊(cè)管理模塊
相冊(cè)模塊在功能上和普通電子相冊(cè)類(lèi)似,都具有以下4種功能:“創(chuàng)建相冊(cè)”,“設(shè)置相冊(cè)”,“獲取相冊(cè)”,“刪除相冊(cè)”.在此過(guò)程的設(shè)計(jì)中,為保證相冊(cè)的唯一性以及后期對(duì)相冊(cè)具體操作的可行性,相冊(cè)名必須唯一.因此對(duì)相冊(cè)的相關(guān)操作就會(huì)出現(xiàn)各種判斷情況.在“創(chuàng)建相冊(cè)”過(guò)程中如果相冊(cè)已存在,在編程實(shí)現(xiàn)中就是相冊(cè)名已存在,那么就需要重命名后再創(chuàng)建相冊(cè),以保證相冊(cè)名的唯一;“設(shè)置相冊(cè)”功能是一個(gè)直接功能,因此可以直接對(duì)相冊(cè)進(jìn)行設(shè)置;同時(shí)“獲取相冊(cè)”也是一個(gè)直接功能,該功能可以獲得“設(shè)置相冊(cè)”功能中對(duì)相冊(cè)相關(guān)設(shè)置信息,也可以獲得該相冊(cè)中所有相片列表;最后“刪除相冊(cè)”功能,它的實(shí)現(xiàn)過(guò)程和所有軟件的刪除過(guò)程一樣,都需要一個(gè)確定操作,來(lái)確認(rèn)相冊(cè)是否被刪除,這個(gè)過(guò)程中刪除操作的對(duì)象是相冊(cè)的相冊(cè)名以及該相冊(cè)名下的所有相片.由于在電子相冊(cè)的設(shè)計(jì)過(guò)程中對(duì)相冊(cè)管理模塊的設(shè)計(jì),就是在電子相冊(cè)開(kāi)發(fā)過(guò)程中對(duì)Bucket管理模塊的設(shè)計(jì)、故相冊(cè)管理模塊的結(jié)構(gòu)如圖1所示.
圖1 相冊(cè)管理模塊Fig.1 Module ofalbum management
2.2 相片管理模塊
相片管理模塊的結(jié)構(gòu)如圖2所示.相片管理模塊在功能上和普通電子相冊(cè)同樣類(lèi)似,但是由于它的存放空間是由第三方提供的云[12],因此在應(yīng)用時(shí)就有天差地別的效果.傳統(tǒng)的電子相冊(cè)是保存在計(jì)算機(jī)本地內(nèi)存[13],那么用戶(hù)想要查看,就只能通過(guò)計(jì)算機(jī)本身;而存儲(chǔ)到云端的相冊(cè)則可以在聯(lián)網(wǎng)的情況下,通過(guò)網(wǎng)絡(luò)直接獲取到相片.因此可以滿(mǎn)足用戶(hù)隨時(shí)隨地上傳和下載相片的要求[14].在此基礎(chǔ)上對(duì)相片管理模塊[15]進(jìn)行設(shè)計(jì),相片管理模塊具有以下五種功能:“上傳相片”,“設(shè)置相片”,“下載相片”,“操作相片”,“刪除相片”.在此過(guò)程的設(shè)計(jì)中,為保證對(duì)相片操作的唯一性以及后期對(duì)相片具體操作的可行性,同一相冊(cè)下相片名必須唯一,不同相冊(cè)之間的相片名可以重復(fù).因此對(duì)相片的相關(guān)操作就會(huì)出現(xiàn)各種判斷情況.在“上傳相片”過(guò)程中如果該相冊(cè)中的相片已存在,在編程實(shí)現(xiàn)中就是相片名已存在,那么就需要對(duì)相片進(jìn)行重命名,以保證該相片名唯一,該功能是將本地的相片上傳到云端;“設(shè)置相片”功能是一個(gè)直接功能,可以通過(guò)阿里OSS提供REST API直接對(duì)相片的相關(guān)信息進(jìn)行設(shè)置;“下載相片”功能,是直接把云端的相片下載到本地;“操作相冊(cè)”中也是一個(gè)直接功能,該功能可以由述方法獲得“設(shè)置相冊(cè)”功能中對(duì)相片的相關(guān)設(shè)置信息,同時(shí)也可以對(duì)相片進(jìn)行獲取、拷貝等操作;“刪除相片”功能,它的實(shí)現(xiàn)過(guò)程和“刪除相冊(cè)”一樣,需要確定是否刪除相片,該過(guò)程是刪除選中的相片.由于在電子相冊(cè)的設(shè)計(jì)過(guò)程中對(duì)相片管理模塊的設(shè)計(jì),就是在電子相冊(cè)開(kāi)發(fā)過(guò)程中對(duì)Object管理模塊的設(shè)計(jì).
圖2 相片管理模塊Fig.2 Module of photomanagement
電子相冊(cè)的主要功能按照其主要功能模塊的設(shè)計(jì)思路來(lái)實(shí)現(xiàn)的.因此就有相冊(cè)管理相關(guān)功能的實(shí)現(xiàn)和相片管理相關(guān)功能的實(shí)現(xiàn).下面就這兩大功能實(shí)現(xiàn)的主要操作進(jìn)行描述.
3.1 相冊(cè)管理相關(guān)功能實(shí)現(xiàn)
3.1.1 創(chuàng)建相冊(cè)首先設(shè)計(jì)出了創(chuàng)建相冊(cè)的命名的格式,通過(guò)將“shylot-”和頁(yè)面上用戶(hù)輸入的相冊(cè)名相結(jié)合,實(shí)現(xiàn)最終OSS中相冊(cè)命名“shylot-用戶(hù)輸入相冊(cè)名”這一格式,然后調(diào)用OSS提供的REST API的方法createBucket(bucketName),最終實(shí)現(xiàn)創(chuàng)建出一個(gè)Bucket,即“創(chuàng)建相冊(cè)”的功能.而這個(gè)“相冊(cè)”最終就是會(huì)在OSS云存儲(chǔ)中以Bucket的方式出現(xiàn).
3.1.2 查看相冊(cè)根據(jù)獲取相片所屬的Bucket名稱(chēng)和該相片的名稱(chēng),通過(guò)調(diào)用REST API的getOb?ject()方法,就可以獲取保存在阿里云中的該Bucket下對(duì)應(yīng)的照片的信息,最后通過(guò)流輸出的方法,將該照片顯示出來(lái),從而達(dá)到在云相冊(cè)系統(tǒng)中,查看保存在云中的照片的方法.
3.1.3 刪除相冊(cè)刪除相冊(cè)的實(shí)現(xiàn),是在通過(guò)函數(shù)的映射,以及RESTAPI提供的開(kāi)發(fā)方法,使得開(kāi)發(fā)者能夠很好實(shí)現(xiàn)該功能.同樣使用通過(guò)OSS提供的RESTAPI方法中的deleteBucket()方法,以實(shí)現(xiàn)相冊(cè)的刪除.最終實(shí)現(xiàn)的結(jié)果在云相冊(cè)中就存在已經(jīng)被刪除的相冊(cè),而對(duì)應(yīng)在OSS云存儲(chǔ)中相應(yīng)的Bucket就會(huì)被刪除掉.
3.2 相片管理相關(guān)功能實(shí)現(xiàn)
3.2.1 上傳相片將Java編程技術(shù)與OSS提供的REST API的putObject()結(jié)合起來(lái)使用,最終實(shí)現(xiàn)上傳相片目的.上傳一個(gè)照片需要定義bucket?Name為上傳相片所屬的相冊(cè)名,key為上傳的相片名,content為上傳文件的大小設(shè)置,meta為上傳文件的信息描述,這四者結(jié)合起來(lái)就可以實(shí)現(xiàn)一個(gè)相片上傳的后臺(tái)設(shè)置.最終在OSS云存儲(chǔ)中該相冊(cè)(Bucket)名下就會(huì)出現(xiàn)對(duì)應(yīng)的相片(Object)名. 3.2.2查看相片通過(guò)獲取相片對(duì)應(yīng)的bucket?Name相冊(cè)名,然后獲取該相片名key,接著調(diào)用OSS提供的REST API的getObject(bucketName,key)方法,就可獲得保存在阿里云中的該相片的信息,然后將該信息以流的方式輸出,Java編程的JPEGCodec.createJPEGEncoder()的方法創(chuàng)建一個(gè)和指定輸出流關(guān)聯(lián)的JPEGImageEncoder對(duì)象,最后將該對(duì)象顯示出來(lái)就完成了具體相片的查看功能.
3.2.3 刪除相片獲得刪除相片所對(duì)應(yīng)的相冊(cè)名bucketname,然后就是該相片的名稱(chēng)key,最后調(diào)用OSS提供的REST API風(fēng)格的刪除Object方法deleteObject(bucketName,key),最終實(shí)現(xiàn)將相片從阿里云中刪除.同樣的在OSS云存儲(chǔ)中對(duì)應(yīng)相冊(cè)中的相片就會(huì)被刪除掉.
REST風(fēng)格的W eb服務(wù)的核心是資源.所有REST服務(wù)利用HTTP的統(tǒng)一接口,以及4種基本操作方法GET、PUT、DELETE和POST,保障了資源的安全性.同時(shí)通過(guò)阿里云這一第三方云平臺(tái),保證了數(shù)據(jù)的安全可用.
文獻(xiàn)[4]使用OpenCV視覺(jué)庫(kù)來(lái)實(shí)現(xiàn)相片的半自動(dòng)化分類(lèi),文獻(xiàn)[11]使用SSH框架來(lái)優(yōu)化相冊(cè)的架構(gòu),文獻(xiàn)[15]通過(guò)改進(jìn)相片的相關(guān)技術(shù)來(lái)實(shí)現(xiàn)相片的準(zhǔn)確提取和自適應(yīng)劃分;這3種相冊(cè)都是從技術(shù)上對(duì)相冊(cè)進(jìn)行優(yōu)化.本系統(tǒng)相對(duì)于這3種技術(shù)而言,具有結(jié)構(gòu)和操作簡(jiǎn)單、可擴(kuò)展性好的優(yōu)勢(shì).通過(guò)采用RESTAPI技術(shù)從底層構(gòu)建相冊(cè)系統(tǒng),并結(jié)合API本身的特性,從而使相冊(cè)系統(tǒng)的結(jié)構(gòu)和操作更加簡(jiǎn)單;由于系統(tǒng)的功能是以REST服務(wù)的形式實(shí)現(xiàn),通過(guò)Web服務(wù)組合方法,可以更方便地實(shí)現(xiàn)系統(tǒng)功能擴(kuò)充.
以上介紹了基于REST服務(wù)的電子相冊(cè)系統(tǒng)的實(shí)現(xiàn)方法.通過(guò)使用阿里OSS提供的REST服務(wù)API,實(shí)現(xiàn)了在云端傳遞和下載圖片的功能,滿(mǎn)足用戶(hù)能夠隨時(shí)隨地下載圖片的需求,同時(shí)又保證了圖片的永久存儲(chǔ).由REST服務(wù)和云存儲(chǔ)技術(shù)結(jié)合起來(lái)的開(kāi)發(fā)技術(shù),為信息的分享和存儲(chǔ)提供新的思路.以本文實(shí)現(xiàn)的電子相冊(cè)為基礎(chǔ),在REST服務(wù)組合方法等方面將進(jìn)行進(jìn)一步的研究.
[1]ARDIZZONE E,CASCIA M L,MORANA M,et al. Clustering techniques for personal photo album management[J].Journal of Electronic Imaging,2009,18(4):1-12.
[2]高湛.基于Nios II的多功能電子相冊(cè)設(shè)計(jì)[D].重慶:重慶大學(xué),2012.
[3]程濤,陳慧琴,孫萍,等.基于Android的手機(jī)相冊(cè)分享軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2014(13):1-2.
CHEN T,CHEN H Q,SUN P,et al.Design and imp lementation of mobile phone photo album sharing software based on Android[J].Microcomputer&Its Applications,2014(13):1-2.
[4]劉云鵬,李瑾,潘聞.基于OpenCV的智能相冊(cè)系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014(9):61-64.
LIU Y P,LI J,PANW.Smart album based on OpenCV[J].Computer Systems&Applications,2014(9):61-64.
[5]KOWAL B M,SCHREIER T R,DAUER J T,et al. Programmatic access to logical models in the cell collective modeling environment via a REST API[J]. Bio Systems,2016(139):12-16.
[6]劉正偉,文中領(lǐng),張海濤.云計(jì)算和云數(shù)據(jù)管理技術(shù)[J].計(jì)算機(jī)研究與發(fā)展,2012,49(增刊1):26-31.
LIU ZW,WEN Z L,ZHANG H T.Cloud computing and cloud data management technology[J].Journal of Computer Research and Development,2012,49(Suppl.1):26-31.
[7]MEREDITH F.From desktop to cloud top:cloud com puting comes of age[J].American Libraries:Official Bulletin of the American Library Association,2009,40(4):27-61.
[8]CAROSG,LAURA D,ALAIN T,et al.Assessment of OGC web processing services for REST principles[J]. International Journal of Data Mining,Modelling and Management,2014,6(4):391-412.
[9]JESUS B,ROSA A,CESARE P,et al.Control-flow patterns for decentralized RESTful service com position[J].ACM Transactions on the Web,2014,8(1):591-604.
[10]ROMAN D,KOPECKY J,VITVAR T,etal.WSMO-lite and hRESTS:lightweight semantic annotations for web services and RESTful APIs[J].Journal of Web Semantics,2015(31):39-58.
[11]王華旭.基于Android平臺(tái)的智能手機(jī)相冊(cè)的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州:中山大學(xué),2014.
[12]SALAJA S,ELIJAH B R,KIRUBAKARAN E,et al. Efficient service selection m idd leware using ELECTRE methodology for cloud environments[J]. Information Technology Journal,2012,11(7):868-875.
[13]BLOWERS H.Considering the c loud and the greater computing atmosphere[J].Computers in Libraries,2012,32(4):29-31.
[14]DING B,YU X Y,SUN L J,et al.A cloud-based collaborative manufacturing resource sharing services[J].Information Technology Journal,2012,11(9):1258-1264.
[15]管權(quán),焦祥璞.基于SSH的網(wǎng)絡(luò)相冊(cè)系統(tǒng)的設(shè)計(jì)[J].科技廣場(chǎng),2013(6):245-248.
GUAN Q,JIAO X P.SSH-based system design web albums[J].Science Mosaic,2013(6):245-248.
本文編輯:陳小平
Im p lem entation of Electronic A lbum Based on REST Service
XU Yaqin,HE Chenwan*,YAN Ke
Schoolof Computer Science and Engineering,Wuhan Institute of Technology,Wuhan 430205,China
To reduce the complexity of the system development and improve the system's salability,we designed the electronic album based on the Representational State Transfer(REST)style.The system adopted operations of Service,Bucket,Object and Multipart Upload to implement the album and the photomanagement based on the mainstream cloud platform with the REST style's web service API.Firstly,Bucket obtained by Service implemented the photo album management.Next,Objectmanaged photos through uploading,setting,downloading,obtaining and deleting operations.Finally,Multipart Up load supp lemented the batch operations for photos.The electronic photo album implements the function of passing and downloading photos in the cloud,meeting user'sneeds to download photos in anytime and anywherewith a good scalability.
electronic album;REST;Web service
TP311.5
:Adoi:10.3969/j.issn.1674?2869.2017.01.014
1674-2869(2017)01-0078-05
2016-10-25
國(guó)家自然科學(xué)基金項(xiàng)目(61272115);武漢工程大學(xué)研究生教育創(chuàng)新基金項(xiàng)目(CX 2015058)
徐雅琴,碩士研究生.E-mail:2466257007@qq.com
*通訊作者:何成萬(wàn),博士,教授.E-mail:hechengwan@hotmail.com
徐雅琴,何成萬(wàn),嚴(yán)柯.基于REST服務(wù)的電子相冊(cè)的實(shí)現(xiàn)[J].武漢工程大學(xué)學(xué)報(bào),2017,39(1):78-82. XU Y Q,HE CW,YAN K.Implementation of electronic album based on REST service[J].Journal ofWuhan Institute of Technology,2017,39(1):78-82.