Built motion from commit (unavailable).|2.5.23
[motion2.git] / server / api / intSugarcrmField / intSugarcrmField.controller.js
index 2632260..d642070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee14=['includeAll','include','findAll','rows','catch','show','params','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','apply','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','SugarcrmField'];(function(_0x109f26,_0x36774b){var _0x18c148=function(_0x2825d2){while(--_0x2825d2){_0x109f26['push'](_0x109f26['shift']());}};_0x18c148(++_0x36774b);}(_0xee14,0x13a));var _0x4ee1=function(_0x16a5d7,_0x13fc21){_0x16a5d7=_0x16a5d7-0x0;var _0x94f294=_0xee14[_0x16a5d7];return _0x94f294;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x4ee1('0x0'));var zipdir=require(_0x4ee1('0x1'));var jsonpatch=require(_0x4ee1('0x2'));var rp=require(_0x4ee1('0x3'));var moment=require(_0x4ee1('0x4'));var BPromise=require(_0x4ee1('0x5'));var Mustache=require(_0x4ee1('0x6'));var util=require(_0x4ee1('0x7'));var path=require(_0x4ee1('0x8'));var sox=require('sox');var csv=require(_0x4ee1('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x4ee1('0xa'));var squel=require(_0x4ee1('0xb'));var crypto=require(_0x4ee1('0xc'));var jsforce=require(_0x4ee1('0xd'));var deskjs=require(_0x4ee1('0xe'));var toCsv=require(_0x4ee1('0x9'));var querystring=require('querystring');var Papa=require(_0x4ee1('0xf'));var Redis=require(_0x4ee1('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4ee1('0x11'));var as=require(_0x4ee1('0x12'));var hardwareService=require(_0x4ee1('0x13'));var logger=require(_0x4ee1('0x14'))('api');var utils=require(_0x4ee1('0x15'));var config=require(_0x4ee1('0x16'));var licenseUtil=require(_0x4ee1('0x17'));var db=require(_0x4ee1('0x18'))['db'];function respondWithStatusCode(_0x2f864e,_0x174427){_0x174427=_0x174427||0xcc;return function(_0x5616d6){if(_0x5616d6){return _0x2f864e[_0x4ee1('0x19')](_0x174427);}return _0x2f864e[_0x4ee1('0x1a')](_0x174427)[_0x4ee1('0x1b')]();};}function respondWithResult(_0x24a915,_0x46d2c2){_0x46d2c2=_0x46d2c2||0xc8;return function(_0x1c342a){if(_0x1c342a){return _0x24a915[_0x4ee1('0x1a')](_0x46d2c2)[_0x4ee1('0x1c')](_0x1c342a);}};}function respondWithFilteredResult(_0xb7eafd,_0x4e3490){return function(_0x2f9194){if(_0x2f9194){var _0x38008f=_0x2f9194[_0x4ee1('0x1d')],_0x34651b=_0x4e3490[_0x4ee1('0x1e')],_0x1b1e0e=_0x4e3490[_0x4ee1('0x1e')]+_0x4e3490[_0x4ee1('0x1f')],_0x123c5e;if(_0x1b1e0e>=_0x38008f){_0x1b1e0e=_0x38008f;_0x123c5e=0xc8;}else{_0x123c5e=0xce;}_0xb7eafd[_0x4ee1('0x1a')](_0x123c5e);return _0xb7eafd[_0x4ee1('0x20')]('Content-Range',_0x34651b+'-'+_0x1b1e0e+'/'+_0x38008f)[_0x4ee1('0x1c')](_0x2f9194);}return null;};}function patchUpdates(_0x3db827){return function(_0x173388){try{jsonpatch[_0x4ee1('0x21')](_0x173388,_0x3db827,!![]);}catch(_0x43f9a2){return BPromise[_0x4ee1('0x22')](_0x43f9a2);}return _0x173388['save']();};}function saveUpdates(_0x8a631f,_0x333e96){return function(_0x46611a){if(_0x46611a){return _0x46611a[_0x4ee1('0x23')](_0x8a631f)[_0x4ee1('0x24')](function(_0x224b54){return _0x224b54;});}return null;};}function removeEntity(_0x328f21,_0x40fd98){return function(_0x1dc1a8){if(_0x1dc1a8){return _0x1dc1a8[_0x4ee1('0x25')]()['then'](function(){_0x328f21['status'](0xcc)[_0x4ee1('0x1b')]();});}};}function handleEntityNotFound(_0x459e2e,_0xaf87e7){return function(_0x3bc985){if(!_0x3bc985){_0x459e2e[_0x4ee1('0x19')](0x194);}return _0x3bc985;};}function handleError(_0x28efdc,_0x57d45d){_0x57d45d=_0x57d45d||0x1f4;return function(_0x5cc0b5){logger[_0x4ee1('0x26')](_0x5cc0b5[_0x4ee1('0x27')]);if(_0x5cc0b5['name']){delete _0x5cc0b5[_0x4ee1('0x28')];}_0x28efdc[_0x4ee1('0x1a')](_0x57d45d)[_0x4ee1('0x29')](_0x5cc0b5);};}exports[_0x4ee1('0x2a')]=function(_0x2d699c,_0x3c7b2a){var _0x45bd0d={},_0x56c4d3={},_0x1f7b74={'count':0x0,'rows':[]};var _0x59029c=_[_0x4ee1('0x2b')](db['SugarcrmField'][_0x4ee1('0x2c')],function(_0x1d91be){return{'name':_0x1d91be[_0x4ee1('0x2d')],'type':_0x1d91be[_0x4ee1('0x2e')][_0x4ee1('0x2f')]};});_0x56c4d3['model']=_[_0x4ee1('0x2b')](_0x59029c,'name');_0x56c4d3[_0x4ee1('0x30')]=_[_0x4ee1('0x31')](_0x2d699c[_0x4ee1('0x30')]);_0x56c4d3[_0x4ee1('0x32')]=_[_0x4ee1('0x33')](_0x56c4d3['model'],_0x56c4d3[_0x4ee1('0x30')]);_0x45bd0d[_0x4ee1('0x34')]=_[_0x4ee1('0x33')](_0x56c4d3[_0x4ee1('0x35')],qs[_0x4ee1('0x36')](_0x2d699c[_0x4ee1('0x30')]['fields']));_0x45bd0d['attributes']=_0x45bd0d[_0x4ee1('0x34')][_0x4ee1('0x37')]?_0x45bd0d[_0x4ee1('0x34')]:_0x56c4d3['model'];if(!_0x2d699c[_0x4ee1('0x30')][_0x4ee1('0x38')](_0x4ee1('0x39'))){_0x45bd0d[_0x4ee1('0x1f')]=qs[_0x4ee1('0x1f')](_0x2d699c[_0x4ee1('0x30')][_0x4ee1('0x1f')]);_0x45bd0d[_0x4ee1('0x1e')]=qs[_0x4ee1('0x1e')](_0x2d699c[_0x4ee1('0x30')][_0x4ee1('0x1e')]);}_0x45bd0d[_0x4ee1('0x3a')]=qs[_0x4ee1('0x3b')](_0x2d699c['query'][_0x4ee1('0x3b')]);_0x45bd0d[_0x4ee1('0x3c')]=qs[_0x4ee1('0x32')](_['pick'](_0x2d699c['query'],_0x56c4d3[_0x4ee1('0x32')]),_0x59029c);if(_0x2d699c[_0x4ee1('0x30')][_0x4ee1('0x3d')]){_0x45bd0d[_0x4ee1('0x3c')]=_['merge'](_0x45bd0d[_0x4ee1('0x3c')],{'$or':_[_0x4ee1('0x2b')](_0x59029c,function(_0x11721a){if(_0x11721a[_0x4ee1('0x2e')]!==_0x4ee1('0x3e')){var _0x2445c2={};_0x2445c2[_0x11721a[_0x4ee1('0x28')]]={'$like':'%'+_0x2d699c[_0x4ee1('0x30')]['filter']+'%'};return _0x2445c2;}})});}_0x45bd0d=_[_0x4ee1('0x3f')]({},_0x45bd0d,_0x2d699c[_0x4ee1('0x40')]);var _0x345003={'where':_0x45bd0d[_0x4ee1('0x3c')]};return db[_0x4ee1('0x41')][_0x4ee1('0x1d')](_0x345003)['then'](function(_0x3e2ca7){_0x1f7b74[_0x4ee1('0x1d')]=_0x3e2ca7;if(_0x2d699c[_0x4ee1('0x30')][_0x4ee1('0x42')]){_0x45bd0d[_0x4ee1('0x43')]=[{'all':!![]}];}return db[_0x4ee1('0x41')][_0x4ee1('0x44')](_0x45bd0d);})[_0x4ee1('0x24')](function(_0x23bb5f){_0x1f7b74[_0x4ee1('0x45')]=_0x23bb5f;return _0x1f7b74;})[_0x4ee1('0x24')](respondWithFilteredResult(_0x3c7b2a,_0x45bd0d))[_0x4ee1('0x46')](handleError(_0x3c7b2a,null));};exports[_0x4ee1('0x47')]=function(_0x51fd40,_0x3b3bed){var _0x40a3e3={'raw':!![],'where':{'id':_0x51fd40[_0x4ee1('0x48')]['id']}},_0x5ee7b4={};_0x5ee7b4['model']=_[_0x4ee1('0x31')](db['SugarcrmField'][_0x4ee1('0x2c')]);_0x5ee7b4[_0x4ee1('0x30')]=_['keys'](_0x51fd40[_0x4ee1('0x30')]);_0x5ee7b4[_0x4ee1('0x32')]=_[_0x4ee1('0x33')](_0x5ee7b4[_0x4ee1('0x35')],_0x5ee7b4['query']);_0x40a3e3[_0x4ee1('0x34')]=_[_0x4ee1('0x33')](_0x5ee7b4[_0x4ee1('0x35')],qs['fields'](_0x51fd40['query'][_0x4ee1('0x36')]));_0x40a3e3[_0x4ee1('0x34')]=_0x40a3e3[_0x4ee1('0x34')][_0x4ee1('0x37')]?_0x40a3e3[_0x4ee1('0x34')]:_0x5ee7b4['model'];if(_0x51fd40['query'][_0x4ee1('0x42')]){_0x40a3e3[_0x4ee1('0x43')]=[{'all':!![]}];}_0x40a3e3=_[_0x4ee1('0x3f')]({},_0x40a3e3,_0x51fd40[_0x4ee1('0x40')]);return db['SugarcrmField'][_0x4ee1('0x49')](_0x40a3e3)[_0x4ee1('0x24')](handleEntityNotFound(_0x3b3bed,null))['then'](respondWithResult(_0x3b3bed,null))[_0x4ee1('0x46')](handleError(_0x3b3bed,null));};exports[_0x4ee1('0x4a')]=function(_0x21edeb,_0x28e7b8){return db[_0x4ee1('0x41')][_0x4ee1('0x4a')](_0x21edeb[_0x4ee1('0x4b')],{})[_0x4ee1('0x24')](respondWithResult(_0x28e7b8,0xc9))[_0x4ee1('0x46')](handleError(_0x28e7b8,null));};exports['update']=function(_0x49b667,_0x1a972b){if(_0x49b667[_0x4ee1('0x4b')]['id']){delete _0x49b667[_0x4ee1('0x4b')]['id'];}return db[_0x4ee1('0x41')]['find']({'where':{'id':_0x49b667[_0x4ee1('0x48')]['id']}})[_0x4ee1('0x24')](handleEntityNotFound(_0x1a972b,null))[_0x4ee1('0x24')](saveUpdates(_0x49b667[_0x4ee1('0x4b')],null))[_0x4ee1('0x24')](respondWithResult(_0x1a972b,null))['catch'](handleError(_0x1a972b,null));};exports[_0x4ee1('0x25')]=function(_0x4ae560,_0x37c282){return db['SugarcrmField'][_0x4ee1('0x49')]({'where':{'id':_0x4ae560['params']['id']}})[_0x4ee1('0x24')](handleEntityNotFound(_0x37c282,null))['then'](removeEntity(_0x37c282,null))[_0x4ee1('0x46')](handleError(_0x37c282,null));};
\ No newline at end of file
+var _0x3435=['json','count','offset','limit','set','apply','reject','save','update','then','destroy','error','name','send','SugarcrmField','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','filters','find','create','body','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status'];(function(_0x9510f5,_0x3a0263){var _0x24b8d9=function(_0x33366b){while(--_0x33366b){_0x9510f5['push'](_0x9510f5['shift']());}};_0x24b8d9(++_0x3a0263);}(_0x3435,0xfa));var _0x5343=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x3435[_0xaa1b3e];return _0x454d7d;};'use strict';var pdf=require(_0x5343('0x0'));var emlformat=require(_0x5343('0x1'));var rimraf=require(_0x5343('0x2'));var zipdir=require(_0x5343('0x3'));var jsonpatch=require(_0x5343('0x4'));var rp=require(_0x5343('0x5'));var moment=require('moment');var BPromise=require(_0x5343('0x6'));var Mustache=require(_0x5343('0x7'));var util=require('util');var path=require('path');var sox=require(_0x5343('0x8'));var csv=require(_0x5343('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x5343('0xa'));var crypto=require(_0x5343('0xb'));var jsforce=require(_0x5343('0xc'));var deskjs=require(_0x5343('0xd'));var toCsv=require(_0x5343('0x9'));var querystring=require('querystring');var Papa=require(_0x5343('0xe'));var Redis=require('ioredis');var authService=require(_0x5343('0xf'));var qs=require(_0x5343('0x10'));var as=require(_0x5343('0x11'));var hardwareService=require(_0x5343('0x12'));var logger=require(_0x5343('0x13'))('api');var utils=require(_0x5343('0x14'));var config=require(_0x5343('0x15'));var licenseUtil=require(_0x5343('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ddeb7,_0x5f473f){_0x5f473f=_0x5f473f||0xcc;return function(_0x82074d){if(_0x82074d){return _0x2ddeb7[_0x5343('0x17')](_0x5f473f);}return _0x2ddeb7['status'](_0x5f473f)[_0x5343('0x18')]();};}function respondWithResult(_0x4cdfae,_0x13066f){_0x13066f=_0x13066f||0xc8;return function(_0x46c3d7){if(_0x46c3d7){return _0x4cdfae[_0x5343('0x19')](_0x13066f)[_0x5343('0x1a')](_0x46c3d7);}};}function respondWithFilteredResult(_0x4dbff1,_0x446e90){return function(_0x588a96){if(_0x588a96){var _0x1df724=_0x588a96[_0x5343('0x1b')],_0x3f27fb=_0x446e90[_0x5343('0x1c')],_0x45cade=_0x446e90['offset']+_0x446e90[_0x5343('0x1d')],_0x2913e8;if(_0x45cade>=_0x1df724){_0x45cade=_0x1df724;_0x2913e8=0xc8;}else{_0x2913e8=0xce;}_0x4dbff1[_0x5343('0x19')](_0x2913e8);return _0x4dbff1[_0x5343('0x1e')]('Content-Range',_0x3f27fb+'-'+_0x45cade+'/'+_0x1df724)[_0x5343('0x1a')](_0x588a96);}return null;};}function patchUpdates(_0x399eec){return function(_0x376c35){try{jsonpatch[_0x5343('0x1f')](_0x376c35,_0x399eec,!![]);}catch(_0x35e68c){return BPromise[_0x5343('0x20')](_0x35e68c);}return _0x376c35[_0x5343('0x21')]();};}function saveUpdates(_0x40ba38,_0x35d41d){return function(_0x4796ae){if(_0x4796ae){return _0x4796ae[_0x5343('0x22')](_0x40ba38)[_0x5343('0x23')](function(_0x5c2d6f){return _0x5c2d6f;});}return null;};}function removeEntity(_0x42f92d,_0xd95a5b){return function(_0x4e7c0f){if(_0x4e7c0f){return _0x4e7c0f[_0x5343('0x24')]()[_0x5343('0x23')](function(){_0x42f92d[_0x5343('0x19')](0xcc)[_0x5343('0x18')]();});}};}function handleEntityNotFound(_0x290ce8,_0x486597){return function(_0x3822f1){if(!_0x3822f1){_0x290ce8[_0x5343('0x17')](0x194);}return _0x3822f1;};}function handleError(_0x584034,_0x3072ad){_0x3072ad=_0x3072ad||0x1f4;return function(_0x96bbf6){logger[_0x5343('0x25')](_0x96bbf6['stack']);if(_0x96bbf6['name']){delete _0x96bbf6[_0x5343('0x26')];}_0x584034['status'](_0x3072ad)[_0x5343('0x27')](_0x96bbf6);};}exports['index']=function(_0x1bf35f,_0x55ab94){var _0x50c584={},_0xd6c267={},_0x4cb858={'count':0x0,'rows':[]};var _0x551bf4=_['map'](db[_0x5343('0x28')]['rawAttributes'],function(_0x2ed8c9){return{'name':_0x2ed8c9['fieldName'],'type':_0x2ed8c9['type'][_0x5343('0x29')]};});_0xd6c267['model']=_['map'](_0x551bf4,_0x5343('0x26'));_0xd6c267[_0x5343('0x2a')]=_[_0x5343('0x2b')](_0x1bf35f[_0x5343('0x2a')]);_0xd6c267['filters']=_['intersection'](_0xd6c267[_0x5343('0x2c')],_0xd6c267[_0x5343('0x2a')]);_0x50c584[_0x5343('0x2d')]=_[_0x5343('0x2e')](_0xd6c267[_0x5343('0x2c')],qs[_0x5343('0x2f')](_0x1bf35f[_0x5343('0x2a')][_0x5343('0x2f')]));_0x50c584[_0x5343('0x2d')]=_0x50c584[_0x5343('0x2d')][_0x5343('0x30')]?_0x50c584[_0x5343('0x2d')]:_0xd6c267['model'];if(!_0x1bf35f['query'][_0x5343('0x31')](_0x5343('0x32'))){_0x50c584['limit']=qs[_0x5343('0x1d')](_0x1bf35f['query'][_0x5343('0x1d')]);_0x50c584[_0x5343('0x1c')]=qs[_0x5343('0x1c')](_0x1bf35f[_0x5343('0x2a')]['offset']);}_0x50c584['order']=qs[_0x5343('0x33')](_0x1bf35f['query'][_0x5343('0x33')]);_0x50c584[_0x5343('0x34')]=qs['filters'](_[_0x5343('0x35')](_0x1bf35f['query'],_0xd6c267['filters']),_0x551bf4);if(_0x1bf35f[_0x5343('0x2a')][_0x5343('0x36')]){_0x50c584[_0x5343('0x34')]=_[_0x5343('0x37')](_0x50c584['where'],{'$or':_['map'](_0x551bf4,function(_0x5a0663){if(_0x5a0663['type']!==_0x5343('0x38')){var _0xc195c1={};_0xc195c1[_0x5a0663[_0x5343('0x26')]]={'$like':'%'+_0x1bf35f[_0x5343('0x2a')][_0x5343('0x36')]+'%'};return _0xc195c1;}})});}_0x50c584=_[_0x5343('0x37')]({},_0x50c584,_0x1bf35f[_0x5343('0x39')]);var _0x4d2951={'where':_0x50c584[_0x5343('0x34')]};return db['SugarcrmField'][_0x5343('0x1b')](_0x4d2951)[_0x5343('0x23')](function(_0x35511b){_0x4cb858[_0x5343('0x1b')]=_0x35511b;if(_0x1bf35f[_0x5343('0x2a')][_0x5343('0x3a')]){_0x50c584[_0x5343('0x3b')]=[{'all':!![]}];}return db['SugarcrmField'][_0x5343('0x3c')](_0x50c584);})['then'](function(_0x28c274){_0x4cb858[_0x5343('0x3d')]=_0x28c274;return _0x4cb858;})[_0x5343('0x23')](respondWithFilteredResult(_0x55ab94,_0x50c584))[_0x5343('0x3e')](handleError(_0x55ab94,null));};exports[_0x5343('0x3f')]=function(_0xfed8aa,_0x2c75bd){var _0x4fcbd8={'raw':!![],'where':{'id':_0xfed8aa[_0x5343('0x40')]['id']}},_0x22ef23={};_0x22ef23['model']=_[_0x5343('0x2b')](db[_0x5343('0x28')]['rawAttributes']);_0x22ef23['query']=_[_0x5343('0x2b')](_0xfed8aa[_0x5343('0x2a')]);_0x22ef23[_0x5343('0x41')]=_['intersection'](_0x22ef23[_0x5343('0x2c')],_0x22ef23[_0x5343('0x2a')]);_0x4fcbd8[_0x5343('0x2d')]=_[_0x5343('0x2e')](_0x22ef23[_0x5343('0x2c')],qs[_0x5343('0x2f')](_0xfed8aa[_0x5343('0x2a')]['fields']));_0x4fcbd8[_0x5343('0x2d')]=_0x4fcbd8[_0x5343('0x2d')][_0x5343('0x30')]?_0x4fcbd8[_0x5343('0x2d')]:_0x22ef23[_0x5343('0x2c')];if(_0xfed8aa[_0x5343('0x2a')][_0x5343('0x3a')]){_0x4fcbd8[_0x5343('0x3b')]=[{'all':!![]}];}_0x4fcbd8=_[_0x5343('0x37')]({},_0x4fcbd8,_0xfed8aa[_0x5343('0x39')]);return db[_0x5343('0x28')][_0x5343('0x42')](_0x4fcbd8)[_0x5343('0x23')](handleEntityNotFound(_0x2c75bd,null))[_0x5343('0x23')](respondWithResult(_0x2c75bd,null))[_0x5343('0x3e')](handleError(_0x2c75bd,null));};exports['create']=function(_0x2595a1,_0x29addd){return db['SugarcrmField'][_0x5343('0x43')](_0x2595a1[_0x5343('0x44')],{})[_0x5343('0x23')](respondWithResult(_0x29addd,0xc9))[_0x5343('0x3e')](handleError(_0x29addd,null));};exports[_0x5343('0x22')]=function(_0x5bf69c,_0x2f3b5b){if(_0x5bf69c['body']['id']){delete _0x5bf69c['body']['id'];}return db[_0x5343('0x28')][_0x5343('0x42')]({'where':{'id':_0x5bf69c[_0x5343('0x40')]['id']}})[_0x5343('0x23')](handleEntityNotFound(_0x2f3b5b,null))['then'](saveUpdates(_0x5bf69c[_0x5343('0x44')],null))[_0x5343('0x23')](respondWithResult(_0x2f3b5b,null))[_0x5343('0x3e')](handleError(_0x2f3b5b,null));};exports[_0x5343('0x24')]=function(_0xad241,_0x43a792){return db[_0x5343('0x28')][_0x5343('0x42')]({'where':{'id':_0xad241[_0x5343('0x40')]['id']}})[_0x5343('0x23')](handleEntityNotFound(_0x43a792,null))['then'](removeEntity(_0x43a792,null))[_0x5343('0x3e')](handleError(_0x43a792,null));};
\ No newline at end of file