Built motion from commit (unavailable).|2.5.11
[motion2.git] / server / api / voiceDialReport / voiceDialReport.controller.js
index 493353b..e2843b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd25=['moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','limit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','length','find','create','body','describe','html-pdf','zip-dir','fast-json-patch','request-promise'];(function(_0x4a1412,_0x2b6ee8){var _0x2cc456=function(_0x2cf4a4){while(--_0x2cf4a4){_0x4a1412['push'](_0x4a1412['shift']());}};_0x2cc456(++_0x2b6ee8);}(_0xfd25,0x169));var _0x5fd2=function(_0x81c74a,_0x3328be){_0x81c74a=_0x81c74a-0x0;var _0x273336=_0xfd25[_0x81c74a];return _0x273336;};'use strict';var pdf=require(_0x5fd2('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5fd2('0x1'));var jsonpatch=require(_0x5fd2('0x2'));var rp=require(_0x5fd2('0x3'));var moment=require(_0x5fd2('0x4'));var BPromise=require(_0x5fd2('0x5'));var Mustache=require(_0x5fd2('0x6'));var util=require('util');var path=require(_0x5fd2('0x7'));var sox=require(_0x5fd2('0x8'));var csv=require(_0x5fd2('0x9'));var ejs=require(_0x5fd2('0xa'));var fs=require('fs');var _=require(_0x5fd2('0xb'));var squel=require('squel');var crypto=require(_0x5fd2('0xc'));var jsforce=require(_0x5fd2('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x5fd2('0x9'));var querystring=require(_0x5fd2('0xe'));var Papa=require(_0x5fd2('0xf'));var Redis=require(_0x5fd2('0x10'));var authService=require(_0x5fd2('0x11'));var qs=require(_0x5fd2('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5fd2('0x13'))(_0x5fd2('0x14'));var utils=require('../../config/utils');var config=require(_0x5fd2('0x15'));var db=require(_0x5fd2('0x16'))['db'];function respondWithStatusCode(_0x4d9c6c,_0x3aa4b5){_0x3aa4b5=_0x3aa4b5||0xcc;return function(_0x2b8bcc){if(_0x2b8bcc){return _0x4d9c6c[_0x5fd2('0x17')](_0x3aa4b5);}return _0x4d9c6c[_0x5fd2('0x18')](_0x3aa4b5)[_0x5fd2('0x19')]();};}function respondWithResult(_0x5f01b8,_0x1f3475){_0x1f3475=_0x1f3475||0xc8;return function(_0x411f65){if(_0x411f65){return _0x5f01b8[_0x5fd2('0x18')](_0x1f3475)[_0x5fd2('0x1a')](_0x411f65);}};}function respondWithFilteredResult(_0x362744,_0x34abb6){return function(_0x200534){if(_0x200534){var _0x477e44=_0x200534[_0x5fd2('0x1b')],_0x55e5a9=_0x34abb6[_0x5fd2('0x1c')],_0x5b9b4a=_0x34abb6[_0x5fd2('0x1c')]+_0x34abb6['limit'],_0x230f1b;if(_0x5b9b4a>=_0x477e44){_0x5b9b4a=_0x477e44;_0x230f1b=0xc8;}else{_0x230f1b=0xce;}_0x362744[_0x5fd2('0x18')](_0x230f1b);return _0x362744[_0x5fd2('0x1d')](_0x5fd2('0x1e'),_0x55e5a9+'-'+_0x5b9b4a+'/'+_0x477e44)['json'](_0x200534);}return null;};}function patchUpdates(_0x522912){return function(_0x1a3f48){try{jsonpatch['apply'](_0x1a3f48,_0x522912,!![]);}catch(_0x5d5880){return BPromise[_0x5fd2('0x1f')](_0x5d5880);}return _0x1a3f48[_0x5fd2('0x20')]();};}function saveUpdates(_0x5ab1cc,_0x2b36bf){return function(_0x5bfe32){if(_0x5bfe32){return _0x5bfe32['update'](_0x5ab1cc)[_0x5fd2('0x21')](function(_0x2006af){return _0x2006af;});}return null;};}function removeEntity(_0x444f42,_0x308be5){return function(_0x490398){if(_0x490398){return _0x490398[_0x5fd2('0x22')]()[_0x5fd2('0x21')](function(){_0x444f42[_0x5fd2('0x18')](0xcc)[_0x5fd2('0x19')]();});}};}function handleEntityNotFound(_0x23fe9b,_0x258b68){return function(_0x80e69a){if(!_0x80e69a){_0x23fe9b['sendStatus'](0x194);}return _0x80e69a;};}function handleError(_0x5e56e4,_0x23e286){_0x23e286=_0x23e286||0x1f4;return function(_0x5466fb){logger[_0x5fd2('0x23')](_0x5466fb[_0x5fd2('0x24')]);if(_0x5466fb['name']){delete _0x5466fb[_0x5fd2('0x25')];}_0x5e56e4[_0x5fd2('0x18')](_0x23e286)[_0x5fd2('0x26')](_0x5466fb);};}exports[_0x5fd2('0x27')]=function(_0x5697f1,_0x118ac1){var _0x33a676={},_0x2e118c={},_0x13284d={'count':0x0,'rows':[]};var _0x2f2e0f=_[_0x5fd2('0x28')](db[_0x5fd2('0x29')][_0x5fd2('0x2a')],function(_0x3fbf27){return{'name':_0x3fbf27[_0x5fd2('0x2b')],'type':_0x3fbf27[_0x5fd2('0x2c')][_0x5fd2('0x2d')]};});_0x2e118c[_0x5fd2('0x2e')]=_[_0x5fd2('0x28')](_0x2f2e0f,_0x5fd2('0x25'));_0x2e118c[_0x5fd2('0x2f')]=_[_0x5fd2('0x30')](_0x5697f1[_0x5fd2('0x2f')]);_0x2e118c['filters']=_[_0x5fd2('0x31')](_0x2e118c['model'],_0x2e118c['query']);_0x33a676[_0x5fd2('0x32')]=_[_0x5fd2('0x31')](_0x2e118c['model'],qs[_0x5fd2('0x33')](_0x5697f1[_0x5fd2('0x2f')]['fields']));_0x33a676[_0x5fd2('0x32')]=_0x33a676[_0x5fd2('0x32')]['length']?_0x33a676[_0x5fd2('0x32')]:_0x2e118c[_0x5fd2('0x2e')];if(!_0x5697f1[_0x5fd2('0x2f')]['hasOwnProperty'](_0x5fd2('0x34'))){_0x33a676[_0x5fd2('0x35')]=qs['limit'](_0x5697f1[_0x5fd2('0x2f')][_0x5fd2('0x35')]);_0x33a676[_0x5fd2('0x1c')]=qs[_0x5fd2('0x1c')](_0x5697f1[_0x5fd2('0x2f')]['offset']);}_0x33a676['order']=qs[_0x5fd2('0x36')](_0x5697f1['query'][_0x5fd2('0x36')]);_0x33a676[_0x5fd2('0x37')]=qs[_0x5fd2('0x38')](_[_0x5fd2('0x39')](_0x5697f1['query'],_0x2e118c[_0x5fd2('0x38')]),_0x2f2e0f);if(_0x5697f1[_0x5fd2('0x2f')][_0x5fd2('0x3a')]){_0x33a676[_0x5fd2('0x37')]=_['merge'](_0x33a676['where'],{'$or':_[_0x5fd2('0x28')](_0x2f2e0f,function(_0xbe7bf6){if(_0xbe7bf6[_0x5fd2('0x2c')]!==_0x5fd2('0x3b')){var _0x3bebc2={};_0x3bebc2[_0xbe7bf6[_0x5fd2('0x25')]]={'$like':'%'+_0x5697f1[_0x5fd2('0x2f')][_0x5fd2('0x3a')]+'%'};return _0x3bebc2;}})});}_0x33a676=_[_0x5fd2('0x3c')]({},_0x33a676,_0x5697f1[_0x5fd2('0x3d')]);var _0x30142d={'where':_0x33a676['where']};return db[_0x5fd2('0x29')][_0x5fd2('0x1b')](_0x30142d)[_0x5fd2('0x21')](function(_0x3c3264){_0x13284d[_0x5fd2('0x1b')]=_0x3c3264;if(_0x5697f1['query'][_0x5fd2('0x3e')]){_0x33a676[_0x5fd2('0x3f')]=[{'all':!![]}];}return db[_0x5fd2('0x29')]['findAll'](_0x33a676);})[_0x5fd2('0x21')](function(_0x23f639){_0x13284d[_0x5fd2('0x40')]=_0x23f639;return _0x13284d;})['then'](respondWithFilteredResult(_0x118ac1,_0x33a676))[_0x5fd2('0x41')](handleError(_0x118ac1,null));};exports[_0x5fd2('0x42')]=function(_0x1c5135,_0x48cb62){var _0xc4236c={'raw':!![],'where':{'id':_0x1c5135[_0x5fd2('0x43')]['id']}},_0x1a778d={};_0x1a778d[_0x5fd2('0x2e')]=_[_0x5fd2('0x30')](db['VoiceDialReport']['rawAttributes']);_0x1a778d['query']=_[_0x5fd2('0x30')](_0x1c5135['query']);_0x1a778d[_0x5fd2('0x38')]=_[_0x5fd2('0x31')](_0x1a778d['model'],_0x1a778d[_0x5fd2('0x2f')]);_0xc4236c['attributes']=_['intersection'](_0x1a778d[_0x5fd2('0x2e')],qs[_0x5fd2('0x33')](_0x1c5135[_0x5fd2('0x2f')]['fields']));_0xc4236c[_0x5fd2('0x32')]=_0xc4236c['attributes'][_0x5fd2('0x44')]?_0xc4236c['attributes']:_0x1a778d[_0x5fd2('0x2e')];if(_0x1c5135[_0x5fd2('0x2f')]['includeAll']){_0xc4236c['include']=[{'all':!![]}];}_0xc4236c=_[_0x5fd2('0x3c')]({},_0xc4236c,_0x1c5135['options']);return db[_0x5fd2('0x29')][_0x5fd2('0x45')](_0xc4236c)['then'](handleEntityNotFound(_0x48cb62,null))[_0x5fd2('0x21')](respondWithResult(_0x48cb62,null))[_0x5fd2('0x41')](handleError(_0x48cb62,null));};exports[_0x5fd2('0x46')]=function(_0x36e697,_0xfc5d7b){return db['VoiceDialReport'][_0x5fd2('0x46')](_0x36e697[_0x5fd2('0x47')],{})[_0x5fd2('0x21')](respondWithResult(_0xfc5d7b,0xc9))[_0x5fd2('0x41')](handleError(_0xfc5d7b,null));};exports['update']=function(_0x5e3d06,_0x45d754){if(_0x5e3d06[_0x5fd2('0x47')]['id']){delete _0x5e3d06[_0x5fd2('0x47')]['id'];}return db[_0x5fd2('0x29')][_0x5fd2('0x45')]({'where':{'id':_0x5e3d06[_0x5fd2('0x43')]['id']}})[_0x5fd2('0x21')](handleEntityNotFound(_0x45d754,null))[_0x5fd2('0x21')](saveUpdates(_0x5e3d06[_0x5fd2('0x47')],null))[_0x5fd2('0x21')](respondWithResult(_0x45d754,null))['catch'](handleError(_0x45d754,null));};exports[_0x5fd2('0x22')]=function(_0x489853,_0x510c9b){return db[_0x5fd2('0x29')][_0x5fd2('0x45')]({'where':{'id':_0x489853['params']['id']}})[_0x5fd2('0x21')](handleEntityNotFound(_0x510c9b,null))[_0x5fd2('0x21')](removeEntity(_0x510c9b,null))[_0x5fd2('0x41')](handleError(_0x510c9b,null));};exports[_0x5fd2('0x48')]=function(_0xaf0036,_0x57f026){return db[_0x5fd2('0x29')][_0x5fd2('0x48')]()[_0x5fd2('0x21')](respondWithResult(_0x57f026,null))['catch'](handleError(_0x57f026,null));};
\ No newline at end of file
+var _0x111d=['json','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','index','map','rawAttributes','type','model','keys','query','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','VoiceDialReport','include','findAll','rows','catch','params','intersection','length','includeAll','create','body','find','html-pdf','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0xa084e5,_0x587617){var _0x71a4c0=function(_0x424c81){while(--_0x424c81){_0xa084e5['push'](_0xa084e5['shift']());}};_0x71a4c0(++_0x587617);}(_0x111d,0xb7));var _0xd111=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0x111d[_0x28947d];return _0x12d2ee;};'use strict';var pdf=require(_0xd111('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xd111('0x1'));var zipdir=require(_0xd111('0x2'));var jsonpatch=require(_0xd111('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd111('0x4'));var Mustache=require('mustache');var util=require(_0xd111('0x5'));var path=require(_0xd111('0x6'));var sox=require(_0xd111('0x7'));var csv=require(_0xd111('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xd111('0x9'));var squel=require(_0xd111('0xa'));var crypto=require(_0xd111('0xb'));var jsforce=require(_0xd111('0xc'));var deskjs=require(_0xd111('0xd'));var toCsv=require(_0xd111('0x8'));var querystring=require(_0xd111('0xe'));var Papa=require('papaparse');var Redis=require(_0xd111('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd111('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd111('0x11'));var logger=require('../../config/logger')(_0xd111('0x12'));var utils=require('../../config/utils');var config=require(_0xd111('0x13'));var licenseUtil=require(_0xd111('0x14'));var db=require(_0xd111('0x15'))['db'];function respondWithStatusCode(_0x44053e,_0x4ac407){_0x4ac407=_0x4ac407||0xcc;return function(_0x373ee6){if(_0x373ee6){return _0x44053e[_0xd111('0x16')](_0x4ac407);}return _0x44053e[_0xd111('0x17')](_0x4ac407)['end']();};}function respondWithResult(_0x23ec15,_0x28dfbe){_0x28dfbe=_0x28dfbe||0xc8;return function(_0x3dd0b8){if(_0x3dd0b8){return _0x23ec15[_0xd111('0x17')](_0x28dfbe)[_0xd111('0x18')](_0x3dd0b8);}};}function respondWithFilteredResult(_0x143ea8,_0x5b2ef0){return function(_0x192967){if(_0x192967){var _0x4fdc99=_0x192967[_0xd111('0x19')],_0x463d9e=_0x5b2ef0[_0xd111('0x1a')],_0x15c685=_0x5b2ef0[_0xd111('0x1a')]+_0x5b2ef0[_0xd111('0x1b')],_0x41ecaf;if(_0x15c685>=_0x4fdc99){_0x15c685=_0x4fdc99;_0x41ecaf=0xc8;}else{_0x41ecaf=0xce;}_0x143ea8[_0xd111('0x17')](_0x41ecaf);return _0x143ea8[_0xd111('0x1c')](_0xd111('0x1d'),_0x463d9e+'-'+_0x15c685+'/'+_0x4fdc99)[_0xd111('0x18')](_0x192967);}return null;};}function patchUpdates(_0x286b96){return function(_0x5db5bb){try{jsonpatch[_0xd111('0x1e')](_0x5db5bb,_0x286b96,!![]);}catch(_0x45b132){return BPromise['reject'](_0x45b132);}return _0x5db5bb[_0xd111('0x1f')]();};}function saveUpdates(_0x55c431,_0x5c62af){return function(_0x36e6e0){if(_0x36e6e0){return _0x36e6e0[_0xd111('0x20')](_0x55c431)[_0xd111('0x21')](function(_0x22af85){return _0x22af85;});}return null;};}function removeEntity(_0xfc31cf,_0x321e2d){return function(_0x261f37){if(_0x261f37){return _0x261f37[_0xd111('0x22')]()['then'](function(){_0xfc31cf[_0xd111('0x17')](0xcc)[_0xd111('0x23')]();});}};}function handleEntityNotFound(_0x5c0b41,_0x68c10b){return function(_0x13eb78){if(!_0x13eb78){_0x5c0b41['sendStatus'](0x194);}return _0x13eb78;};}function handleError(_0x4ae8f9,_0x2386ff){_0x2386ff=_0x2386ff||0x1f4;return function(_0x4fda78){logger[_0xd111('0x24')](_0x4fda78[_0xd111('0x25')]);if(_0x4fda78[_0xd111('0x26')]){delete _0x4fda78[_0xd111('0x26')];}_0x4ae8f9[_0xd111('0x17')](_0x2386ff)['send'](_0x4fda78);};}exports[_0xd111('0x27')]=function(_0x14619d,_0x2f24ec){var _0x412f00={},_0x3c5884={},_0x385c07={'count':0x0,'rows':[]};var _0x4c8f84=_[_0xd111('0x28')](db['VoiceDialReport'][_0xd111('0x29')],function(_0x5364d0){return{'name':_0x5364d0['fieldName'],'type':_0x5364d0[_0xd111('0x2a')]['key']};});_0x3c5884[_0xd111('0x2b')]=_[_0xd111('0x28')](_0x4c8f84,_0xd111('0x26'));_0x3c5884['query']=_[_0xd111('0x2c')](_0x14619d[_0xd111('0x2d')]);_0x3c5884['filters']=_['intersection'](_0x3c5884[_0xd111('0x2b')],_0x3c5884[_0xd111('0x2d')]);_0x412f00[_0xd111('0x2e')]=_['intersection'](_0x3c5884['model'],qs[_0xd111('0x2f')](_0x14619d[_0xd111('0x2d')]['fields']));_0x412f00[_0xd111('0x2e')]=_0x412f00['attributes']['length']?_0x412f00['attributes']:_0x3c5884[_0xd111('0x2b')];if(!_0x14619d[_0xd111('0x2d')][_0xd111('0x30')]('nolimit')){_0x412f00[_0xd111('0x1b')]=qs['limit'](_0x14619d['query'][_0xd111('0x1b')]);_0x412f00[_0xd111('0x1a')]=qs[_0xd111('0x1a')](_0x14619d[_0xd111('0x2d')]['offset']);}_0x412f00[_0xd111('0x31')]=qs['sort'](_0x14619d[_0xd111('0x2d')][_0xd111('0x32')]);_0x412f00[_0xd111('0x33')]=qs[_0xd111('0x34')](_[_0xd111('0x35')](_0x14619d['query'],_0x3c5884[_0xd111('0x34')]),_0x4c8f84);if(_0x14619d[_0xd111('0x2d')][_0xd111('0x36')]){_0x412f00['where']=_[_0xd111('0x37')](_0x412f00[_0xd111('0x33')],{'$or':_['map'](_0x4c8f84,function(_0x437609){if(_0x437609['type']!==_0xd111('0x38')){var _0x15b72a={};_0x15b72a[_0x437609[_0xd111('0x26')]]={'$like':'%'+_0x14619d[_0xd111('0x2d')][_0xd111('0x36')]+'%'};return _0x15b72a;}})});}_0x412f00=_[_0xd111('0x37')]({},_0x412f00,_0x14619d['options']);var _0x901805={'where':_0x412f00[_0xd111('0x33')]};return db[_0xd111('0x39')][_0xd111('0x19')](_0x901805)['then'](function(_0x3b19ae){_0x385c07[_0xd111('0x19')]=_0x3b19ae;if(_0x14619d['query']['includeAll']){_0x412f00[_0xd111('0x3a')]=[{'all':!![]}];}return db['VoiceDialReport'][_0xd111('0x3b')](_0x412f00);})[_0xd111('0x21')](function(_0x709af1){_0x385c07[_0xd111('0x3c')]=_0x709af1;return _0x385c07;})['then'](respondWithFilteredResult(_0x2f24ec,_0x412f00))[_0xd111('0x3d')](handleError(_0x2f24ec,null));};exports['show']=function(_0x120336,_0x2fbef9){var _0x57ab98={'raw':!![],'where':{'id':_0x120336[_0xd111('0x3e')]['id']}},_0xe6cd89={};_0xe6cd89[_0xd111('0x2b')]=_[_0xd111('0x2c')](db['VoiceDialReport'][_0xd111('0x29')]);_0xe6cd89[_0xd111('0x2d')]=_[_0xd111('0x2c')](_0x120336[_0xd111('0x2d')]);_0xe6cd89[_0xd111('0x34')]=_[_0xd111('0x3f')](_0xe6cd89[_0xd111('0x2b')],_0xe6cd89[_0xd111('0x2d')]);_0x57ab98[_0xd111('0x2e')]=_[_0xd111('0x3f')](_0xe6cd89[_0xd111('0x2b')],qs[_0xd111('0x2f')](_0x120336[_0xd111('0x2d')][_0xd111('0x2f')]));_0x57ab98[_0xd111('0x2e')]=_0x57ab98[_0xd111('0x2e')][_0xd111('0x40')]?_0x57ab98['attributes']:_0xe6cd89[_0xd111('0x2b')];if(_0x120336[_0xd111('0x2d')][_0xd111('0x41')]){_0x57ab98[_0xd111('0x3a')]=[{'all':!![]}];}_0x57ab98=_[_0xd111('0x37')]({},_0x57ab98,_0x120336['options']);return db[_0xd111('0x39')]['find'](_0x57ab98)[_0xd111('0x21')](handleEntityNotFound(_0x2fbef9,null))[_0xd111('0x21')](respondWithResult(_0x2fbef9,null))[_0xd111('0x3d')](handleError(_0x2fbef9,null));};exports['create']=function(_0x3f778c,_0x51e2b4){return db[_0xd111('0x39')][_0xd111('0x42')](_0x3f778c['body'],{})[_0xd111('0x21')](respondWithResult(_0x51e2b4,0xc9))[_0xd111('0x3d')](handleError(_0x51e2b4,null));};exports[_0xd111('0x20')]=function(_0x205241,_0x506156){if(_0x205241[_0xd111('0x43')]['id']){delete _0x205241['body']['id'];}return db['VoiceDialReport'][_0xd111('0x44')]({'where':{'id':_0x205241[_0xd111('0x3e')]['id']}})[_0xd111('0x21')](handleEntityNotFound(_0x506156,null))[_0xd111('0x21')](saveUpdates(_0x205241[_0xd111('0x43')],null))[_0xd111('0x21')](respondWithResult(_0x506156,null))[_0xd111('0x3d')](handleError(_0x506156,null));};exports[_0xd111('0x22')]=function(_0x28cb2c,_0x4dbc00){return db[_0xd111('0x39')][_0xd111('0x44')]({'where':{'id':_0x28cb2c[_0xd111('0x3e')]['id']}})[_0xd111('0x21')](handleEntityNotFound(_0x4dbc00,null))[_0xd111('0x21')](removeEntity(_0x4dbc00,null))[_0xd111('0x3d')](handleError(_0x4dbc00,null));};exports['describe']=function(_0x28c1e8,_0x2a54e2){return db[_0xd111('0x39')]['describe']()[_0xd111('0x21')](respondWithResult(_0x2a54e2,null))[_0xd111('0x3d')](handleError(_0x2a54e2,null));};
\ No newline at end of file