Built motion from commit 0900f080.|2.5.45
[motion2.git] / server / api / voiceQueuesLog / voiceQueuesLog.controller.js
index aace7aa..335296a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8177=['mustache','util','path','to-csv','ejs','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','map','VoiceQueuesLog','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8177,0x8d));var _0x7817=function(_0x5a442d,_0x5c7379){_0x5a442d=_0x5a442d-0x0;var _0xbe91f1=_0x8177[_0x5a442d];return _0xbe91f1;};'use strict';var pdf=require(_0x7817('0x0'));var emlformat=require(_0x7817('0x1'));var rimraf=require(_0x7817('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7817('0x3'));var rp=require(_0x7817('0x4'));var moment=require(_0x7817('0x5'));var BPromise=require(_0x7817('0x6'));var Mustache=require(_0x7817('0x7'));var util=require(_0x7817('0x8'));var path=require(_0x7817('0x9'));var sox=require('sox');var csv=require(_0x7817('0xa'));var ejs=require(_0x7817('0xb'));var fs=require('fs');var _=require(_0x7817('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7817('0xd'));var deskjs=require(_0x7817('0xe'));var toCsv=require(_0x7817('0xa'));var querystring=require('querystring');var Papa=require(_0x7817('0xf'));var Redis=require(_0x7817('0x10'));var authService=require(_0x7817('0x11'));var qs=require(_0x7817('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7817('0x13'))('api');var utils=require(_0x7817('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7817('0x15'));var db=require(_0x7817('0x16'))['db'];function respondWithStatusCode(_0x31003b,_0x5f0cf1){_0x5f0cf1=_0x5f0cf1||0xcc;return function(_0x2990a3){if(_0x2990a3){return _0x31003b[_0x7817('0x17')](_0x5f0cf1);}return _0x31003b[_0x7817('0x18')](_0x5f0cf1)[_0x7817('0x19')]();};}function respondWithResult(_0x5a2e8a,_0x261f1b){_0x261f1b=_0x261f1b||0xc8;return function(_0x56fc44){if(_0x56fc44){return _0x5a2e8a[_0x7817('0x18')](_0x261f1b)[_0x7817('0x1a')](_0x56fc44);}};}function respondWithFilteredResult(_0x2645ca,_0x5a330d){return function(_0x2acd08){if(_0x2acd08){var _0x2fd7dc=_0x2acd08[_0x7817('0x1b')],_0x266b68=_0x5a330d[_0x7817('0x1c')],_0x113860=_0x5a330d[_0x7817('0x1c')]+_0x5a330d[_0x7817('0x1d')],_0x5d2141;if(_0x113860>=_0x2fd7dc){_0x113860=_0x2fd7dc;_0x5d2141=0xc8;}else{_0x5d2141=0xce;}_0x2645ca[_0x7817('0x18')](_0x5d2141);return _0x2645ca[_0x7817('0x1e')](_0x7817('0x1f'),_0x266b68+'-'+_0x113860+'/'+_0x2fd7dc)[_0x7817('0x1a')](_0x2acd08);}return null;};}function patchUpdates(_0x5ce8c7){return function(_0xc00dcb){try{jsonpatch['apply'](_0xc00dcb,_0x5ce8c7,!![]);}catch(_0x126827){return BPromise[_0x7817('0x20')](_0x126827);}return _0xc00dcb[_0x7817('0x21')]();};}function saveUpdates(_0x5cd9ef,_0x2090b2){return function(_0x6481ee){if(_0x6481ee){return _0x6481ee[_0x7817('0x22')](_0x5cd9ef)['then'](function(_0x34c7a2){return _0x34c7a2;});}return null;};}function removeEntity(_0x3c19a8,_0x4e93da){return function(_0x2187aa){if(_0x2187aa){return _0x2187aa[_0x7817('0x23')]()[_0x7817('0x24')](function(){_0x3c19a8[_0x7817('0x18')](0xcc)[_0x7817('0x19')]();});}};}function handleEntityNotFound(_0x5bb1be,_0x229899){return function(_0x261bc6){if(!_0x261bc6){_0x5bb1be[_0x7817('0x17')](0x194);}return _0x261bc6;};}function handleError(_0x5a2ba7,_0xf724c4){_0xf724c4=_0xf724c4||0x1f4;return function(_0x4a339a){logger[_0x7817('0x25')](_0x4a339a[_0x7817('0x26')]);if(_0x4a339a[_0x7817('0x27')]){delete _0x4a339a[_0x7817('0x27')];}_0x5a2ba7['status'](_0xf724c4)[_0x7817('0x28')](_0x4a339a);};}exports['index']=function(_0x107e14,_0x52fc27){var _0x2f0283={},_0x58054f={},_0x45e800={'count':0x0,'rows':[]};var _0x2d5726=_[_0x7817('0x29')](db[_0x7817('0x2a')]['rawAttributes'],function(_0x1a14cb){return{'name':_0x1a14cb[_0x7817('0x2b')],'type':_0x1a14cb[_0x7817('0x2c')][_0x7817('0x2d')]};});_0x58054f[_0x7817('0x2e')]=_['map'](_0x2d5726,'name');_0x58054f[_0x7817('0x2f')]=_['keys'](_0x107e14[_0x7817('0x2f')]);_0x58054f[_0x7817('0x30')]=_[_0x7817('0x31')](_0x58054f['model'],_0x58054f[_0x7817('0x2f')]);_0x2f0283[_0x7817('0x32')]=_[_0x7817('0x31')](_0x58054f[_0x7817('0x2e')],qs[_0x7817('0x33')](_0x107e14[_0x7817('0x2f')][_0x7817('0x33')]));_0x2f0283['attributes']=_0x2f0283[_0x7817('0x32')][_0x7817('0x34')]?_0x2f0283[_0x7817('0x32')]:_0x58054f[_0x7817('0x2e')];if(!_0x107e14[_0x7817('0x2f')][_0x7817('0x35')](_0x7817('0x36'))){_0x2f0283[_0x7817('0x1d')]=qs[_0x7817('0x1d')](_0x107e14[_0x7817('0x2f')]['limit']);_0x2f0283[_0x7817('0x1c')]=qs[_0x7817('0x1c')](_0x107e14[_0x7817('0x2f')][_0x7817('0x1c')]);}_0x2f0283[_0x7817('0x37')]=qs[_0x7817('0x38')](_0x107e14['query'][_0x7817('0x38')]);_0x2f0283[_0x7817('0x39')]=qs[_0x7817('0x30')](_['pick'](_0x107e14['query'],_0x58054f[_0x7817('0x30')]),_0x2d5726);if(_0x107e14[_0x7817('0x2f')][_0x7817('0x3a')]){_0x2f0283['where']=_[_0x7817('0x3b')](_0x2f0283[_0x7817('0x39')],{'$or':_[_0x7817('0x29')](_0x2d5726,function(_0x13878d){if(_0x13878d[_0x7817('0x2c')]!==_0x7817('0x3c')){var _0x15f951={};_0x15f951[_0x13878d[_0x7817('0x27')]]={'$like':'%'+_0x107e14['query'][_0x7817('0x3a')]+'%'};return _0x15f951;}})});}_0x2f0283=_[_0x7817('0x3b')]({},_0x2f0283,_0x107e14[_0x7817('0x3d')]);var _0x53ae76={'where':_0x2f0283[_0x7817('0x39')]};return db[_0x7817('0x2a')]['count'](_0x53ae76)[_0x7817('0x24')](function(_0x2e5604){_0x45e800['count']=_0x2e5604;if(_0x107e14['query'][_0x7817('0x3e')]){_0x2f0283[_0x7817('0x3f')]=[{'all':!![]}];}return db[_0x7817('0x2a')][_0x7817('0x40')](_0x2f0283);})[_0x7817('0x24')](function(_0x824fbe){_0x45e800[_0x7817('0x41')]=_0x824fbe;return _0x45e800;})[_0x7817('0x24')](respondWithFilteredResult(_0x52fc27,_0x2f0283))[_0x7817('0x42')](handleError(_0x52fc27,null));};exports[_0x7817('0x43')]=function(_0x491db5,_0x1ed206){var _0x1dae15={'raw':!![],'where':{'id':_0x491db5[_0x7817('0x44')]['id']}},_0x2bfb4e={};_0x2bfb4e[_0x7817('0x2e')]=_[_0x7817('0x45')](db[_0x7817('0x2a')][_0x7817('0x46')]);_0x2bfb4e[_0x7817('0x2f')]=_[_0x7817('0x45')](_0x491db5[_0x7817('0x2f')]);_0x2bfb4e[_0x7817('0x30')]=_['intersection'](_0x2bfb4e['model'],_0x2bfb4e[_0x7817('0x2f')]);_0x1dae15[_0x7817('0x32')]=_[_0x7817('0x31')](_0x2bfb4e[_0x7817('0x2e')],qs['fields'](_0x491db5['query'][_0x7817('0x33')]));_0x1dae15[_0x7817('0x32')]=_0x1dae15[_0x7817('0x32')]['length']?_0x1dae15[_0x7817('0x32')]:_0x2bfb4e[_0x7817('0x2e')];if(_0x491db5['query'][_0x7817('0x3e')]){_0x1dae15[_0x7817('0x3f')]=[{'all':!![]}];}_0x1dae15=_[_0x7817('0x3b')]({},_0x1dae15,_0x491db5[_0x7817('0x3d')]);return db[_0x7817('0x2a')][_0x7817('0x47')](_0x1dae15)['then'](handleEntityNotFound(_0x1ed206,null))[_0x7817('0x24')](respondWithResult(_0x1ed206,null))['catch'](handleError(_0x1ed206,null));};exports[_0x7817('0x48')]=function(_0x4c967b,_0x23a970){return db[_0x7817('0x2a')][_0x7817('0x48')](_0x4c967b[_0x7817('0x49')],{})[_0x7817('0x24')](respondWithResult(_0x23a970,0xc9))[_0x7817('0x42')](handleError(_0x23a970,null));};exports[_0x7817('0x22')]=function(_0x521515,_0x27c63e){if(_0x521515['body']['id']){delete _0x521515[_0x7817('0x49')]['id'];}return db[_0x7817('0x2a')][_0x7817('0x47')]({'where':{'id':_0x521515[_0x7817('0x44')]['id']}})[_0x7817('0x24')](handleEntityNotFound(_0x27c63e,null))['then'](saveUpdates(_0x521515[_0x7817('0x49')],null))['then'](respondWithResult(_0x27c63e,null))[_0x7817('0x42')](handleError(_0x27c63e,null));};exports[_0x7817('0x23')]=function(_0x22cae0,_0x132c85){return db[_0x7817('0x2a')][_0x7817('0x47')]({'where':{'id':_0x22cae0[_0x7817('0x44')]['id']}})['then'](handleEntityNotFound(_0x132c85,null))[_0x7817('0x24')](removeEntity(_0x132c85,null))['catch'](handleError(_0x132c85,null));};
\ No newline at end of file
+var _0xc7b3=['index','VoiceQueuesLog','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','rows','show','include','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','apply','reject','save','destroy','then','stack','name','send'];(function(_0x37ded3,_0x371ebb){var _0x51e49e=function(_0x30cc78){while(--_0x30cc78){_0x37ded3['push'](_0x37ded3['shift']());}};_0x51e49e(++_0x371ebb);}(_0xc7b3,0x14b));var _0x3c7b=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc7b3[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0x3c7b('0x0'));var rimraf=require(_0x3c7b('0x1'));var zipdir=require(_0x3c7b('0x2'));var jsonpatch=require(_0x3c7b('0x3'));var rp=require(_0x3c7b('0x4'));var moment=require(_0x3c7b('0x5'));var BPromise=require(_0x3c7b('0x6'));var Mustache=require('mustache');var util=require(_0x3c7b('0x7'));var path=require(_0x3c7b('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3c7b('0x9'));var fs=require('fs');var fs_extra=require(_0x3c7b('0xa'));var _=require(_0x3c7b('0xb'));var squel=require(_0x3c7b('0xc'));var crypto=require(_0x3c7b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3c7b('0xe'));var toCsv=require(_0x3c7b('0xf'));var querystring=require(_0x3c7b('0x10'));var Papa=require(_0x3c7b('0x11'));var Redis=require(_0x3c7b('0x12'));var authService=require(_0x3c7b('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x3c7b('0x14'));var hardwareService=require(_0x3c7b('0x15'));var logger=require(_0x3c7b('0x16'))(_0x3c7b('0x17'));var utils=require(_0x3c7b('0x18'));var config=require(_0x3c7b('0x19'));var licenseUtil=require(_0x3c7b('0x1a'));var db=require(_0x3c7b('0x1b'))['db'];function respondWithStatusCode(_0x433401,_0x526699){_0x526699=_0x526699||0xcc;return function(_0x935259){if(_0x935259){return _0x433401[_0x3c7b('0x1c')](_0x526699);}return _0x433401[_0x3c7b('0x1d')](_0x526699)[_0x3c7b('0x1e')]();};}function respondWithResult(_0x49a8dc,_0x54872e){_0x54872e=_0x54872e||0xc8;return function(_0x150643){if(_0x150643){return _0x49a8dc['status'](_0x54872e)[_0x3c7b('0x1f')](_0x150643);}};}function respondWithFilteredResult(_0x53a419,_0x337542){return function(_0x44a9d5){if(_0x44a9d5){var _0x3a5db2=typeof _0x337542['offset']===_0x3c7b('0x20')&&typeof _0x337542[_0x3c7b('0x21')]==='undefined';var _0x1d2de8=_0x44a9d5['count'];var _0x4f71c6=_0x3a5db2?0x0:_0x337542[_0x3c7b('0x22')];var _0x2aa916=_0x3a5db2?_0x44a9d5[_0x3c7b('0x23')]:_0x337542[_0x3c7b('0x22')]+_0x337542[_0x3c7b('0x21')];var _0x4f258f;if(_0x2aa916>=_0x1d2de8){_0x2aa916=_0x1d2de8;_0x4f258f=0xc8;}else{_0x4f258f=0xce;}_0x53a419[_0x3c7b('0x1d')](_0x4f258f);return _0x53a419['set']('Content-Range',_0x4f71c6+'-'+_0x2aa916+'/'+_0x1d2de8)['json'](_0x44a9d5);}return null;};}function patchUpdates(_0x4c7c56){return function(_0x40d363){try{jsonpatch[_0x3c7b('0x24')](_0x40d363,_0x4c7c56,!![]);}catch(_0x327983){return BPromise[_0x3c7b('0x25')](_0x327983);}return _0x40d363[_0x3c7b('0x26')]();};}function saveUpdates(_0x4d4032,_0x49a029){return function(_0x139dd1){if(_0x139dd1){return _0x139dd1['update'](_0x4d4032)['then'](function(_0x22a12a){return _0x22a12a;});}return null;};}function removeEntity(_0x223391,_0x5a75bc){return function(_0x29313f){if(_0x29313f){return _0x29313f[_0x3c7b('0x27')]()[_0x3c7b('0x28')](function(){_0x223391[_0x3c7b('0x1d')](0xcc)[_0x3c7b('0x1e')]();});}};}function handleEntityNotFound(_0x2e931d,_0x5814b3){return function(_0x239059){if(!_0x239059){_0x2e931d[_0x3c7b('0x1c')](0x194);}return _0x239059;};}function handleError(_0x3af675,_0x3dad5b){_0x3dad5b=_0x3dad5b||0x1f4;return function(_0x498b30){logger['error'](_0x498b30[_0x3c7b('0x29')]);if(_0x498b30[_0x3c7b('0x2a')]){delete _0x498b30[_0x3c7b('0x2a')];}_0x3af675['status'](_0x3dad5b)[_0x3c7b('0x2b')](_0x498b30);};}exports[_0x3c7b('0x2c')]=function(_0x58a2ec,_0x456000){var _0x50b207={},_0xecff06={},_0x29a3a1={'count':0x0,'rows':[]};var _0x3bae65=_['map'](db[_0x3c7b('0x2d')][_0x3c7b('0x2e')],function(_0x28777d){return{'name':_0x28777d['fieldName'],'type':_0x28777d[_0x3c7b('0x2f')][_0x3c7b('0x30')]};});_0xecff06[_0x3c7b('0x31')]=_[_0x3c7b('0x32')](_0x3bae65,_0x3c7b('0x2a'));_0xecff06[_0x3c7b('0x33')]=_[_0x3c7b('0x34')](_0x58a2ec[_0x3c7b('0x33')]);_0xecff06[_0x3c7b('0x35')]=_[_0x3c7b('0x36')](_0xecff06['model'],_0xecff06[_0x3c7b('0x33')]);_0x50b207[_0x3c7b('0x37')]=_['intersection'](_0xecff06['model'],qs[_0x3c7b('0x38')](_0x58a2ec[_0x3c7b('0x33')][_0x3c7b('0x38')]));_0x50b207[_0x3c7b('0x37')]=_0x50b207[_0x3c7b('0x37')][_0x3c7b('0x39')]?_0x50b207[_0x3c7b('0x37')]:_0xecff06[_0x3c7b('0x31')];if(!_0x58a2ec[_0x3c7b('0x33')][_0x3c7b('0x3a')](_0x3c7b('0x3b'))){_0x50b207[_0x3c7b('0x21')]=qs[_0x3c7b('0x21')](_0x58a2ec[_0x3c7b('0x33')][_0x3c7b('0x21')]);_0x50b207['offset']=qs[_0x3c7b('0x22')](_0x58a2ec[_0x3c7b('0x33')][_0x3c7b('0x22')]);}_0x50b207['order']=qs[_0x3c7b('0x3c')](_0x58a2ec[_0x3c7b('0x33')][_0x3c7b('0x3c')]);_0x50b207[_0x3c7b('0x3d')]=qs[_0x3c7b('0x35')](_[_0x3c7b('0x3e')](_0x58a2ec[_0x3c7b('0x33')],_0xecff06[_0x3c7b('0x35')]),_0x3bae65);if(_0x58a2ec[_0x3c7b('0x33')][_0x3c7b('0x3f')]){_0x50b207[_0x3c7b('0x3d')]=_[_0x3c7b('0x40')](_0x50b207['where'],{'$or':_[_0x3c7b('0x32')](_0x3bae65,function(_0x509fce){if(_0x509fce[_0x3c7b('0x2f')]!=='VIRTUAL'){var _0x121e16={};_0x121e16[_0x509fce[_0x3c7b('0x2a')]]={'$like':'%'+_0x58a2ec['query'][_0x3c7b('0x3f')]+'%'};return _0x121e16;}})});}_0x50b207=_[_0x3c7b('0x40')]({},_0x50b207,_0x58a2ec[_0x3c7b('0x41')]);var _0x399d9b={'where':_0x50b207[_0x3c7b('0x3d')]};return db[_0x3c7b('0x2d')]['count'](_0x399d9b)['then'](function(_0x33d2d3){_0x29a3a1[_0x3c7b('0x23')]=_0x33d2d3;if(_0x58a2ec[_0x3c7b('0x33')][_0x3c7b('0x42')]){_0x50b207['include']=[{'all':!![]}];}return db[_0x3c7b('0x2d')]['findAll'](_0x50b207);})['then'](function(_0x41e099){_0x29a3a1[_0x3c7b('0x43')]=_0x41e099;return _0x29a3a1;})[_0x3c7b('0x28')](respondWithFilteredResult(_0x456000,_0x50b207))['catch'](handleError(_0x456000,null));};exports[_0x3c7b('0x44')]=function(_0x52b078,_0x564f48){var _0x5643e2={'raw':!![],'where':{'id':_0x52b078['params']['id']}},_0xf9a08c={};_0xf9a08c[_0x3c7b('0x31')]=_[_0x3c7b('0x34')](db[_0x3c7b('0x2d')]['rawAttributes']);_0xf9a08c[_0x3c7b('0x33')]=_[_0x3c7b('0x34')](_0x52b078['query']);_0xf9a08c[_0x3c7b('0x35')]=_['intersection'](_0xf9a08c[_0x3c7b('0x31')],_0xf9a08c[_0x3c7b('0x33')]);_0x5643e2['attributes']=_[_0x3c7b('0x36')](_0xf9a08c['model'],qs['fields'](_0x52b078['query'][_0x3c7b('0x38')]));_0x5643e2['attributes']=_0x5643e2[_0x3c7b('0x37')][_0x3c7b('0x39')]?_0x5643e2[_0x3c7b('0x37')]:_0xf9a08c[_0x3c7b('0x31')];if(_0x52b078[_0x3c7b('0x33')][_0x3c7b('0x42')]){_0x5643e2[_0x3c7b('0x45')]=[{'all':!![]}];}_0x5643e2=_['merge']({},_0x5643e2,_0x52b078[_0x3c7b('0x41')]);return db[_0x3c7b('0x2d')][_0x3c7b('0x46')](_0x5643e2)[_0x3c7b('0x28')](handleEntityNotFound(_0x564f48,null))[_0x3c7b('0x28')](respondWithResult(_0x564f48,null))[_0x3c7b('0x47')](handleError(_0x564f48,null));};exports[_0x3c7b('0x48')]=function(_0x56fe05,_0x5b7b8a){return db['VoiceQueuesLog'][_0x3c7b('0x48')](_0x56fe05[_0x3c7b('0x49')],{})[_0x3c7b('0x28')](respondWithResult(_0x5b7b8a,0xc9))[_0x3c7b('0x47')](handleError(_0x5b7b8a,null));};exports['update']=function(_0x1bb84b,_0x1a07a9){if(_0x1bb84b[_0x3c7b('0x49')]['id']){delete _0x1bb84b[_0x3c7b('0x49')]['id'];}return db[_0x3c7b('0x2d')]['find']({'where':{'id':_0x1bb84b[_0x3c7b('0x4a')]['id']}})[_0x3c7b('0x28')](handleEntityNotFound(_0x1a07a9,null))[_0x3c7b('0x28')](saveUpdates(_0x1bb84b[_0x3c7b('0x49')],null))[_0x3c7b('0x28')](respondWithResult(_0x1a07a9,null))['catch'](handleError(_0x1a07a9,null));};exports[_0x3c7b('0x27')]=function(_0x2babc9,_0x15244f){return db[_0x3c7b('0x2d')][_0x3c7b('0x46')]({'where':{'id':_0x2babc9[_0x3c7b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x15244f,null))[_0x3c7b('0x28')](removeEntity(_0x15244f,null))[_0x3c7b('0x47')](handleError(_0x15244f,null));};
\ No newline at end of file