Built motion from commit f7863d46.|2.5.41
[motion2.git] / server / api / faxApplication / faxApplication.controller.js
index cea68b8..a542724 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1466=['then','error','name','map','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','FaxApplication','includeAll','findAll','params','rawAttributes','include','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','save'];(function(_0x42d1f6,_0x17950e){var _0x34d456=function(_0x491dfe){while(--_0x491dfe){_0x42d1f6['push'](_0x42d1f6['shift']());}};_0x34d456(++_0x17950e);}(_0x1466,0xf7));var _0x6146=function(_0xbc7e55,_0x15e817){_0xbc7e55=_0xbc7e55-0x0;var _0x46ecaa=_0x1466[_0xbc7e55];return _0x46ecaa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6146('0x0'));var zipdir=require(_0x6146('0x1'));var jsonpatch=require(_0x6146('0x2'));var rp=require(_0x6146('0x3'));var moment=require('moment');var BPromise=require(_0x6146('0x4'));var Mustache=require('mustache');var util=require(_0x6146('0x5'));var path=require(_0x6146('0x6'));var sox=require(_0x6146('0x7'));var csv=require(_0x6146('0x8'));var ejs=require(_0x6146('0x9'));var fs=require('fs');var fs_extra=require(_0x6146('0xa'));var _=require(_0x6146('0xb'));var squel=require('squel');var crypto=require(_0x6146('0xc'));var jsforce=require(_0x6146('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6146('0xe'));var Papa=require(_0x6146('0xf'));var Redis=require(_0x6146('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x6146('0x11'));var as=require(_0x6146('0x12'));var hardwareService=require(_0x6146('0x13'));var logger=require(_0x6146('0x14'))(_0x6146('0x15'));var utils=require(_0x6146('0x16'));var config=require(_0x6146('0x17'));var licenseUtil=require(_0x6146('0x18'));var db=require(_0x6146('0x19'))['db'];function respondWithStatusCode(_0x3079bf,_0x292747){_0x292747=_0x292747||0xcc;return function(_0x54a3ca){if(_0x54a3ca){return _0x3079bf[_0x6146('0x1a')](_0x292747);}return _0x3079bf['status'](_0x292747)[_0x6146('0x1b')]();};}function respondWithResult(_0x57d2d7,_0x4099d2){_0x4099d2=_0x4099d2||0xc8;return function(_0x4bd8d6){if(_0x4bd8d6){return _0x57d2d7[_0x6146('0x1c')](_0x4099d2)[_0x6146('0x1d')](_0x4bd8d6);}};}function respondWithFilteredResult(_0x19578d,_0x3aab67){return function(_0x1de76a){if(_0x1de76a){var _0x1b5934=typeof _0x3aab67['offset']===_0x6146('0x1e')&&typeof _0x3aab67[_0x6146('0x1f')]===_0x6146('0x1e');var _0x4910ce=_0x1de76a[_0x6146('0x20')];var _0x42e981=_0x1b5934?0x0:_0x3aab67[_0x6146('0x21')];var _0x50a012=_0x1b5934?_0x1de76a['count']:_0x3aab67[_0x6146('0x21')]+_0x3aab67[_0x6146('0x1f')];var _0x2f5b71;if(_0x50a012>=_0x4910ce){_0x50a012=_0x4910ce;_0x2f5b71=0xc8;}else{_0x2f5b71=0xce;}_0x19578d[_0x6146('0x1c')](_0x2f5b71);return _0x19578d['set'](_0x6146('0x22'),_0x42e981+'-'+_0x50a012+'/'+_0x4910ce)[_0x6146('0x1d')](_0x1de76a);}return null;};}function patchUpdates(_0x7916fe){return function(_0x7947fc){try{jsonpatch[_0x6146('0x23')](_0x7947fc,_0x7916fe,!![]);}catch(_0xa4e2bf){return BPromise['reject'](_0xa4e2bf);}return _0x7947fc[_0x6146('0x24')]();};}function saveUpdates(_0xb884a3,_0x4cefa2){return function(_0x46edee){if(_0x46edee){return _0x46edee['update'](_0xb884a3)[_0x6146('0x25')](function(_0x23299d){return _0x23299d;});}return null;};}function removeEntity(_0x35d724,_0x542bc9){return function(_0x5cff4c){if(_0x5cff4c){return _0x5cff4c['destroy']()[_0x6146('0x25')](function(){_0x35d724[_0x6146('0x1c')](0xcc)[_0x6146('0x1b')]();});}};}function handleEntityNotFound(_0x2f352f,_0x6ee711){return function(_0xf16e9d){if(!_0xf16e9d){_0x2f352f['sendStatus'](0x194);}return _0xf16e9d;};}function handleError(_0x4b543f,_0x1a224d){_0x1a224d=_0x1a224d||0x1f4;return function(_0x364d68){logger[_0x6146('0x26')](_0x364d68['stack']);if(_0x364d68[_0x6146('0x27')]){delete _0x364d68[_0x6146('0x27')];}_0x4b543f[_0x6146('0x1c')](_0x1a224d)['send'](_0x364d68);};}exports['index']=function(_0x56a998,_0x43d8d5){var _0x53d063={},_0x35a9e8={},_0x3fc0d4={'count':0x0,'rows':[]};var _0x42c69f=_[_0x6146('0x28')](db['FaxApplication']['rawAttributes'],function(_0x422741){return{'name':_0x422741[_0x6146('0x29')],'type':_0x422741['type'][_0x6146('0x2a')]};});_0x35a9e8[_0x6146('0x2b')]=_['map'](_0x42c69f,'name');_0x35a9e8[_0x6146('0x2c')]=_[_0x6146('0x2d')](_0x56a998[_0x6146('0x2c')]);_0x35a9e8[_0x6146('0x2e')]=_['intersection'](_0x35a9e8[_0x6146('0x2b')],_0x35a9e8[_0x6146('0x2c')]);_0x53d063[_0x6146('0x2f')]=_[_0x6146('0x30')](_0x35a9e8[_0x6146('0x2b')],qs['fields'](_0x56a998[_0x6146('0x2c')][_0x6146('0x31')]));_0x53d063['attributes']=_0x53d063[_0x6146('0x2f')][_0x6146('0x32')]?_0x53d063['attributes']:_0x35a9e8['model'];if(!_0x56a998[_0x6146('0x2c')][_0x6146('0x33')]('nolimit')){_0x53d063['limit']=qs[_0x6146('0x1f')](_0x56a998[_0x6146('0x2c')]['limit']);_0x53d063[_0x6146('0x21')]=qs[_0x6146('0x21')](_0x56a998[_0x6146('0x2c')][_0x6146('0x21')]);}_0x53d063[_0x6146('0x34')]=qs[_0x6146('0x35')](_0x56a998['query'][_0x6146('0x35')]);_0x53d063[_0x6146('0x36')]=qs['filters'](_[_0x6146('0x37')](_0x56a998['query'],_0x35a9e8[_0x6146('0x2e')]),_0x42c69f);if(_0x56a998[_0x6146('0x2c')]['filter']){_0x53d063[_0x6146('0x36')]=_[_0x6146('0x38')](_0x53d063[_0x6146('0x36')],{'$or':_['map'](_0x42c69f,function(_0xc56e5){if(_0xc56e5[_0x6146('0x39')]!==_0x6146('0x3a')){var _0x2c126c={};_0x2c126c[_0xc56e5[_0x6146('0x27')]]={'$like':'%'+_0x56a998[_0x6146('0x2c')][_0x6146('0x3b')]+'%'};return _0x2c126c;}})});}_0x53d063=_[_0x6146('0x38')]({},_0x53d063,_0x56a998[_0x6146('0x3c')]);var _0x1f7ebb={'where':_0x53d063['where']};return db[_0x6146('0x3d')]['count'](_0x1f7ebb)[_0x6146('0x25')](function(_0x2dee5f){_0x3fc0d4['count']=_0x2dee5f;if(_0x56a998[_0x6146('0x2c')][_0x6146('0x3e')]){_0x53d063['include']=[{'all':!![]}];}return db[_0x6146('0x3d')][_0x6146('0x3f')](_0x53d063);})[_0x6146('0x25')](function(_0x493796){_0x3fc0d4['rows']=_0x493796;return _0x3fc0d4;})['then'](respondWithFilteredResult(_0x43d8d5,_0x53d063))['catch'](handleError(_0x43d8d5,null));};exports['show']=function(_0x4d6362,_0x5d4e30){var _0x276ac7={'raw':!![],'where':{'id':_0x4d6362[_0x6146('0x40')]['id']}},_0x4940b6={};_0x4940b6[_0x6146('0x2b')]=_[_0x6146('0x2d')](db[_0x6146('0x3d')][_0x6146('0x41')]);_0x4940b6['query']=_[_0x6146('0x2d')](_0x4d6362['query']);_0x4940b6[_0x6146('0x2e')]=_[_0x6146('0x30')](_0x4940b6['model'],_0x4940b6['query']);_0x276ac7[_0x6146('0x2f')]=_[_0x6146('0x30')](_0x4940b6[_0x6146('0x2b')],qs[_0x6146('0x31')](_0x4d6362[_0x6146('0x2c')]['fields']));_0x276ac7[_0x6146('0x2f')]=_0x276ac7[_0x6146('0x2f')][_0x6146('0x32')]?_0x276ac7[_0x6146('0x2f')]:_0x4940b6[_0x6146('0x2b')];if(_0x4d6362[_0x6146('0x2c')][_0x6146('0x3e')]){_0x276ac7[_0x6146('0x42')]=[{'all':!![]}];}_0x276ac7=_[_0x6146('0x38')]({},_0x276ac7,_0x4d6362['options']);return db[_0x6146('0x3d')][_0x6146('0x43')](_0x276ac7)[_0x6146('0x25')](handleEntityNotFound(_0x5d4e30,null))[_0x6146('0x25')](respondWithResult(_0x5d4e30,null))[_0x6146('0x44')](handleError(_0x5d4e30,null));};exports[_0x6146('0x45')]=function(_0x3f73a2,_0x2a3dd6){return db['FaxApplication']['create'](_0x3f73a2[_0x6146('0x46')],{})[_0x6146('0x25')](respondWithResult(_0x2a3dd6,0xc9))['catch'](handleError(_0x2a3dd6,null));};exports['update']=function(_0xd6c7b4,_0x1e5b3c){if(_0xd6c7b4['body']['id']){delete _0xd6c7b4[_0x6146('0x46')]['id'];}return db[_0x6146('0x3d')]['find']({'where':{'id':_0xd6c7b4[_0x6146('0x40')]['id']}})['then'](handleEntityNotFound(_0x1e5b3c,null))[_0x6146('0x25')](saveUpdates(_0xd6c7b4[_0x6146('0x46')],null))[_0x6146('0x25')](respondWithResult(_0x1e5b3c,null))[_0x6146('0x44')](handleError(_0x1e5b3c,null));};exports['destroy']=function(_0xa7628a,_0x6d82e3){return db['FaxApplication'][_0x6146('0x43')]({'where':{'id':_0xa7628a[_0x6146('0x40')]['id']}})['then'](handleEntityNotFound(_0x6d82e3,null))[_0x6146('0x25')](removeEntity(_0x6d82e3,null))['catch'](handleError(_0x6d82e3,null));};
\ No newline at end of file
+var _0xcb38=['then','name','send','index','map','FaxApplication','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','merge','type','VIRTUAL','filter','include','findAll','rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update'];(function(_0x4abc69,_0x4a066d){var _0x2cf9ac=function(_0x419667){while(--_0x419667){_0x4abc69['push'](_0x4abc69['shift']());}};_0x2cf9ac(++_0x4a066d);}(_0xcb38,0xbc));var _0x8cb3=function(_0x38d39e,_0x58f0e7){_0x38d39e=_0x38d39e-0x0;var _0x197e69=_0xcb38[_0x38d39e];return _0x197e69;};'use strict';var emlformat=require(_0x8cb3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8cb3('0x1'));var jsonpatch=require(_0x8cb3('0x2'));var rp=require(_0x8cb3('0x3'));var moment=require('moment');var BPromise=require(_0x8cb3('0x4'));var Mustache=require(_0x8cb3('0x5'));var util=require(_0x8cb3('0x6'));var path=require(_0x8cb3('0x7'));var sox=require(_0x8cb3('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8cb3('0x9'));var _=require(_0x8cb3('0xa'));var squel=require(_0x8cb3('0xb'));var crypto=require(_0x8cb3('0xc'));var jsforce=require(_0x8cb3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8cb3('0xe'));var querystring=require(_0x8cb3('0xf'));var Papa=require(_0x8cb3('0x10'));var Redis=require(_0x8cb3('0x11'));var authService=require(_0x8cb3('0x12'));var qs=require(_0x8cb3('0x13'));var as=require(_0x8cb3('0x14'));var hardwareService=require(_0x8cb3('0x15'));var logger=require(_0x8cb3('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x8cb3('0x17'));var licenseUtil=require(_0x8cb3('0x18'));var db=require(_0x8cb3('0x19'))['db'];function respondWithStatusCode(_0x457486,_0x1aa975){_0x1aa975=_0x1aa975||0xcc;return function(_0x3d9c8a){if(_0x3d9c8a){return _0x457486[_0x8cb3('0x1a')](_0x1aa975);}return _0x457486[_0x8cb3('0x1b')](_0x1aa975)[_0x8cb3('0x1c')]();};}function respondWithResult(_0x4aee73,_0x5e1641){_0x5e1641=_0x5e1641||0xc8;return function(_0x5a39f6){if(_0x5a39f6){return _0x4aee73[_0x8cb3('0x1b')](_0x5e1641)[_0x8cb3('0x1d')](_0x5a39f6);}};}function respondWithFilteredResult(_0x15a8cf,_0xca33e6){return function(_0x26dde){if(_0x26dde){var _0x3d28e3=typeof _0xca33e6[_0x8cb3('0x1e')]===_0x8cb3('0x1f')&&typeof _0xca33e6['limit']===_0x8cb3('0x1f');var _0x5bced9=_0x26dde['count'];var _0x2461e8=_0x3d28e3?0x0:_0xca33e6[_0x8cb3('0x1e')];var _0x1bbee5=_0x3d28e3?_0x26dde[_0x8cb3('0x20')]:_0xca33e6['offset']+_0xca33e6[_0x8cb3('0x21')];var _0x498bf3;if(_0x1bbee5>=_0x5bced9){_0x1bbee5=_0x5bced9;_0x498bf3=0xc8;}else{_0x498bf3=0xce;}_0x15a8cf[_0x8cb3('0x1b')](_0x498bf3);return _0x15a8cf[_0x8cb3('0x22')](_0x8cb3('0x23'),_0x2461e8+'-'+_0x1bbee5+'/'+_0x5bced9)['json'](_0x26dde);}return null;};}function patchUpdates(_0x4e81fd){return function(_0x2a7d46){try{jsonpatch[_0x8cb3('0x24')](_0x2a7d46,_0x4e81fd,!![]);}catch(_0xe9fb3a){return BPromise[_0x8cb3('0x25')](_0xe9fb3a);}return _0x2a7d46[_0x8cb3('0x26')]();};}function saveUpdates(_0x3605dd,_0x5ec4d9){return function(_0x39e1ce){if(_0x39e1ce){return _0x39e1ce[_0x8cb3('0x27')](_0x3605dd)['then'](function(_0x4dab9b){return _0x4dab9b;});}return null;};}function removeEntity(_0x1375a3,_0x2d79de){return function(_0xdf6185){if(_0xdf6185){return _0xdf6185['destroy']()[_0x8cb3('0x28')](function(){_0x1375a3['status'](0xcc)[_0x8cb3('0x1c')]();});}};}function handleEntityNotFound(_0x467f2d,_0x32caae){return function(_0x187e0f){if(!_0x187e0f){_0x467f2d[_0x8cb3('0x1a')](0x194);}return _0x187e0f;};}function handleError(_0x3b57b5,_0x124ca4){_0x124ca4=_0x124ca4||0x1f4;return function(_0x342d7a){logger['error'](_0x342d7a['stack']);if(_0x342d7a[_0x8cb3('0x29')]){delete _0x342d7a['name'];}_0x3b57b5[_0x8cb3('0x1b')](_0x124ca4)[_0x8cb3('0x2a')](_0x342d7a);};}exports[_0x8cb3('0x2b')]=function(_0x383fa8,_0xd82de2){var _0x531270={},_0x112cd7={},_0x35470a={'count':0x0,'rows':[]};var _0x251501=_[_0x8cb3('0x2c')](db[_0x8cb3('0x2d')]['rawAttributes'],function(_0x46b88a){return{'name':_0x46b88a[_0x8cb3('0x2e')],'type':_0x46b88a['type'][_0x8cb3('0x2f')]};});_0x112cd7[_0x8cb3('0x30')]=_[_0x8cb3('0x2c')](_0x251501,_0x8cb3('0x29'));_0x112cd7[_0x8cb3('0x31')]=_[_0x8cb3('0x32')](_0x383fa8['query']);_0x112cd7[_0x8cb3('0x33')]=_[_0x8cb3('0x34')](_0x112cd7['model'],_0x112cd7[_0x8cb3('0x31')]);_0x531270[_0x8cb3('0x35')]=_[_0x8cb3('0x34')](_0x112cd7[_0x8cb3('0x30')],qs['fields'](_0x383fa8[_0x8cb3('0x31')][_0x8cb3('0x36')]));_0x531270[_0x8cb3('0x35')]=_0x531270[_0x8cb3('0x35')][_0x8cb3('0x37')]?_0x531270[_0x8cb3('0x35')]:_0x112cd7[_0x8cb3('0x30')];if(!_0x383fa8['query'][_0x8cb3('0x38')]('nolimit')){_0x531270['limit']=qs['limit'](_0x383fa8[_0x8cb3('0x31')][_0x8cb3('0x21')]);_0x531270[_0x8cb3('0x1e')]=qs[_0x8cb3('0x1e')](_0x383fa8['query'][_0x8cb3('0x1e')]);}_0x531270['order']=qs[_0x8cb3('0x39')](_0x383fa8[_0x8cb3('0x31')][_0x8cb3('0x39')]);_0x531270[_0x8cb3('0x3a')]=qs[_0x8cb3('0x33')](_[_0x8cb3('0x3b')](_0x383fa8[_0x8cb3('0x31')],_0x112cd7[_0x8cb3('0x33')]),_0x251501);if(_0x383fa8[_0x8cb3('0x31')]['filter']){_0x531270['where']=_[_0x8cb3('0x3c')](_0x531270[_0x8cb3('0x3a')],{'$or':_[_0x8cb3('0x2c')](_0x251501,function(_0xf7bc8c){if(_0xf7bc8c[_0x8cb3('0x3d')]!==_0x8cb3('0x3e')){var _0x203981={};_0x203981[_0xf7bc8c['name']]={'$like':'%'+_0x383fa8['query'][_0x8cb3('0x3f')]+'%'};return _0x203981;}})});}_0x531270=_['merge']({},_0x531270,_0x383fa8['options']);var _0x2f7c63={'where':_0x531270[_0x8cb3('0x3a')]};return db[_0x8cb3('0x2d')]['count'](_0x2f7c63)[_0x8cb3('0x28')](function(_0x30253c){_0x35470a[_0x8cb3('0x20')]=_0x30253c;if(_0x383fa8[_0x8cb3('0x31')]['includeAll']){_0x531270[_0x8cb3('0x40')]=[{'all':!![]}];}return db[_0x8cb3('0x2d')][_0x8cb3('0x41')](_0x531270);})[_0x8cb3('0x28')](function(_0x792d0c){_0x35470a[_0x8cb3('0x42')]=_0x792d0c;return _0x35470a;})[_0x8cb3('0x28')](respondWithFilteredResult(_0xd82de2,_0x531270))[_0x8cb3('0x43')](handleError(_0xd82de2,null));};exports[_0x8cb3('0x44')]=function(_0xcc2645,_0x71a8ca){var _0x468803={'raw':!![],'where':{'id':_0xcc2645[_0x8cb3('0x45')]['id']}},_0x7d1646={};_0x7d1646[_0x8cb3('0x30')]=_['keys'](db[_0x8cb3('0x2d')][_0x8cb3('0x46')]);_0x7d1646[_0x8cb3('0x31')]=_[_0x8cb3('0x32')](_0xcc2645[_0x8cb3('0x31')]);_0x7d1646[_0x8cb3('0x33')]=_['intersection'](_0x7d1646['model'],_0x7d1646[_0x8cb3('0x31')]);_0x468803[_0x8cb3('0x35')]=_[_0x8cb3('0x34')](_0x7d1646[_0x8cb3('0x30')],qs[_0x8cb3('0x36')](_0xcc2645['query'][_0x8cb3('0x36')]));_0x468803[_0x8cb3('0x35')]=_0x468803[_0x8cb3('0x35')][_0x8cb3('0x37')]?_0x468803['attributes']:_0x7d1646[_0x8cb3('0x30')];if(_0xcc2645[_0x8cb3('0x31')][_0x8cb3('0x47')]){_0x468803[_0x8cb3('0x40')]=[{'all':!![]}];}_0x468803=_[_0x8cb3('0x3c')]({},_0x468803,_0xcc2645[_0x8cb3('0x48')]);return db['FaxApplication'][_0x8cb3('0x49')](_0x468803)[_0x8cb3('0x28')](handleEntityNotFound(_0x71a8ca,null))[_0x8cb3('0x28')](respondWithResult(_0x71a8ca,null))[_0x8cb3('0x43')](handleError(_0x71a8ca,null));};exports['create']=function(_0x577761,_0x1d50ef){return db[_0x8cb3('0x2d')][_0x8cb3('0x4a')](_0x577761[_0x8cb3('0x4b')],{})[_0x8cb3('0x28')](respondWithResult(_0x1d50ef,0xc9))['catch'](handleError(_0x1d50ef,null));};exports['update']=function(_0x164dac,_0x4e4a4f){if(_0x164dac[_0x8cb3('0x4b')]['id']){delete _0x164dac[_0x8cb3('0x4b')]['id'];}return db[_0x8cb3('0x2d')][_0x8cb3('0x49')]({'where':{'id':_0x164dac[_0x8cb3('0x45')]['id']}})[_0x8cb3('0x28')](handleEntityNotFound(_0x4e4a4f,null))[_0x8cb3('0x28')](saveUpdates(_0x164dac[_0x8cb3('0x4b')],null))['then'](respondWithResult(_0x4e4a4f,null))[_0x8cb3('0x43')](handleError(_0x4e4a4f,null));};exports['destroy']=function(_0x4620ab,_0x4ce39f){return db[_0x8cb3('0x2d')][_0x8cb3('0x49')]({'where':{'id':_0x4620ab['params']['id']}})[_0x8cb3('0x28')](handleEntityNotFound(_0x4ce39f,null))['then'](removeEntity(_0x4ce39f,null))[_0x8cb3('0x43')](handleError(_0x4ce39f,null));};
\ No newline at end of file