Built motion from commit 9e1399f3.|2.5.37
[motion2.git] / server / api / intVtigerField / intVtigerField.controller.js
index 17a3300..83566c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','count','offset','limit','set','Content-Range','reject','save','update','then','end','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','show','create','body','find','catch','destroy','params','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x227bcd,_0x549472){var _0x585327=function(_0x5d7578){while(--_0x5d7578){_0x227bcd['push'](_0x227bcd['shift']());}};_0x585327(++_0x549472);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x1312a9,_0x5d3c70){_0x1312a9=_0x1312a9-0x0;var _0x5a0548=_0xc6ac[_0x1312a9];return _0x5a0548;};'use strict';var pdf=require(_0xcc6a('0x0'));var emlformat=require(_0xcc6a('0x1'));var rimraf=require(_0xcc6a('0x2'));var zipdir=require(_0xcc6a('0x3'));var jsonpatch=require(_0xcc6a('0x4'));var rp=require(_0xcc6a('0x5'));var moment=require(_0xcc6a('0x6'));var BPromise=require(_0xcc6a('0x7'));var Mustache=require(_0xcc6a('0x8'));var util=require(_0xcc6a('0x9'));var path=require(_0xcc6a('0xa'));var sox=require(_0xcc6a('0xb'));var csv=require(_0xcc6a('0xc'));var ejs=require(_0xcc6a('0xd'));var fs=require('fs');var _=require('lodash');var squel=require(_0xcc6a('0xe'));var crypto=require(_0xcc6a('0xf'));var jsforce=require(_0xcc6a('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xcc6a('0xc'));var querystring=require(_0xcc6a('0x11'));var Papa=require(_0xcc6a('0x12'));var Redis=require(_0xcc6a('0x13'));var authService=require(_0xcc6a('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xcc6a('0x15'));var hardwareService=require(_0xcc6a('0x16'));var logger=require(_0xcc6a('0x17'))('api');var utils=require(_0xcc6a('0x18'));var config=require(_0xcc6a('0x19'));var licenseUtil=require(_0xcc6a('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x59ce6d,_0xf0f6d5){_0xf0f6d5=_0xf0f6d5||0xcc;return function(_0x211444){if(_0x211444){return _0x59ce6d[_0xcc6a('0x1b')](_0xf0f6d5);}return _0x59ce6d['status'](_0xf0f6d5)['end']();};}function respondWithResult(_0x369dc1,_0xcb9e2e){_0xcb9e2e=_0xcb9e2e||0xc8;return function(_0x43710d){if(_0x43710d){return _0x369dc1[_0xcc6a('0x1c')](_0xcb9e2e)[_0xcc6a('0x1d')](_0x43710d);}};}function respondWithFilteredResult(_0x337ec5,_0x4133fa){return function(_0x403b18){if(_0x403b18){var _0x56ffb0=_0x403b18[_0xcc6a('0x1e')],_0x4e628f=_0x4133fa[_0xcc6a('0x1f')],_0x4d021a=_0x4133fa[_0xcc6a('0x1f')]+_0x4133fa[_0xcc6a('0x20')],_0x395a55;if(_0x4d021a>=_0x56ffb0){_0x4d021a=_0x56ffb0;_0x395a55=0xc8;}else{_0x395a55=0xce;}_0x337ec5[_0xcc6a('0x1c')](_0x395a55);return _0x337ec5[_0xcc6a('0x21')](_0xcc6a('0x22'),_0x4e628f+'-'+_0x4d021a+'/'+_0x56ffb0)[_0xcc6a('0x1d')](_0x403b18);}return null;};}function patchUpdates(_0x2a3994){return function(_0x1d20a3){try{jsonpatch['apply'](_0x1d20a3,_0x2a3994,!![]);}catch(_0xfec60f){return BPromise[_0xcc6a('0x23')](_0xfec60f);}return _0x1d20a3[_0xcc6a('0x24')]();};}function saveUpdates(_0x368a6e,_0x1495d8){return function(_0x30b8ed){if(_0x30b8ed){return _0x30b8ed[_0xcc6a('0x25')](_0x368a6e)[_0xcc6a('0x26')](function(_0x2254a8){return _0x2254a8;});}return null;};}function removeEntity(_0x19d32c,_0x329d17){return function(_0x845088){if(_0x845088){return _0x845088['destroy']()[_0xcc6a('0x26')](function(){_0x19d32c[_0xcc6a('0x1c')](0xcc)[_0xcc6a('0x27')]();});}};}function handleEntityNotFound(_0x581aae,_0x10016a){return function(_0x294486){if(!_0x294486){_0x581aae[_0xcc6a('0x1b')](0x194);}return _0x294486;};}function handleError(_0x3ed7ce,_0x432c23){_0x432c23=_0x432c23||0x1f4;return function(_0x5fc697){logger['error'](_0x5fc697[_0xcc6a('0x28')]);if(_0x5fc697[_0xcc6a('0x29')]){delete _0x5fc697[_0xcc6a('0x29')];}_0x3ed7ce['status'](_0x432c23)[_0xcc6a('0x2a')](_0x5fc697);};}exports[_0xcc6a('0x2b')]=function(_0x4da301,_0xb377de){var _0x8b1b2b={},_0x3233d1={},_0x473f88={'count':0x0,'rows':[]};var _0x5d7399=_[_0xcc6a('0x2c')](db[_0xcc6a('0x2d')][_0xcc6a('0x2e')],function(_0x4f176b){return{'name':_0x4f176b[_0xcc6a('0x2f')],'type':_0x4f176b['type']['key']};});_0x3233d1[_0xcc6a('0x30')]=_[_0xcc6a('0x2c')](_0x5d7399,_0xcc6a('0x29'));_0x3233d1[_0xcc6a('0x31')]=_[_0xcc6a('0x32')](_0x4da301[_0xcc6a('0x31')]);_0x3233d1['filters']=_[_0xcc6a('0x33')](_0x3233d1[_0xcc6a('0x30')],_0x3233d1[_0xcc6a('0x31')]);_0x8b1b2b[_0xcc6a('0x34')]=_[_0xcc6a('0x33')](_0x3233d1[_0xcc6a('0x30')],qs[_0xcc6a('0x35')](_0x4da301[_0xcc6a('0x31')]['fields']));_0x8b1b2b[_0xcc6a('0x34')]=_0x8b1b2b[_0xcc6a('0x34')][_0xcc6a('0x36')]?_0x8b1b2b[_0xcc6a('0x34')]:_0x3233d1[_0xcc6a('0x30')];if(!_0x4da301[_0xcc6a('0x31')][_0xcc6a('0x37')]('nolimit')){_0x8b1b2b[_0xcc6a('0x20')]=qs['limit'](_0x4da301['query']['limit']);_0x8b1b2b[_0xcc6a('0x1f')]=qs[_0xcc6a('0x1f')](_0x4da301[_0xcc6a('0x31')][_0xcc6a('0x1f')]);}_0x8b1b2b[_0xcc6a('0x38')]=qs['sort'](_0x4da301['query'][_0xcc6a('0x39')]);_0x8b1b2b[_0xcc6a('0x3a')]=qs[_0xcc6a('0x3b')](_['pick'](_0x4da301[_0xcc6a('0x31')],_0x3233d1[_0xcc6a('0x3b')]),_0x5d7399);if(_0x4da301[_0xcc6a('0x31')][_0xcc6a('0x3c')]){_0x8b1b2b[_0xcc6a('0x3a')]=_[_0xcc6a('0x3d')](_0x8b1b2b[_0xcc6a('0x3a')],{'$or':_[_0xcc6a('0x2c')](_0x5d7399,function(_0x2a1cd2){if(_0x2a1cd2[_0xcc6a('0x3e')]!==_0xcc6a('0x3f')){var _0x2c14ba={};_0x2c14ba[_0x2a1cd2[_0xcc6a('0x29')]]={'$like':'%'+_0x4da301[_0xcc6a('0x31')][_0xcc6a('0x3c')]+'%'};return _0x2c14ba;}})});}_0x8b1b2b=_[_0xcc6a('0x3d')]({},_0x8b1b2b,_0x4da301[_0xcc6a('0x40')]);var _0x386cbc={'where':_0x8b1b2b['where']};return db['VtigerField'][_0xcc6a('0x1e')](_0x386cbc)[_0xcc6a('0x26')](function(_0x16dde7){_0x473f88[_0xcc6a('0x1e')]=_0x16dde7;if(_0x4da301[_0xcc6a('0x31')][_0xcc6a('0x41')]){_0x8b1b2b[_0xcc6a('0x42')]=[{'all':!![]}];}return db[_0xcc6a('0x2d')]['findAll'](_0x8b1b2b);})['then'](function(_0x470e3b){_0x473f88['rows']=_0x470e3b;return _0x473f88;})['then'](respondWithFilteredResult(_0xb377de,_0x8b1b2b))['catch'](handleError(_0xb377de,null));};exports[_0xcc6a('0x43')]=function(_0x3eebca,_0xb42897){var _0x46e273={'raw':!![],'where':{'id':_0x3eebca['params']['id']}},_0xe8056f={};_0xe8056f[_0xcc6a('0x30')]=_[_0xcc6a('0x32')](db[_0xcc6a('0x2d')][_0xcc6a('0x2e')]);_0xe8056f[_0xcc6a('0x31')]=_[_0xcc6a('0x32')](_0x3eebca['query']);_0xe8056f[_0xcc6a('0x3b')]=_[_0xcc6a('0x33')](_0xe8056f[_0xcc6a('0x30')],_0xe8056f[_0xcc6a('0x31')]);_0x46e273['attributes']=_[_0xcc6a('0x33')](_0xe8056f['model'],qs[_0xcc6a('0x35')](_0x3eebca[_0xcc6a('0x31')][_0xcc6a('0x35')]));_0x46e273['attributes']=_0x46e273[_0xcc6a('0x34')][_0xcc6a('0x36')]?_0x46e273[_0xcc6a('0x34')]:_0xe8056f['model'];if(_0x3eebca['query'][_0xcc6a('0x41')]){_0x46e273[_0xcc6a('0x42')]=[{'all':!![]}];}_0x46e273=_[_0xcc6a('0x3d')]({},_0x46e273,_0x3eebca[_0xcc6a('0x40')]);return db[_0xcc6a('0x2d')]['find'](_0x46e273)[_0xcc6a('0x26')](handleEntityNotFound(_0xb42897,null))[_0xcc6a('0x26')](respondWithResult(_0xb42897,null))['catch'](handleError(_0xb42897,null));};exports[_0xcc6a('0x44')]=function(_0xa45d06,_0x42ffcc){return db[_0xcc6a('0x2d')][_0xcc6a('0x44')](_0xa45d06[_0xcc6a('0x45')],{})['then'](respondWithResult(_0x42ffcc,0xc9))['catch'](handleError(_0x42ffcc,null));};exports['update']=function(_0x254e83,_0x267e43){if(_0x254e83[_0xcc6a('0x45')]['id']){delete _0x254e83[_0xcc6a('0x45')]['id'];}return db['VtigerField'][_0xcc6a('0x46')]({'where':{'id':_0x254e83['params']['id']}})[_0xcc6a('0x26')](handleEntityNotFound(_0x267e43,null))[_0xcc6a('0x26')](saveUpdates(_0x254e83[_0xcc6a('0x45')],null))[_0xcc6a('0x26')](respondWithResult(_0x267e43,null))[_0xcc6a('0x47')](handleError(_0x267e43,null));};exports[_0xcc6a('0x48')]=function(_0x47b175,_0x1a3b82){return db[_0xcc6a('0x2d')][_0xcc6a('0x46')]({'where':{'id':_0x47b175[_0xcc6a('0x49')]['id']}})[_0xcc6a('0x26')](handleEntityNotFound(_0x1a3b82,null))[_0xcc6a('0x26')](removeEntity(_0x1a3b82,null))[_0xcc6a('0x47')](handleError(_0x1a3b82,null));};
\ No newline at end of file
+var _0x330b=['lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','offset','undefined','limit','count','status','json','apply','reject','save','update','then','end','error','stack','name','send','index','map','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','VtigerField','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x58b354,_0x24ca13){var _0x5502b6=function(_0x51ee3c){while(--_0x51ee3c){_0x58b354['push'](_0x58b354['shift']());}};_0x5502b6(++_0x24ca13);}(_0x330b,0x11b));var _0xb330=function(_0x11cd30,_0x58b742){_0x11cd30=_0x11cd30-0x0;var _0x1954c0=_0x330b[_0x11cd30];return _0x1954c0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb330('0x0'));var zipdir=require(_0xb330('0x1'));var jsonpatch=require(_0xb330('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb330('0x3'));var path=require(_0xb330('0x4'));var sox=require(_0xb330('0x5'));var csv=require(_0xb330('0x6'));var ejs=require(_0xb330('0x7'));var fs=require('fs');var fs_extra=require(_0xb330('0x8'));var _=require(_0xb330('0x9'));var squel=require(_0xb330('0xa'));var crypto=require('crypto');var jsforce=require(_0xb330('0xb'));var deskjs=require(_0xb330('0xc'));var toCsv=require(_0xb330('0x6'));var querystring=require(_0xb330('0xd'));var Papa=require(_0xb330('0xe'));var Redis=require(_0xb330('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb330('0x10'));var hardwareService=require(_0xb330('0x11'));var logger=require(_0xb330('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb330('0x13'));var db=require(_0xb330('0x14'))['db'];function respondWithStatusCode(_0x14c215,_0xe5498a){_0xe5498a=_0xe5498a||0xcc;return function(_0x545f8b){if(_0x545f8b){return _0x14c215[_0xb330('0x15')](_0xe5498a);}return _0x14c215['status'](_0xe5498a)['end']();};}function respondWithResult(_0x181b10,_0x189bed){_0x189bed=_0x189bed||0xc8;return function(_0x1277a2){if(_0x1277a2){return _0x181b10['status'](_0x189bed)['json'](_0x1277a2);}};}function respondWithFilteredResult(_0x1d70c5,_0x5e97bd){return function(_0x543883){if(_0x543883){var _0x297c9d=typeof _0x5e97bd[_0xb330('0x16')]===_0xb330('0x17')&&typeof _0x5e97bd[_0xb330('0x18')]===_0xb330('0x17');var _0x97c9f5=_0x543883[_0xb330('0x19')];var _0x5df5c6=_0x297c9d?0x0:_0x5e97bd['offset'];var _0x1f231c=_0x297c9d?_0x543883[_0xb330('0x19')]:_0x5e97bd[_0xb330('0x16')]+_0x5e97bd[_0xb330('0x18')];var _0x5e5acc;if(_0x1f231c>=_0x97c9f5){_0x1f231c=_0x97c9f5;_0x5e5acc=0xc8;}else{_0x5e5acc=0xce;}_0x1d70c5[_0xb330('0x1a')](_0x5e5acc);return _0x1d70c5['set']('Content-Range',_0x5df5c6+'-'+_0x1f231c+'/'+_0x97c9f5)[_0xb330('0x1b')](_0x543883);}return null;};}function patchUpdates(_0x3f4689){return function(_0x332e64){try{jsonpatch[_0xb330('0x1c')](_0x332e64,_0x3f4689,!![]);}catch(_0x3c54e0){return BPromise[_0xb330('0x1d')](_0x3c54e0);}return _0x332e64[_0xb330('0x1e')]();};}function saveUpdates(_0x430b1c,_0x3a01d9){return function(_0x5b2358){if(_0x5b2358){return _0x5b2358[_0xb330('0x1f')](_0x430b1c)[_0xb330('0x20')](function(_0x2b52f0){return _0x2b52f0;});}return null;};}function removeEntity(_0x811a26,_0xcf4513){return function(_0x23fd19){if(_0x23fd19){return _0x23fd19['destroy']()[_0xb330('0x20')](function(){_0x811a26[_0xb330('0x1a')](0xcc)[_0xb330('0x21')]();});}};}function handleEntityNotFound(_0x209063,_0x1ed44a){return function(_0x576284){if(!_0x576284){_0x209063['sendStatus'](0x194);}return _0x576284;};}function handleError(_0x1316cd,_0x4b1f2f){_0x4b1f2f=_0x4b1f2f||0x1f4;return function(_0xc31713){logger[_0xb330('0x22')](_0xc31713[_0xb330('0x23')]);if(_0xc31713[_0xb330('0x24')]){delete _0xc31713[_0xb330('0x24')];}_0x1316cd[_0xb330('0x1a')](_0x4b1f2f)[_0xb330('0x25')](_0xc31713);};}exports[_0xb330('0x26')]=function(_0x3a3023,_0x47683f){var _0x5bee41={},_0x586b8a={},_0x3cf271={'count':0x0,'rows':[]};var _0x34be0e=_[_0xb330('0x27')](db['VtigerField'][_0xb330('0x28')],function(_0x5a180e){return{'name':_0x5a180e[_0xb330('0x29')],'type':_0x5a180e['type']['key']};});_0x586b8a[_0xb330('0x2a')]=_[_0xb330('0x27')](_0x34be0e,_0xb330('0x24'));_0x586b8a[_0xb330('0x2b')]=_[_0xb330('0x2c')](_0x3a3023[_0xb330('0x2b')]);_0x586b8a[_0xb330('0x2d')]=_[_0xb330('0x2e')](_0x586b8a[_0xb330('0x2a')],_0x586b8a[_0xb330('0x2b')]);_0x5bee41[_0xb330('0x2f')]=_[_0xb330('0x2e')](_0x586b8a[_0xb330('0x2a')],qs[_0xb330('0x30')](_0x3a3023[_0xb330('0x2b')][_0xb330('0x30')]));_0x5bee41[_0xb330('0x2f')]=_0x5bee41[_0xb330('0x2f')][_0xb330('0x31')]?_0x5bee41[_0xb330('0x2f')]:_0x586b8a[_0xb330('0x2a')];if(!_0x3a3023[_0xb330('0x2b')][_0xb330('0x32')](_0xb330('0x33'))){_0x5bee41[_0xb330('0x18')]=qs[_0xb330('0x18')](_0x3a3023[_0xb330('0x2b')][_0xb330('0x18')]);_0x5bee41['offset']=qs[_0xb330('0x16')](_0x3a3023[_0xb330('0x2b')][_0xb330('0x16')]);}_0x5bee41[_0xb330('0x34')]=qs['sort'](_0x3a3023[_0xb330('0x2b')][_0xb330('0x35')]);_0x5bee41[_0xb330('0x36')]=qs[_0xb330('0x2d')](_[_0xb330('0x37')](_0x3a3023[_0xb330('0x2b')],_0x586b8a[_0xb330('0x2d')]),_0x34be0e);if(_0x3a3023[_0xb330('0x2b')][_0xb330('0x38')]){_0x5bee41[_0xb330('0x36')]=_[_0xb330('0x39')](_0x5bee41['where'],{'$or':_[_0xb330('0x27')](_0x34be0e,function(_0x103cb3){if(_0x103cb3[_0xb330('0x3a')]!==_0xb330('0x3b')){var _0x2a810d={};_0x2a810d[_0x103cb3['name']]={'$like':'%'+_0x3a3023[_0xb330('0x2b')]['filter']+'%'};return _0x2a810d;}})});}_0x5bee41=_['merge']({},_0x5bee41,_0x3a3023[_0xb330('0x3c')]);var _0x1eef97={'where':_0x5bee41[_0xb330('0x36')]};return db[_0xb330('0x3d')][_0xb330('0x19')](_0x1eef97)['then'](function(_0x47a926){_0x3cf271[_0xb330('0x19')]=_0x47a926;if(_0x3a3023[_0xb330('0x2b')][_0xb330('0x3e')]){_0x5bee41[_0xb330('0x3f')]=[{'all':!![]}];}return db[_0xb330('0x3d')][_0xb330('0x40')](_0x5bee41);})[_0xb330('0x20')](function(_0x5351e7){_0x3cf271[_0xb330('0x41')]=_0x5351e7;return _0x3cf271;})['then'](respondWithFilteredResult(_0x47683f,_0x5bee41))[_0xb330('0x42')](handleError(_0x47683f,null));};exports[_0xb330('0x43')]=function(_0x44de76,_0x535f77){var _0x53d319={'raw':!![],'where':{'id':_0x44de76[_0xb330('0x44')]['id']}},_0x251e45={};_0x251e45[_0xb330('0x2a')]=_[_0xb330('0x2c')](db[_0xb330('0x3d')][_0xb330('0x28')]);_0x251e45[_0xb330('0x2b')]=_[_0xb330('0x2c')](_0x44de76[_0xb330('0x2b')]);_0x251e45[_0xb330('0x2d')]=_['intersection'](_0x251e45[_0xb330('0x2a')],_0x251e45['query']);_0x53d319['attributes']=_[_0xb330('0x2e')](_0x251e45[_0xb330('0x2a')],qs[_0xb330('0x30')](_0x44de76[_0xb330('0x2b')][_0xb330('0x30')]));_0x53d319[_0xb330('0x2f')]=_0x53d319[_0xb330('0x2f')][_0xb330('0x31')]?_0x53d319[_0xb330('0x2f')]:_0x251e45[_0xb330('0x2a')];if(_0x44de76[_0xb330('0x2b')][_0xb330('0x3e')]){_0x53d319['include']=[{'all':!![]}];}_0x53d319=_[_0xb330('0x39')]({},_0x53d319,_0x44de76[_0xb330('0x3c')]);return db[_0xb330('0x3d')][_0xb330('0x45')](_0x53d319)['then'](handleEntityNotFound(_0x535f77,null))['then'](respondWithResult(_0x535f77,null))[_0xb330('0x42')](handleError(_0x535f77,null));};exports[_0xb330('0x46')]=function(_0x210412,_0x16025e){return db[_0xb330('0x3d')]['create'](_0x210412['body'],{})[_0xb330('0x20')](respondWithResult(_0x16025e,0xc9))['catch'](handleError(_0x16025e,null));};exports[_0xb330('0x1f')]=function(_0xcfae27,_0x528116){if(_0xcfae27[_0xb330('0x47')]['id']){delete _0xcfae27[_0xb330('0x47')]['id'];}return db[_0xb330('0x3d')]['find']({'where':{'id':_0xcfae27['params']['id']}})[_0xb330('0x20')](handleEntityNotFound(_0x528116,null))['then'](saveUpdates(_0xcfae27[_0xb330('0x47')],null))[_0xb330('0x20')](respondWithResult(_0x528116,null))[_0xb330('0x42')](handleError(_0x528116,null));};exports[_0xb330('0x48')]=function(_0x25c71a,_0xf8087b){return db[_0xb330('0x3d')][_0xb330('0x45')]({'where':{'id':_0x25c71a[_0xb330('0x44')]['id']}})[_0xb330('0x20')](handleEntityNotFound(_0xf8087b,null))['then'](removeEntity(_0xf8087b,null))['catch'](handleError(_0xf8087b,null));};
\ No newline at end of file